fix host msc get maxlun not using aligned section memory
This commit is contained in:
parent
1f95a417f2
commit
18646179d0
|
@ -421,8 +421,7 @@ bool msch_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *de
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool msch_set_config(uint8_t dev_addr, uint8_t itf_num)
|
bool msch_set_config(uint8_t dev_addr, uint8_t itf_num) {
|
||||||
{
|
|
||||||
msch_interface_t* p_msc = get_itf(dev_addr);
|
msch_interface_t* p_msc = get_itf(dev_addr);
|
||||||
TU_ASSERT(p_msc->itf_num == itf_num);
|
TU_ASSERT(p_msc->itf_num == itf_num);
|
||||||
|
|
||||||
|
@ -430,10 +429,8 @@ bool msch_set_config(uint8_t dev_addr, uint8_t itf_num)
|
||||||
|
|
||||||
//------------- Get Max Lun -------------//
|
//------------- Get Max Lun -------------//
|
||||||
TU_LOG_DRV("MSC Get Max Lun\r\n");
|
TU_LOG_DRV("MSC Get Max Lun\r\n");
|
||||||
tusb_control_request_t const request =
|
tusb_control_request_t const request = {
|
||||||
{
|
.bmRequestType_bit = {
|
||||||
.bmRequestType_bit =
|
|
||||||
{
|
|
||||||
.recipient = TUSB_REQ_RCPT_INTERFACE,
|
.recipient = TUSB_REQ_RCPT_INTERFACE,
|
||||||
.type = TUSB_REQ_TYPE_CLASS,
|
.type = TUSB_REQ_TYPE_CLASS,
|
||||||
.direction = TUSB_DIR_IN
|
.direction = TUSB_DIR_IN
|
||||||
|
@ -444,12 +441,11 @@ bool msch_set_config(uint8_t dev_addr, uint8_t itf_num)
|
||||||
.wLength = 1
|
.wLength = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
tuh_xfer_t xfer =
|
tuh_xfer_t xfer = {
|
||||||
{
|
|
||||||
.daddr = dev_addr,
|
.daddr = dev_addr,
|
||||||
.ep_addr = 0,
|
.ep_addr = 0,
|
||||||
.setup = &request,
|
.setup = &request,
|
||||||
.buffer = &p_msc->max_lun,
|
.buffer = _msch_buffer,
|
||||||
.complete_cb = config_get_maxlun_complete,
|
.complete_cb = config_get_maxlun_complete,
|
||||||
.user_data = 0
|
.user_data = 0
|
||||||
};
|
};
|
||||||
|
@ -467,6 +463,8 @@ static void config_get_maxlun_complete (tuh_xfer_t* xfer)
|
||||||
p_msc->max_lun = (XFER_RESULT_SUCCESS == xfer->result) ? _msch_buffer[0] : 0;
|
p_msc->max_lun = (XFER_RESULT_SUCCESS == xfer->result) ? _msch_buffer[0] : 0;
|
||||||
p_msc->max_lun++; // MAX LUN is minus 1 by specs
|
p_msc->max_lun++; // MAX LUN is minus 1 by specs
|
||||||
|
|
||||||
|
TU_LOG_DRV(" Max LUN = %u\r\n", p_msc->max_lun);
|
||||||
|
|
||||||
// TODO multiple LUN support
|
// TODO multiple LUN support
|
||||||
TU_LOG_DRV("SCSI Test Unit Ready\r\n");
|
TU_LOG_DRV("SCSI Test Unit Ready\r\n");
|
||||||
uint8_t const lun = 0;
|
uint8_t const lun = 0;
|
||||||
|
|
Loading…
Reference in New Issue