Ignore:
Timestamp:
2011-07-15T20:22:32Z (13 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e6b32a8
Parents:
89d3f3c7
Message:

Use usbmast_fun_t in more parts of the driver.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/usbmast/bo_trans.c

    r89d3f3c7 r7190bbc  
    4242#include "bo_trans.h"
    4343#include "cmdw.h"
     44#include "usbmast.h"
    4445
    4546bool usb_mast_verbose = false;
     
    5455/** Send command via bulk-only transport.
    5556 *
     57 * @param mfun          Mass storage function
    5658 * @param tag           Command block wrapper tag (automatically compared
    5759 *                      with answer)
     
    6668 * @return              Error code
    6769 */
    68 static int usb_massstor_cmd(usb_device_t *dev, uint32_t tag, uint8_t lun,
     70static int usb_massstor_cmd(usbmast_fun_t *mfun, uint32_t tag, uint8_t lun,
    6971    const void *cmd, size_t cmd_size, usb_direction_t ddir, void *dbuf,
    7072    size_t dbuf_size, size_t *xferred_size)
     
    7274        int rc;
    7375        size_t act_size;
    74         usb_pipe_t *bulk_in_pipe = dev->pipes[BULK_IN_EP].pipe;
    75         usb_pipe_t *bulk_out_pipe = dev->pipes[BULK_OUT_EP].pipe;
     76        usb_pipe_t *bulk_in_pipe = mfun->usb_dev->pipes[BULK_IN_EP].pipe;
     77        usb_pipe_t *bulk_out_pipe = mfun->usb_dev->pipes[BULK_OUT_EP].pipe;
    7678
    7779        /* Prepare CBW - command block wrapper */
     
    165167/** Perform data-in command.
    166168 *
     169 * @param mfun          Mass storage function
    167170 * @param tag           Command block wrapper tag (automatically compared with
    168171 *                      answer)
     
    176179 * @return Error code
    177180 */
    178 int usb_massstor_data_in(usb_device_t *dev, uint32_t tag, uint8_t lun,
     181int usb_massstor_data_in(usbmast_fun_t *mfun, uint32_t tag, uint8_t lun,
    179182    const void *cmd, size_t cmd_size, void *dbuf, size_t dbuf_size, size_t *proc_size)
    180183{
    181         return usb_massstor_cmd(dev, tag, lun, cmd, cmd_size, USB_DIRECTION_IN,
     184        return usb_massstor_cmd(mfun, tag, lun, cmd, cmd_size, USB_DIRECTION_IN,
    182185            dbuf, dbuf_size, proc_size);
    183186}
     
    185188/** Perform data-out command.
    186189 *
     190 * @param mfun          Mass storage function
    187191 * @param tag           Command block wrapper tag (automatically compared with
    188192 *                      answer)
     
    196200 * @return Error code
    197201 */
    198 int usb_massstor_data_out(usb_device_t *dev, uint32_t tag, uint8_t lun,
     202int usb_massstor_data_out(usbmast_fun_t *mfun, uint32_t tag, uint8_t lun,
    199203    const void *cmd, size_t cmd_size, const void *data, size_t data_size,
    200204    size_t *proc_size)
    201205{
    202         return usb_massstor_cmd(dev, tag, lun, cmd, cmd_size, USB_DIRECTION_OUT,
     206        return usb_massstor_cmd(mfun, tag, lun, cmd, cmd_size, USB_DIRECTION_OUT,
    203207            (void *) data, data_size, proc_size);
    204208}
     
    206210/** Perform bulk-only mass storage reset.
    207211 *
    208  * @param dev Device to be reseted.
    209  * @return Error code.
    210  */
    211 int usb_massstor_reset(usb_device_t *dev)
    212 {
    213         return usb_control_request_set(&dev->ctrl_pipe,
     212 * @param mfun          Mass storage function
     213 * @return              Error code
     214 */
     215int usb_massstor_reset(usbmast_fun_t *mfun)
     216{
     217        return usb_control_request_set(&mfun->usb_dev->ctrl_pipe,
    214218            USB_REQUEST_TYPE_CLASS, USB_REQUEST_RECIPIENT_INTERFACE,
    215             0xFF, 0, dev->interface_no, NULL, 0);
     219            0xFF, 0, mfun->usb_dev->interface_no, NULL, 0);
    216220}
    217221
     
    221225 * would reappear on next transaction somehow.
    222226 *
    223  * @param dev Device to be reseted.
    224  */
    225 void usb_massstor_reset_recovery(usb_device_t *dev)
     227 * @param mfun          Mass storage function
     228 */
     229void usb_massstor_reset_recovery(usbmast_fun_t *mfun)
    226230{
    227231        /* We would ignore errors here because if this fails
    228232         * we are doomed anyway and any following transaction would fail.
    229233         */
    230         usb_massstor_reset(dev);
    231         usb_pipe_clear_halt(&dev->ctrl_pipe, dev->pipes[BULK_IN_EP].pipe);
    232         usb_pipe_clear_halt(&dev->ctrl_pipe, dev->pipes[BULK_OUT_EP].pipe);
     234        usb_massstor_reset(mfun);
     235        usb_pipe_clear_halt(&mfun->usb_dev->ctrl_pipe,
     236            mfun->usb_dev->pipes[BULK_IN_EP].pipe);
     237        usb_pipe_clear_halt(&mfun->usb_dev->ctrl_pipe,
     238            mfun->usb_dev->pipes[BULK_OUT_EP].pipe);
    233239}
    234240
     
    241247 * You shall rather use usb_masstor_get_lun_count.
    242248 *
    243  * @param dev Mass storage device.
    244  * @return Error code of maximum LUN (index, not count).
    245  */
    246 int usb_massstor_get_max_lun(usb_device_t *dev)
     249 * @param mfun          Mass storage function
     250 * @return              Error code of maximum LUN (index, not count)
     251 */
     252int usb_massstor_get_max_lun(usbmast_fun_t *mfun)
    247253{
    248254        uint8_t max_lun;
    249255        size_t data_recv_len;
    250         int rc = usb_control_request_get(&dev->ctrl_pipe,
     256        int rc = usb_control_request_get(&mfun->usb_dev->ctrl_pipe,
    251257            USB_REQUEST_TYPE_CLASS, USB_REQUEST_RECIPIENT_INTERFACE,
    252             0xFE, 0, dev->interface_no, &max_lun, 1, &data_recv_len);
     258            0xFE, 0, mfun->usb_dev->interface_no, &max_lun, 1, &data_recv_len);
    253259        if (rc != EOK) {
    254260                return rc;
     
    265271 * (typically that shall not be a problem).
    266272 *
    267  * @param dev Mass storage device.
    268  * @return Number of LUNs.
    269  */
    270 size_t usb_masstor_get_lun_count(usb_device_t *dev)
    271 {
    272         int max_lun = usb_massstor_get_max_lun(dev);
     273 * @param mfun          Mass storage function
     274 * @return              Number of LUNs
     275 */
     276size_t usb_masstor_get_lun_count(usbmast_fun_t *mfun)
     277{
     278        int max_lun = usb_massstor_get_max_lun(mfun);
    273279        if (max_lun < 0) {
    274280                max_lun = 1;
Note: See TracChangeset for help on using the changeset viewer.