usb: otg: twl4030: use the global ULPI register definitions

Rely on the global ULPI register definitions

Signed-off-by: Heikki Krogerus <ext-heikki.krogerus@nokia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Heikki Krogerus 2010-03-31 10:18:05 +03:00 committed by Greg Kroah-Hartman
parent fc567f06de
commit 92a6e6b328
1 changed files with 8 additions and 100 deletions

View File

@ -33,6 +33,7 @@
#include <linux/io.h>
#include <linux/delay.h>
#include <linux/usb/otg.h>
#include <linux/usb/ulpi.h>
#include <linux/i2c/twl.h>
#include <linux/regulator/consumer.h>
#include <linux/err.h>
@ -41,81 +42,7 @@
/* Register defines */
#define VENDOR_ID_LO 0x00
#define VENDOR_ID_HI 0x01
#define PRODUCT_ID_LO 0x02
#define PRODUCT_ID_HI 0x03
#define FUNC_CTRL 0x04
#define FUNC_CTRL_SET 0x05
#define FUNC_CTRL_CLR 0x06
#define FUNC_CTRL_SUSPENDM (1 << 6)
#define FUNC_CTRL_RESET (1 << 5)
#define FUNC_CTRL_OPMODE_MASK (3 << 3) /* bits 3 and 4 */
#define FUNC_CTRL_OPMODE_NORMAL (0 << 3)
#define FUNC_CTRL_OPMODE_NONDRIVING (1 << 3)
#define FUNC_CTRL_OPMODE_DISABLE_BIT_NRZI (2 << 3)
#define FUNC_CTRL_TERMSELECT (1 << 2)
#define FUNC_CTRL_XCVRSELECT_MASK (3 << 0) /* bits 0 and 1 */
#define FUNC_CTRL_XCVRSELECT_HS (0 << 0)
#define FUNC_CTRL_XCVRSELECT_FS (1 << 0)
#define FUNC_CTRL_XCVRSELECT_LS (2 << 0)
#define FUNC_CTRL_XCVRSELECT_FS4LS (3 << 0)
#define IFC_CTRL 0x07
#define IFC_CTRL_SET 0x08
#define IFC_CTRL_CLR 0x09
#define IFC_CTRL_INTERFACE_PROTECT_DISABLE (1 << 7)
#define IFC_CTRL_AUTORESUME (1 << 4)
#define IFC_CTRL_CLOCKSUSPENDM (1 << 3)
#define IFC_CTRL_CARKITMODE (1 << 2)
#define IFC_CTRL_FSLSSERIALMODE_3PIN (1 << 1)
#define TWL4030_OTG_CTRL 0x0A
#define TWL4030_OTG_CTRL_SET 0x0B
#define TWL4030_OTG_CTRL_CLR 0x0C
#define TWL4030_OTG_CTRL_DRVVBUS (1 << 5)
#define TWL4030_OTG_CTRL_CHRGVBUS (1 << 4)
#define TWL4030_OTG_CTRL_DISCHRGVBUS (1 << 3)
#define TWL4030_OTG_CTRL_DMPULLDOWN (1 << 2)
#define TWL4030_OTG_CTRL_DPPULLDOWN (1 << 1)
#define TWL4030_OTG_CTRL_IDPULLUP (1 << 0)
#define USB_INT_EN_RISE 0x0D
#define USB_INT_EN_RISE_SET 0x0E
#define USB_INT_EN_RISE_CLR 0x0F
#define USB_INT_EN_FALL 0x10
#define USB_INT_EN_FALL_SET 0x11
#define USB_INT_EN_FALL_CLR 0x12
#define USB_INT_STS 0x13
#define USB_INT_LATCH 0x14
#define USB_INT_IDGND (1 << 4)
#define USB_INT_SESSEND (1 << 3)
#define USB_INT_SESSVALID (1 << 2)
#define USB_INT_VBUSVALID (1 << 1)
#define USB_INT_HOSTDISCONNECT (1 << 0)
#define CARKIT_CTRL 0x19
#define CARKIT_CTRL_SET 0x1A
#define CARKIT_CTRL_CLR 0x1B
#define CARKIT_CTRL_MICEN (1 << 6)
#define CARKIT_CTRL_SPKRIGHTEN (1 << 5)
#define CARKIT_CTRL_SPKLEFTEN (1 << 4)
#define CARKIT_CTRL_RXDEN (1 << 3)
#define CARKIT_CTRL_TXDEN (1 << 2)
#define CARKIT_CTRL_IDGNDDRV (1 << 1)
#define CARKIT_CTRL_CARKITPWR (1 << 0)
#define CARKIT_PLS_CTRL 0x22
#define CARKIT_PLS_CTRL_SET 0x23
#define CARKIT_PLS_CTRL_CLR 0x24
#define CARKIT_PLS_CTRL_SPKRRIGHT_BIASEN (1 << 3)
#define CARKIT_PLS_CTRL_SPKRLEFT_BIASEN (1 << 2)
#define CARKIT_PLS_CTRL_RXPLSEN (1 << 1)
#define CARKIT_PLS_CTRL_TXPLSEN (1 << 0)
#define MCPC_CTRL 0x30
#define MCPC_CTRL_SET 0x31
#define MCPC_CTRL_CLR 0x32
#define MCPC_CTRL_RTSOL (1 << 7)
#define MCPC_CTRL_EXTSWR (1 << 6)
#define MCPC_CTRL_EXTSWC (1 << 5)
@ -125,8 +52,6 @@
#define MCPC_CTRL_HS_UART (1 << 0)
#define MCPC_IO_CTRL 0x33
#define MCPC_IO_CTRL_SET 0x34
#define MCPC_IO_CTRL_CLR 0x35
#define MCPC_IO_CTRL_MICBIASEN (1 << 5)
#define MCPC_IO_CTRL_CTS_NPU (1 << 4)
#define MCPC_IO_CTRL_RXD_PU (1 << 3)
@ -135,19 +60,13 @@
#define MCPC_IO_CTRL_RTSTYP (1 << 0)
#define MCPC_CTRL2 0x36
#define MCPC_CTRL2_SET 0x37
#define MCPC_CTRL2_CLR 0x38
#define MCPC_CTRL2_MCPC_CK_EN (1 << 0)
#define OTHER_FUNC_CTRL 0x80
#define OTHER_FUNC_CTRL_SET 0x81
#define OTHER_FUNC_CTRL_CLR 0x82
#define OTHER_FUNC_CTRL_BDIS_ACON_EN (1 << 4)
#define OTHER_FUNC_CTRL_FIVEWIRE_MODE (1 << 2)
#define OTHER_IFC_CTRL 0x83
#define OTHER_IFC_CTRL_SET 0x84
#define OTHER_IFC_CTRL_CLR 0x85
#define OTHER_IFC_CTRL_OE_INT_EN (1 << 6)
#define OTHER_IFC_CTRL_CEA2011_MODE (1 << 5)
#define OTHER_IFC_CTRL_FSLSSERIALMODE_4PIN (1 << 4)
@ -156,11 +75,7 @@
#define OTHER_IFC_CTRL_ALT_INT_REROUTE (1 << 0)
#define OTHER_INT_EN_RISE 0x86
#define OTHER_INT_EN_RISE_SET 0x87
#define OTHER_INT_EN_RISE_CLR 0x88
#define OTHER_INT_EN_FALL 0x89
#define OTHER_INT_EN_FALL_SET 0x8A
#define OTHER_INT_EN_FALL_CLR 0x8B
#define OTHER_INT_STS 0x8C
#define OTHER_INT_LATCH 0x8D
#define OTHER_INT_VB_SESS_VLD (1 << 7)
@ -178,13 +93,9 @@
#define ID_RES_GND (1 << 0)
#define POWER_CTRL 0xAC
#define POWER_CTRL_SET 0xAD
#define POWER_CTRL_CLR 0xAE
#define POWER_CTRL_OTG_ENAB (1 << 5)
#define OTHER_IFC_CTRL2 0xAF
#define OTHER_IFC_CTRL2_SET 0xB0
#define OTHER_IFC_CTRL2_CLR 0xB1
#define OTHER_IFC_CTRL2_ULPI_STP_LOW (1 << 4)
#define OTHER_IFC_CTRL2_ULPI_TXEN_POL (1 << 3)
#define OTHER_IFC_CTRL2_ULPI_4PIN_2430 (1 << 2)
@ -193,14 +104,10 @@
#define OTHER_IFC_CTRL2_USB_INT_OUTSEL_INT2N (1 << 0)
#define REG_CTRL_EN 0xB2
#define REG_CTRL_EN_SET 0xB3
#define REG_CTRL_EN_CLR 0xB4
#define REG_CTRL_ERROR 0xB5
#define ULPI_I2C_CONFLICT_INTEN (1 << 0)
#define OTHER_FUNC_CTRL2 0xB8
#define OTHER_FUNC_CTRL2_SET 0xB9
#define OTHER_FUNC_CTRL2_CLR 0xBA
#define OTHER_FUNC_CTRL2_VBAT_TIMER_EN (1 << 0)
/* following registers do not have separate _clr and _set registers */
@ -328,13 +235,13 @@ static inline int twl4030_usb_read(struct twl4030_usb *twl, u8 address)
static inline int
twl4030_usb_set_bits(struct twl4030_usb *twl, u8 reg, u8 bits)
{
return twl4030_usb_write(twl, reg + 1, bits);
return twl4030_usb_write(twl, ULPI_SET(reg), bits);
}
static inline int
twl4030_usb_clear_bits(struct twl4030_usb *twl, u8 reg, u8 bits)
{
return twl4030_usb_write(twl, reg + 2, bits);
return twl4030_usb_write(twl, ULPI_CLR(reg), bits);
}
/*-------------------------------------------------------------------------*/
@ -393,11 +300,12 @@ static void twl4030_usb_set_mode(struct twl4030_usb *twl, int mode)
switch (mode) {
case T2_USB_MODE_ULPI:
twl4030_usb_clear_bits(twl, IFC_CTRL, IFC_CTRL_CARKITMODE);
twl4030_usb_clear_bits(twl, ULPI_IFC_CTRL,
ULPI_IFC_CTRL_CARKITMODE);
twl4030_usb_set_bits(twl, POWER_CTRL, POWER_CTRL_OTG_ENAB);
twl4030_usb_clear_bits(twl, FUNC_CTRL,
FUNC_CTRL_XCVRSELECT_MASK |
FUNC_CTRL_OPMODE_MASK);
twl4030_usb_clear_bits(twl, ULPI_FUNC_CTRL,
ULPI_FUNC_CTRL_XCVRSEL_MASK |
ULPI_FUNC_CTRL_OPMODE_MASK);
break;
case -1:
/* FIXME: power on defaults */