mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 16:54:20 +08:00
usb: chipidea: use common definition for USBMODE bits
Some of the bits of USBMODE register are defined in <usb/ehci_def.h>, use them instead of having our own definitions. Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
f7daaa2d6e
commit
758fc9860c
@ -13,6 +13,8 @@
|
|||||||
#ifndef __DRIVERS_USB_CHIPIDEA_BITS_H
|
#ifndef __DRIVERS_USB_CHIPIDEA_BITS_H
|
||||||
#define __DRIVERS_USB_CHIPIDEA_BITS_H
|
#define __DRIVERS_USB_CHIPIDEA_BITS_H
|
||||||
|
|
||||||
|
#include <linux/usb/ehci_def.h>
|
||||||
|
|
||||||
/* HCCPARAMS */
|
/* HCCPARAMS */
|
||||||
#define HCCPARAMS_LEN BIT(17)
|
#define HCCPARAMS_LEN BIT(17)
|
||||||
|
|
||||||
@ -70,11 +72,9 @@
|
|||||||
|
|
||||||
/* USBMODE */
|
/* USBMODE */
|
||||||
#define USBMODE_CM (0x03UL << 0)
|
#define USBMODE_CM (0x03UL << 0)
|
||||||
#define USBMODE_CM_IDLE (0x00UL << 0)
|
#define USBMODE_CM_DC (0x02UL << 0)
|
||||||
#define USBMODE_CM_DEVICE (0x02UL << 0)
|
|
||||||
#define USBMODE_CM_HOST (0x03UL << 0)
|
|
||||||
#define USBMODE_SLOM BIT(3)
|
#define USBMODE_SLOM BIT(3)
|
||||||
#define USBMODE_SDIS BIT(4)
|
#define USBMODE_CI_SDIS BIT(4)
|
||||||
|
|
||||||
/* ENDPTCTRL */
|
/* ENDPTCTRL */
|
||||||
#define ENDPTCTRL_RXS BIT(0)
|
#define ENDPTCTRL_RXS BIT(0)
|
||||||
|
@ -231,15 +231,15 @@ int hw_device_reset(struct ci13xxx *ci)
|
|||||||
CI13XXX_CONTROLLER_RESET_EVENT);
|
CI13XXX_CONTROLLER_RESET_EVENT);
|
||||||
|
|
||||||
if (ci->udc_driver->flags & CI13XXX_DISABLE_STREAMING)
|
if (ci->udc_driver->flags & CI13XXX_DISABLE_STREAMING)
|
||||||
hw_write(ci, OP_USBMODE, USBMODE_SDIS, USBMODE_SDIS);
|
hw_write(ci, OP_USBMODE, USBMODE_CI_SDIS, USBMODE_CI_SDIS);
|
||||||
|
|
||||||
/* USBMODE should be configured step by step */
|
/* USBMODE should be configured step by step */
|
||||||
hw_write(ci, OP_USBMODE, USBMODE_CM, USBMODE_CM_IDLE);
|
hw_write(ci, OP_USBMODE, USBMODE_CM, USBMODE_CM_IDLE);
|
||||||
hw_write(ci, OP_USBMODE, USBMODE_CM, USBMODE_CM_DEVICE);
|
hw_write(ci, OP_USBMODE, USBMODE_CM, USBMODE_CM_DC);
|
||||||
/* HW >= 2.3 */
|
/* HW >= 2.3 */
|
||||||
hw_write(ci, OP_USBMODE, USBMODE_SLOM, USBMODE_SLOM);
|
hw_write(ci, OP_USBMODE, USBMODE_SLOM, USBMODE_SLOM);
|
||||||
|
|
||||||
if (hw_read(ci, OP_USBMODE, USBMODE_CM) != USBMODE_CM_DEVICE) {
|
if (hw_read(ci, OP_USBMODE, USBMODE_CM) != USBMODE_CM_DC) {
|
||||||
pr_err("cannot enter in device mode");
|
pr_err("cannot enter in device mode");
|
||||||
pr_err("lpm = %i", ci->hw_bank.lpm);
|
pr_err("lpm = %i", ci->hw_bank.lpm);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@ -1606,7 +1606,7 @@ static irqreturn_t udc_irq(struct ci13xxx *udc)
|
|||||||
|
|
||||||
if (udc->udc_driver->flags & CI13XXX_REGS_SHARED) {
|
if (udc->udc_driver->flags & CI13XXX_REGS_SHARED) {
|
||||||
if (hw_read(udc, OP_USBMODE, USBMODE_CM) !=
|
if (hw_read(udc, OP_USBMODE, USBMODE_CM) !=
|
||||||
USBMODE_CM_DEVICE) {
|
USBMODE_CM_DC) {
|
||||||
spin_unlock(&udc->lock);
|
spin_unlock(&udc->lock);
|
||||||
return IRQ_NONE;
|
return IRQ_NONE;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user