Commit bd6b7dfd authored by Ulf Hansson's avatar Ulf Hansson

Merge branch 'fixes' into next

parents 61840edc 92b18252
...@@ -282,6 +282,9 @@ static void __cqhci_enable(struct cqhci_host *cq_host) ...@@ -282,6 +282,9 @@ static void __cqhci_enable(struct cqhci_host *cq_host)
cqhci_writel(cq_host, cqcfg, CQHCI_CFG); cqhci_writel(cq_host, cqcfg, CQHCI_CFG);
if (cqhci_readl(cq_host, CQHCI_CTL) & CQHCI_HALT)
cqhci_writel(cq_host, 0, CQHCI_CTL);
mmc->cqe_on = true; mmc->cqe_on = true;
if (cq_host->ops->enable) if (cq_host->ops->enable)
......
...@@ -464,6 +464,18 @@ static s8 dw_mci_exynos_get_best_clksmpl(u8 candiates) ...@@ -464,6 +464,18 @@ static s8 dw_mci_exynos_get_best_clksmpl(u8 candiates)
} }
} }
/*
* If there is no cadiates value, then it needs to return -EIO.
* If there are candiates values and don't find bset clk sample value,
* then use a first candiates clock sample value.
*/
for (i = 0; i < iter; i++) {
__c = ror8(candiates, i);
if ((__c & 0x1) == 0x1) {
loc = i;
goto out;
}
}
out: out:
return loc; return loc;
} }
...@@ -494,6 +506,8 @@ static int dw_mci_exynos_execute_tuning(struct dw_mci_slot *slot, u32 opcode) ...@@ -494,6 +506,8 @@ static int dw_mci_exynos_execute_tuning(struct dw_mci_slot *slot, u32 opcode)
priv->tuned_sample = found; priv->tuned_sample = found;
} else { } else {
ret = -EIO; ret = -EIO;
dev_warn(&mmc->class_dev,
"There is no candiates value about clksmpl!\n");
} }
return ret; return ret;
......
...@@ -576,7 +576,7 @@ static void check_vub300_port_status(struct vub300_mmc_host *vub300) ...@@ -576,7 +576,7 @@ static void check_vub300_port_status(struct vub300_mmc_host *vub300)
GET_SYSTEM_PORT_STATUS, GET_SYSTEM_PORT_STATUS,
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
0x0000, 0x0000, &vub300->system_port_status, 0x0000, 0x0000, &vub300->system_port_status,
sizeof(vub300->system_port_status), HZ); sizeof(vub300->system_port_status), 1000);
if (sizeof(vub300->system_port_status) == retval) if (sizeof(vub300->system_port_status) == retval)
new_system_port_status(vub300); new_system_port_status(vub300);
} }
...@@ -1241,7 +1241,7 @@ static void __download_offload_pseudocode(struct vub300_mmc_host *vub300, ...@@ -1241,7 +1241,7 @@ static void __download_offload_pseudocode(struct vub300_mmc_host *vub300,
SET_INTERRUPT_PSEUDOCODE, SET_INTERRUPT_PSEUDOCODE,
USB_DIR_OUT | USB_TYPE_VENDOR | USB_DIR_OUT | USB_TYPE_VENDOR |
USB_RECIP_DEVICE, 0x0000, 0x0000, USB_RECIP_DEVICE, 0x0000, 0x0000,
xfer_buffer, xfer_length, HZ); xfer_buffer, xfer_length, 1000);
kfree(xfer_buffer); kfree(xfer_buffer);
if (retval < 0) if (retval < 0)
goto copy_error_message; goto copy_error_message;
...@@ -1284,7 +1284,7 @@ static void __download_offload_pseudocode(struct vub300_mmc_host *vub300, ...@@ -1284,7 +1284,7 @@ static void __download_offload_pseudocode(struct vub300_mmc_host *vub300,
SET_TRANSFER_PSEUDOCODE, SET_TRANSFER_PSEUDOCODE,
USB_DIR_OUT | USB_TYPE_VENDOR | USB_DIR_OUT | USB_TYPE_VENDOR |
USB_RECIP_DEVICE, 0x0000, 0x0000, USB_RECIP_DEVICE, 0x0000, 0x0000,
xfer_buffer, xfer_length, HZ); xfer_buffer, xfer_length, 1000);
kfree(xfer_buffer); kfree(xfer_buffer);
if (retval < 0) if (retval < 0)
goto copy_error_message; goto copy_error_message;
...@@ -1991,7 +1991,7 @@ static void __set_clock_speed(struct vub300_mmc_host *vub300, u8 buf[8], ...@@ -1991,7 +1991,7 @@ static void __set_clock_speed(struct vub300_mmc_host *vub300, u8 buf[8],
usb_control_msg(vub300->udev, usb_sndctrlpipe(vub300->udev, 0), usb_control_msg(vub300->udev, usb_sndctrlpipe(vub300->udev, 0),
SET_CLOCK_SPEED, SET_CLOCK_SPEED,
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
0x00, 0x00, buf, buf_array_size, HZ); 0x00, 0x00, buf, buf_array_size, 1000);
if (retval != 8) { if (retval != 8) {
dev_err(&vub300->udev->dev, "SET_CLOCK_SPEED" dev_err(&vub300->udev->dev, "SET_CLOCK_SPEED"
" %dkHz failed with retval=%d\n", kHzClock, retval); " %dkHz failed with retval=%d\n", kHzClock, retval);
...@@ -2013,14 +2013,14 @@ static void vub300_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) ...@@ -2013,14 +2013,14 @@ static void vub300_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
usb_control_msg(vub300->udev, usb_sndctrlpipe(vub300->udev, 0), usb_control_msg(vub300->udev, usb_sndctrlpipe(vub300->udev, 0),
SET_SD_POWER, SET_SD_POWER,
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
0x0000, 0x0000, NULL, 0, HZ); 0x0000, 0x0000, NULL, 0, 1000);
/* must wait for the VUB300 u-proc to boot up */ /* must wait for the VUB300 u-proc to boot up */
msleep(600); msleep(600);
} else if ((ios->power_mode == MMC_POWER_UP) && !vub300->card_powered) { } else if ((ios->power_mode == MMC_POWER_UP) && !vub300->card_powered) {
usb_control_msg(vub300->udev, usb_sndctrlpipe(vub300->udev, 0), usb_control_msg(vub300->udev, usb_sndctrlpipe(vub300->udev, 0),
SET_SD_POWER, SET_SD_POWER,
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
0x0001, 0x0000, NULL, 0, HZ); 0x0001, 0x0000, NULL, 0, 1000);
msleep(600); msleep(600);
vub300->card_powered = 1; vub300->card_powered = 1;
} else if (ios->power_mode == MMC_POWER_ON) { } else if (ios->power_mode == MMC_POWER_ON) {
...@@ -2275,14 +2275,14 @@ static int vub300_probe(struct usb_interface *interface, ...@@ -2275,14 +2275,14 @@ static int vub300_probe(struct usb_interface *interface,
GET_HC_INF0, GET_HC_INF0,
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
0x0000, 0x0000, &vub300->hc_info, 0x0000, 0x0000, &vub300->hc_info,
sizeof(vub300->hc_info), HZ); sizeof(vub300->hc_info), 1000);
if (retval < 0) if (retval < 0)
goto error5; goto error5;
retval = retval =
usb_control_msg(vub300->udev, usb_sndctrlpipe(vub300->udev, 0), usb_control_msg(vub300->udev, usb_sndctrlpipe(vub300->udev, 0),
SET_ROM_WAIT_STATES, SET_ROM_WAIT_STATES,
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
firmware_rom_wait_states, 0x0000, NULL, 0, HZ); firmware_rom_wait_states, 0x0000, NULL, 0, 1000);
if (retval < 0) if (retval < 0)
goto error5; goto error5;
dev_info(&vub300->udev->dev, dev_info(&vub300->udev->dev,
...@@ -2297,7 +2297,7 @@ static int vub300_probe(struct usb_interface *interface, ...@@ -2297,7 +2297,7 @@ static int vub300_probe(struct usb_interface *interface,
GET_SYSTEM_PORT_STATUS, GET_SYSTEM_PORT_STATUS,
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
0x0000, 0x0000, &vub300->system_port_status, 0x0000, 0x0000, &vub300->system_port_status,
sizeof(vub300->system_port_status), HZ); sizeof(vub300->system_port_status), 1000);
if (retval < 0) { if (retval < 0) {
goto error4; goto error4;
} else if (sizeof(vub300->system_port_status) == retval) { } else if (sizeof(vub300->system_port_status) == retval) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment