ushc 119 drivers/mmc/host/ushc.c static int ushc_hw_reset(struct ushc_data *ushc) ushc 121 drivers/mmc/host/ushc.c return usb_control_msg(ushc->usb_dev, usb_sndctrlpipe(ushc->usb_dev, 0), ushc 126 drivers/mmc/host/ushc.c static int ushc_hw_get_caps(struct ushc_data *ushc) ushc 131 drivers/mmc/host/ushc.c ret = usb_control_msg(ushc->usb_dev, usb_rcvctrlpipe(ushc->usb_dev, 0), ushc 133 drivers/mmc/host/ushc.c 0, 0, &ushc->caps, sizeof(ushc->caps), 100); ushc 137 drivers/mmc/host/ushc.c ushc->caps = le32_to_cpu(ushc->caps); ushc 139 drivers/mmc/host/ushc.c version = ushc->caps & USHC_GET_CAPS_VERSION_MASK; ushc 141 drivers/mmc/host/ushc.c dev_err(&ushc->usb_dev->dev, "controller version %d is not supported\n", version); ushc 148 drivers/mmc/host/ushc.c static int ushc_hw_set_host_ctrl(struct ushc_data *ushc, u16 mask, u16 val) ushc 153 drivers/mmc/host/ushc.c host_ctrl = (ushc->host_ctrl & ~mask) | val; ushc 154 drivers/mmc/host/ushc.c ret = usb_control_msg(ushc->usb_dev, usb_sndctrlpipe(ushc->usb_dev, 0), ushc 159 drivers/mmc/host/ushc.c ushc->host_ctrl = host_ctrl; ushc 165 drivers/mmc/host/ushc.c struct ushc_data *ushc = urb->context; ushc 171 drivers/mmc/host/ushc.c status = ushc->int_data->status; ushc 172 drivers/mmc/host/ushc.c last_status = ushc->last_status; ushc 173 drivers/mmc/host/ushc.c ushc->last_status = status; ushc 183 drivers/mmc/host/ushc.c if (!test_and_clear_bit(IGNORE_NEXT_INT, &ushc->flags) ushc 184 drivers/mmc/host/ushc.c && test_bit(INT_EN, &ushc->flags) ushc 186 drivers/mmc/host/ushc.c mmc_signal_sdio_irq(ushc->mmc); ushc 190 drivers/mmc/host/ushc.c mmc_detect_change(ushc->mmc, msecs_to_jiffies(100)); ushc 192 drivers/mmc/host/ushc.c if (!test_bit(INT_EN, &ushc->flags)) ushc 193 drivers/mmc/host/ushc.c set_bit(IGNORE_NEXT_INT, &ushc->flags); ushc 194 drivers/mmc/host/ushc.c usb_submit_urb(ushc->int_urb, GFP_ATOMIC); ushc 199 drivers/mmc/host/ushc.c struct ushc_data *ushc = urb->context; ushc 202 drivers/mmc/host/ushc.c usb_unlink_urb(ushc->data_urb); ushc 203 drivers/mmc/host/ushc.c usb_unlink_urb(ushc->csw_urb); ushc 209 drivers/mmc/host/ushc.c struct ushc_data *ushc = urb->context; ushc 212 drivers/mmc/host/ushc.c usb_unlink_urb(ushc->csw_urb); ushc 217 drivers/mmc/host/ushc.c struct ushc_data *ushc = urb->context; ushc 218 drivers/mmc/host/ushc.c struct mmc_request *req = ushc->current_req; ushc 221 drivers/mmc/host/ushc.c status = ushc->csw->status; ushc 243 drivers/mmc/host/ushc.c req->cmd->resp[0] = le32_to_cpu(ushc->csw->response); ushc 245 drivers/mmc/host/ushc.c mmc_request_done(ushc->mmc, req); ushc 250 drivers/mmc/host/ushc.c struct ushc_data *ushc = mmc_priv(mmc); ushc 254 drivers/mmc/host/ushc.c spin_lock_irqsave(&ushc->lock, flags); ushc 256 drivers/mmc/host/ushc.c if (test_bit(DISCONNECTED, &ushc->flags)) { ushc 269 drivers/mmc/host/ushc.c if (req->data && ushc->clock_freq < 6000000) { ushc 274 drivers/mmc/host/ushc.c ushc->current_req = req; ushc 277 drivers/mmc/host/ushc.c ushc->cbw->cmd_idx = cpu_to_le16(req->cmd->opcode); ushc 279 drivers/mmc/host/ushc.c ushc->cbw->block_size = cpu_to_le16(req->data->blksz); ushc 281 drivers/mmc/host/ushc.c ushc->cbw->block_size = 0; ushc 282 drivers/mmc/host/ushc.c ushc->cbw->arg = cpu_to_le32(req->cmd->arg); ushc 284 drivers/mmc/host/ushc.c ret = usb_submit_urb(ushc->cbw_urb, GFP_ATOMIC); ushc 294 drivers/mmc/host/ushc.c pipe = usb_rcvbulkpipe(ushc->usb_dev, 6); ushc 296 drivers/mmc/host/ushc.c pipe = usb_sndbulkpipe(ushc->usb_dev, 2); ushc 298 drivers/mmc/host/ushc.c usb_fill_bulk_urb(ushc->data_urb, ushc->usb_dev, pipe, ushc 300 drivers/mmc/host/ushc.c data_callback, ushc); ushc 301 drivers/mmc/host/ushc.c ushc->data_urb->num_sgs = 1; ushc 302 drivers/mmc/host/ushc.c ushc->data_urb->sg = data->sg; ushc 303 drivers/mmc/host/ushc.c ret = usb_submit_urb(ushc->data_urb, GFP_ATOMIC); ushc 309 drivers/mmc/host/ushc.c ret = usb_submit_urb(ushc->csw_urb, GFP_ATOMIC); ushc 312 drivers/mmc/host/ushc.c spin_unlock_irqrestore(&ushc->lock, flags); ushc 314 drivers/mmc/host/ushc.c usb_unlink_urb(ushc->cbw_urb); ushc 315 drivers/mmc/host/ushc.c usb_unlink_urb(ushc->data_urb); ushc 321 drivers/mmc/host/ushc.c static int ushc_set_power(struct ushc_data *ushc, unsigned char power_mode) ushc 337 drivers/mmc/host/ushc.c return usb_control_msg(ushc->usb_dev, usb_sndctrlpipe(ushc->usb_dev, 0), ushc 342 drivers/mmc/host/ushc.c static int ushc_set_bus_width(struct ushc_data *ushc, int bus_width) ushc 344 drivers/mmc/host/ushc.c return ushc_hw_set_host_ctrl(ushc, USHC_HOST_CTRL_4BIT, ushc 348 drivers/mmc/host/ushc.c static int ushc_set_bus_freq(struct ushc_data *ushc, int clk, bool enable_hs) ushc 356 drivers/mmc/host/ushc.c ret = ushc_hw_set_host_ctrl(ushc, USHC_HOST_CTRL_HIGH_SPD, ushc 361 drivers/mmc/host/ushc.c ret = usb_control_msg(ushc->usb_dev, usb_sndctrlpipe(ushc->usb_dev, 0), ushc 367 drivers/mmc/host/ushc.c ushc->clock_freq = clk; ushc 373 drivers/mmc/host/ushc.c struct ushc_data *ushc = mmc_priv(mmc); ushc 375 drivers/mmc/host/ushc.c ushc_set_power(ushc, ios->power_mode); ushc 376 drivers/mmc/host/ushc.c ushc_set_bus_width(ushc, 1 << ios->bus_width); ushc 377 drivers/mmc/host/ushc.c ushc_set_bus_freq(ushc, ios->clock, ios->timing == MMC_TIMING_SD_HS); ushc 382 drivers/mmc/host/ushc.c struct ushc_data *ushc = mmc_priv(mmc); ushc 384 drivers/mmc/host/ushc.c return !!(ushc->last_status & USHC_INT_STATUS_CARD_PRESENT); ushc 389 drivers/mmc/host/ushc.c struct ushc_data *ushc = mmc_priv(mmc); ushc 392 drivers/mmc/host/ushc.c set_bit(INT_EN, &ushc->flags); ushc 394 drivers/mmc/host/ushc.c clear_bit(INT_EN, &ushc->flags); ushc 397 drivers/mmc/host/ushc.c static void ushc_clean_up(struct ushc_data *ushc) ushc 399 drivers/mmc/host/ushc.c usb_free_urb(ushc->int_urb); ushc 400 drivers/mmc/host/ushc.c usb_free_urb(ushc->csw_urb); ushc 401 drivers/mmc/host/ushc.c usb_free_urb(ushc->data_urb); ushc 402 drivers/mmc/host/ushc.c usb_free_urb(ushc->cbw_urb); ushc 404 drivers/mmc/host/ushc.c kfree(ushc->int_data); ushc 405 drivers/mmc/host/ushc.c kfree(ushc->cbw); ushc 406 drivers/mmc/host/ushc.c kfree(ushc->csw); ushc 408 drivers/mmc/host/ushc.c mmc_free_host(ushc->mmc); ushc 422 drivers/mmc/host/ushc.c struct ushc_data *ushc; ushc 431 drivers/mmc/host/ushc.c ushc = mmc_priv(mmc); ushc 432 drivers/mmc/host/ushc.c usb_set_intfdata(intf, ushc); ushc 434 drivers/mmc/host/ushc.c ushc->usb_dev = usb_dev; ushc 435 drivers/mmc/host/ushc.c ushc->mmc = mmc; ushc 437 drivers/mmc/host/ushc.c spin_lock_init(&ushc->lock); ushc 439 drivers/mmc/host/ushc.c ret = ushc_hw_reset(ushc); ushc 444 drivers/mmc/host/ushc.c ret = ushc_hw_get_caps(ushc); ushc 454 drivers/mmc/host/ushc.c mmc->caps |= (ushc->caps & USHC_GET_CAPS_HIGH_SPD) ? MMC_CAP_SD_HIGHSPEED : 0; ushc 462 drivers/mmc/host/ushc.c ushc->int_urb = usb_alloc_urb(0, GFP_KERNEL); ushc 463 drivers/mmc/host/ushc.c if (ushc->int_urb == NULL) { ushc 467 drivers/mmc/host/ushc.c ushc->int_data = kzalloc(sizeof(struct ushc_int_data), GFP_KERNEL); ushc 468 drivers/mmc/host/ushc.c if (ushc->int_data == NULL) { ushc 472 drivers/mmc/host/ushc.c usb_fill_int_urb(ushc->int_urb, ushc->usb_dev, ushc 475 drivers/mmc/host/ushc.c ushc->int_data, sizeof(struct ushc_int_data), ushc 476 drivers/mmc/host/ushc.c int_callback, ushc, ushc 479 drivers/mmc/host/ushc.c ushc->cbw_urb = usb_alloc_urb(0, GFP_KERNEL); ushc 480 drivers/mmc/host/ushc.c if (ushc->cbw_urb == NULL) { ushc 484 drivers/mmc/host/ushc.c ushc->cbw = kzalloc(sizeof(struct ushc_cbw), GFP_KERNEL); ushc 485 drivers/mmc/host/ushc.c if (ushc->cbw == NULL) { ushc 489 drivers/mmc/host/ushc.c ushc->cbw->signature = USHC_CBW_SIGNATURE; ushc 491 drivers/mmc/host/ushc.c usb_fill_bulk_urb(ushc->cbw_urb, ushc->usb_dev, usb_sndbulkpipe(usb_dev, 2), ushc 492 drivers/mmc/host/ushc.c ushc->cbw, sizeof(struct ushc_cbw), ushc 493 drivers/mmc/host/ushc.c cbw_callback, ushc); ushc 495 drivers/mmc/host/ushc.c ushc->data_urb = usb_alloc_urb(0, GFP_KERNEL); ushc 496 drivers/mmc/host/ushc.c if (ushc->data_urb == NULL) { ushc 501 drivers/mmc/host/ushc.c ushc->csw_urb = usb_alloc_urb(0, GFP_KERNEL); ushc 502 drivers/mmc/host/ushc.c if (ushc->csw_urb == NULL) { ushc 506 drivers/mmc/host/ushc.c ushc->csw = kzalloc(sizeof(struct ushc_csw), GFP_KERNEL); ushc 507 drivers/mmc/host/ushc.c if (ushc->csw == NULL) { ushc 511 drivers/mmc/host/ushc.c usb_fill_bulk_urb(ushc->csw_urb, ushc->usb_dev, usb_rcvbulkpipe(usb_dev, 6), ushc 512 drivers/mmc/host/ushc.c ushc->csw, sizeof(struct ushc_csw), ushc 513 drivers/mmc/host/ushc.c csw_callback, ushc); ushc 515 drivers/mmc/host/ushc.c ret = mmc_add_host(ushc->mmc); ushc 519 drivers/mmc/host/ushc.c ret = usb_submit_urb(ushc->int_urb, GFP_KERNEL); ushc 521 drivers/mmc/host/ushc.c mmc_remove_host(ushc->mmc); ushc 528 drivers/mmc/host/ushc.c ushc_clean_up(ushc); ushc 534 drivers/mmc/host/ushc.c struct ushc_data *ushc = usb_get_intfdata(intf); ushc 536 drivers/mmc/host/ushc.c spin_lock_irq(&ushc->lock); ushc 537 drivers/mmc/host/ushc.c set_bit(DISCONNECTED, &ushc->flags); ushc 538 drivers/mmc/host/ushc.c spin_unlock_irq(&ushc->lock); ushc 540 drivers/mmc/host/ushc.c usb_kill_urb(ushc->int_urb); ushc 541 drivers/mmc/host/ushc.c usb_kill_urb(ushc->cbw_urb); ushc 542 drivers/mmc/host/ushc.c usb_kill_urb(ushc->data_urb); ushc 543 drivers/mmc/host/ushc.c usb_kill_urb(ushc->csw_urb); ushc 545 drivers/mmc/host/ushc.c mmc_remove_host(ushc->mmc); ushc 547 drivers/mmc/host/ushc.c ushc_clean_up(ushc);