sdPoll();\r
#endif\r
\r
+ // TODO test if USB transfer is in progress\r
if (unlikely(scsiDev.phase == BUS_FREE))\r
{\r
if (unlikely(s2s_elapsedTime_ms(lastSDPoll) > 200))\r
uint32_t s2s_diffTime_ms(uint32_t start, uint32_t end);
uint32_t s2s_elapsedTime_ms(uint32_t since);
+#ifdef STM32F2xx
#define s2s_cpu_freq 108000000LL
+#endif
+#ifdef STM32F4xx
+#define s2s_cpu_freq 180000000LL
+#endif
+
#define s2s_delay_ms(delay) s2s_delay_clocks((delay) * (s2s_cpu_freq / 1000))
#define s2s_delay_us(delay) s2s_delay_clocks((delay) * (s2s_cpu_freq / 1000000))
void s2s_delay_clocks(uint32_t delay);
return -1;
}
- hmsc->scsi_blk_addr = (params[2] << 24) | \
- (params[3] << 16) | \
- (params[4] << 8) | \
- params[5];
+ hmsc->scsi_blk_addr = ((uint32_t)params[2] << 24) | \
+ ((uint32_t)params[3] << 16) | \
+ ((uint32_t)params[4] << 8) | \
+ (uint32_t)params[5];
- hmsc->scsi_blk_len = (params[7] << 8) | \
- params[8];
+ hmsc->scsi_blk_len = ((uint32_t)params[7] << 8) | \
+ (uint32_t)params[8];
}
- hmsc->scsi_blk_addr = (params[2] << 24) | \
- (params[3] << 16) | \
- (params[4] << 8) | \
- params[5];
- hmsc->scsi_blk_len = (params[7] << 8) | \
- params[8];
+ hmsc->scsi_blk_addr = ((uint32_t)params[2] << 24) | \
+ ((uint32_t)params[3] << 16) | \
+ ((uint32_t)params[4] << 8) | \
+ (uint32_t)params[5];
+ hmsc->scsi_blk_len = ((uint32_t)params[7] << 8) | \
+ (uint32_t)params[8];
/* check if LBA address is in the right range */
if(SCSI_CheckAddressRange(pdev,