Lines Matching refs:msc_class
42 static void usbh_msc_class_free(struct usbh_msc *msc_class) in usbh_msc_class_free() argument
44 uint8_t devno = msc_class->sdchar - 'a'; in usbh_msc_class_free()
49 memset(msc_class, 0, sizeof(struct usbh_msc)); in usbh_msc_class_free()
52 static int usbh_msc_get_maxlun(struct usbh_msc *msc_class, uint8_t *buffer) in usbh_msc_get_maxlun() argument
56 if (!msc_class || !msc_class->hport) { in usbh_msc_get_maxlun()
59 setup = msc_class->hport->setup; in usbh_msc_get_maxlun()
64 setup->wIndex = msc_class->intf; in usbh_msc_get_maxlun()
67 return usbh_control_transfer(msc_class->hport, setup, buffer); in usbh_msc_get_maxlun()
102 static inline int usbh_msc_bulk_in_transfer(struct usbh_msc *msc_class, uint8_t *buffer, uint32_t b… in usbh_msc_bulk_in_transfer() argument
105 struct usbh_urb *urb = &msc_class->bulkin_urb; in usbh_msc_bulk_in_transfer()
107 … usbh_bulk_urb_fill(urb, msc_class->hport, msc_class->bulkin, buffer, buflen, timeout, NULL, NULL); in usbh_msc_bulk_in_transfer()
115 static inline int usbh_msc_bulk_out_transfer(struct usbh_msc *msc_class, uint8_t *buffer, uint32_t … in usbh_msc_bulk_out_transfer() argument
118 struct usbh_urb *urb = &msc_class->bulkout_urb; in usbh_msc_bulk_out_transfer()
120 …usbh_bulk_urb_fill(urb, msc_class->hport, msc_class->bulkout, buffer, buflen, timeout, NULL, NULL); in usbh_msc_bulk_out_transfer()
128 static int usbh_bulk_cbw_csw_xfer(struct usbh_msc *msc_class, struct CBW *cbw, struct CSW *csw, uin… in usbh_bulk_cbw_csw_xfer() argument
135 nbytes = usbh_msc_bulk_out_transfer(msc_class, (uint8_t *)cbw, USB_SIZEOF_MSC_CBW, timeout); in usbh_bulk_cbw_csw_xfer()
143 nbytes = usbh_msc_bulk_out_transfer(msc_class, buffer, cbw->dDataLength, timeout); in usbh_bulk_cbw_csw_xfer()
145 nbytes = usbh_msc_bulk_in_transfer(msc_class, buffer, cbw->dDataLength, timeout); in usbh_bulk_cbw_csw_xfer()
148 msc_class->blocknum = GET_BE32(&buffer[0]) + 1; in usbh_bulk_cbw_csw_xfer()
149 msc_class->blocksize = GET_BE32(&buffer[4]); in usbh_bulk_cbw_csw_xfer()
152 nbytes = usbh_msc_bulk_in_transfer(msc_class, buffer, cbw->dDataLength, timeout); in usbh_bulk_cbw_csw_xfer()
163 nbytes = usbh_msc_bulk_in_transfer(msc_class, (uint8_t *)csw, USB_SIZEOF_MSC_CSW, timeout); in usbh_bulk_cbw_csw_xfer()
185 static inline int usbh_msc_scsi_testunitready(struct usbh_msc *msc_class) in usbh_msc_scsi_testunitready() argument
190 cbw = (struct CBW *)g_msc_cbw_csw[msc_class->sdchar - 'a']; in usbh_msc_scsi_testunitready()
197 …return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_cbw_csw[msc_class->sdchar - 'a']… in usbh_msc_scsi_testunitready()
200 static inline int usbh_msc_scsi_requestsense(struct usbh_msc *msc_class) in usbh_msc_scsi_requestsense() argument
205 cbw = (struct CBW *)g_msc_cbw_csw[msc_class->sdchar - 'a']; in usbh_msc_scsi_requestsense()
215 …return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_cbw_csw[msc_class->sdchar - 'a']… in usbh_msc_scsi_requestsense()
218 static inline int usbh_msc_scsi_inquiry(struct usbh_msc *msc_class) in usbh_msc_scsi_inquiry() argument
223 cbw = (struct CBW *)g_msc_cbw_csw[msc_class->sdchar - 'a']; in usbh_msc_scsi_inquiry()
233 …return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_cbw_csw[msc_class->sdchar - 'a']… in usbh_msc_scsi_inquiry()
236 static inline int usbh_msc_scsi_readcapacity10(struct usbh_msc *msc_class) in usbh_msc_scsi_readcapacity10() argument
241 cbw = (struct CBW *)g_msc_cbw_csw[msc_class->sdchar - 'a']; in usbh_msc_scsi_readcapacity10()
250 …return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_cbw_csw[msc_class->sdchar - 'a']… in usbh_msc_scsi_readcapacity10()
253 static inline void usbh_msc_modeswitch(struct usbh_msc *msc_class, const uint8_t *message) in usbh_msc_modeswitch() argument
258 cbw = (struct CBW *)g_msc_cbw_csw[msc_class->sdchar - 'a']; in usbh_msc_modeswitch()
260 memcpy(g_msc_cbw_csw[msc_class->sdchar - 'a'], message, 31); in usbh_msc_modeswitch()
262 …usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_cbw_csw[msc_class->sdchar - 'a'], NULL,… in usbh_msc_modeswitch()
271 struct usbh_msc *msc_class = usbh_msc_class_alloc(); in usbh_msc_connect() local
272 if (msc_class == NULL) { in usbh_msc_connect()
277 msc_class->hport = hport; in usbh_msc_connect()
278 msc_class->intf = intf; in usbh_msc_connect()
280 hport->config.intf[intf].priv = msc_class; in usbh_msc_connect()
282 ret = usbh_msc_get_maxlun(msc_class, g_msc_buf[msc_class->sdchar - 'a']); in usbh_msc_connect()
286 g_msc_buf[msc_class->sdchar - 'a'][0] = 0; in usbh_msc_connect()
293 USB_LOG_INFO("Get max LUN:%u\r\n", g_msc_buf[msc_class->sdchar - 'a'][0] + 1); in usbh_msc_connect()
298 USBH_EP_INIT(msc_class->bulkin, ep_desc); in usbh_msc_connect()
300 USBH_EP_INIT(msc_class->bulkout, ep_desc); in usbh_msc_connect()
312 usbh_msc_modeswitch(msc_class, config->message_content); in usbh_msc_connect()
322 …snprintf(hport->config.intf[intf].devname, CONFIG_USBHOST_DEV_NAMELEN, DEV_FORMAT, msc_class->sdch… in usbh_msc_connect()
326 usbh_msc_run(msc_class); in usbh_msc_connect()
334 struct usbh_msc *msc_class = (struct usbh_msc *)hport->config.intf[intf].priv; in usbh_msc_disconnect() local
336 if (msc_class) { in usbh_msc_disconnect()
337 if (msc_class->bulkin) { in usbh_msc_disconnect()
338 usbh_kill_urb(&msc_class->bulkin_urb); in usbh_msc_disconnect()
341 if (msc_class->bulkout) { in usbh_msc_disconnect()
342 usbh_kill_urb(&msc_class->bulkout_urb); in usbh_msc_disconnect()
348 usbh_msc_stop(msc_class); in usbh_msc_disconnect()
351 usbh_msc_class_free(msc_class); in usbh_msc_disconnect()
357 int usbh_msc_scsi_init(struct usbh_msc *msc_class) in usbh_msc_scsi_init() argument
363 while (usbh_msc_scsi_testunitready(msc_class) < 0) { in usbh_msc_scsi_init()
365 ret = usbh_msc_scsi_requestsense(msc_class); in usbh_msc_scsi_init()
374 ret = usbh_msc_scsi_inquiry(msc_class); in usbh_msc_scsi_init()
380 ret = usbh_msc_scsi_readcapacity10(msc_class); in usbh_msc_scsi_init()
386 if (msc_class->blocksize > 0) { in usbh_msc_scsi_init()
388 …_INFO("Block num:%d,block size:%d\r\n", (unsigned int)msc_class->blocknum, (unsigned int)msc_class… in usbh_msc_scsi_init()
397 int usbh_msc_scsi_write10(struct usbh_msc *msc_class, uint32_t start_sector, const uint8_t *buffer,… in usbh_msc_scsi_write10() argument
402 cbw = (struct CBW *)g_msc_cbw_csw[msc_class->sdchar - 'a']; in usbh_msc_scsi_write10()
406 cbw->dDataLength = (msc_class->blocksize * nsectors); in usbh_msc_scsi_write10()
413 …return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_cbw_csw[msc_class->sdchar - 'a']… in usbh_msc_scsi_write10()
416 int usbh_msc_scsi_read10(struct usbh_msc *msc_class, uint32_t start_sector, const uint8_t *buffer, … in usbh_msc_scsi_read10() argument
421 cbw = (struct CBW *)g_msc_cbw_csw[msc_class->sdchar - 'a']; in usbh_msc_scsi_read10()
425 cbw->dDataLength = (msc_class->blocksize * nsectors); in usbh_msc_scsi_read10()
433 …return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_cbw_csw[msc_class->sdchar - 'a']… in usbh_msc_scsi_read10()
445 __WEAK void usbh_msc_run(struct usbh_msc *msc_class) in usbh_msc_run() argument
447 (void)msc_class; in usbh_msc_run()
450 __WEAK void usbh_msc_stop(struct usbh_msc *msc_class) in usbh_msc_stop() argument
452 (void)msc_class; in usbh_msc_stop()