/include/linux/usb/ulpi.h
C++ Header | 147 lines | 89 code | 18 blank | 40 comment | 0 complexity | 4a493d2f9fa621647ef53a4376b4f7cc MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
1/* 2 * ulpi.h -- ULPI defines and function prorotypes 3 * 4 * Copyright (C) 2010 Nokia Corporation 5 * 6 * This software is distributed under the terms of the GNU General 7 * Public License ("GPL") as published by the Free Software Foundation, 8 * version 2 of that License. 9 */ 10 11#ifndef __LINUX_USB_ULPI_H 12#define __LINUX_USB_ULPI_H 13 14/*-------------------------------------------------------------------------*/ 15 16/* 17 * Macros for Set and Clear 18 * See ULPI 1.1 specification to find the registers with Set and Clear offsets 19 */ 20#define ULPI_SET(a) (a + 1) 21#define ULPI_CLR(a) (a + 2) 22 23/*-------------------------------------------------------------------------*/ 24 25/* 26 * Register Map 27 */ 28#define ULPI_VENDOR_ID_LOW 0x00 29#define ULPI_VENDOR_ID_HIGH 0x01 30#define ULPI_PRODUCT_ID_LOW 0x02 31#define ULPI_PRODUCT_ID_HIGH 0x03 32#define ULPI_FUNC_CTRL 0x04 33#define ULPI_IFC_CTRL 0x07 34#define ULPI_OTG_CTRL 0x0a 35#define ULPI_USB_INT_EN_RISE 0x0d 36#define ULPI_USB_INT_EN_FALL 0x10 37#define ULPI_USB_INT_STS 0x13 38#define ULPI_USB_INT_LATCH 0x14 39#define ULPI_DEBUG 0x15 40#define ULPI_SCRATCH 0x16 41/* Optional Carkit Registers */ 42#define ULPI_CARCIT_CTRL 0x19 43#define ULPI_CARCIT_INT_DELAY 0x1c 44#define ULPI_CARCIT_INT_EN 0x1d 45#define ULPI_CARCIT_INT_STS 0x20 46#define ULPI_CARCIT_INT_LATCH 0x21 47#define ULPI_CARCIT_PLS_CTRL 0x22 48/* Other Optional Registers */ 49#define ULPI_TX_POS_WIDTH 0x25 50#define ULPI_TX_NEG_WIDTH 0x26 51#define ULPI_POLARITY_RECOVERY 0x27 52/* Access Extended Register Set */ 53#define ULPI_ACCESS_EXTENDED 0x2f 54/* Vendor Specific */ 55#define ULPI_VENDOR_SPECIFIC 0x30 56/* Extended Registers */ 57#define ULPI_EXT_VENDOR_SPECIFIC 0x80 58 59/*-------------------------------------------------------------------------*/ 60 61/* Function Control */ 62#define ULPI_FUNC_CTRL_XCVRSEL (1 << 0) 63#define ULPI_FUNC_CTRL_XCVRSEL_MASK (3 << 0) 64#define ULPI_FUNC_CTRL_HIGH_SPEED (0 << 0) 65#define ULPI_FUNC_CTRL_FULL_SPEED (1 << 0) 66#define ULPI_FUNC_CTRL_LOW_SPEED (2 << 0) 67#define ULPI_FUNC_CTRL_FS4LS (3 << 0) 68#define ULPI_FUNC_CTRL_TERMSELECT (1 << 2) 69#define ULPI_FUNC_CTRL_OPMODE (1 << 3) 70#define ULPI_FUNC_CTRL_OPMODE_MASK (3 << 3) 71#define ULPI_FUNC_CTRL_OPMODE_NORMAL (0 << 3) 72#define ULPI_FUNC_CTRL_OPMODE_NONDRIVING (1 << 3) 73#define ULPI_FUNC_CTRL_OPMODE_DISABLE_NRZI (2 << 3) 74#define ULPI_FUNC_CTRL_OPMODE_NOSYNC_NOEOP (3 << 3) 75#define ULPI_FUNC_CTRL_RESET (1 << 5) 76#define ULPI_FUNC_CTRL_SUSPENDM (1 << 6) 77 78/* Interface Control */ 79#define ULPI_IFC_CTRL_6_PIN_SERIAL_MODE (1 << 0) 80#define ULPI_IFC_CTRL_3_PIN_SERIAL_MODE (1 << 1) 81#define ULPI_IFC_CTRL_CARKITMODE (1 << 2) 82#define ULPI_IFC_CTRL_CLOCKSUSPENDM (1 << 3) 83#define ULPI_IFC_CTRL_AUTORESUME (1 << 4) 84#define ULPI_IFC_CTRL_EXTERNAL_VBUS (1 << 5) 85#define ULPI_IFC_CTRL_PASSTHRU (1 << 6) 86#define ULPI_IFC_CTRL_PROTECT_IFC_DISABLE (1 << 7) 87 88/* OTG Control */ 89#define ULPI_OTG_CTRL_ID_PULLUP (1 << 0) 90#define ULPI_OTG_CTRL_DP_PULLDOWN (1 << 1) 91#define ULPI_OTG_CTRL_DM_PULLDOWN (1 << 2) 92#define ULPI_OTG_CTRL_DISCHRGVBUS (1 << 3) 93#define ULPI_OTG_CTRL_CHRGVBUS (1 << 4) 94#define ULPI_OTG_CTRL_DRVVBUS (1 << 5) 95#define ULPI_OTG_CTRL_DRVVBUS_EXT (1 << 6) 96#define ULPI_OTG_CTRL_EXTVBUSIND (1 << 7) 97 98/* USB Interrupt Enable Rising, 99 * USB Interrupt Enable Falling, 100 * USB Interrupt Status and 101 * USB Interrupt Latch 102 */ 103#define ULPI_INT_HOST_DISCONNECT (1 << 0) 104#define ULPI_INT_VBUS_VALID (1 << 1) 105#define ULPI_INT_SESS_VALID (1 << 2) 106#define ULPI_INT_SESS_END (1 << 3) 107#define ULPI_INT_IDGRD (1 << 4) 108 109/* Debug */ 110#define ULPI_DEBUG_LINESTATE0 (1 << 0) 111#define ULPI_DEBUG_LINESTATE1 (1 << 1) 112 113/* Carkit Control */ 114#define ULPI_CARKIT_CTRL_CARKITPWR (1 << 0) 115#define ULPI_CARKIT_CTRL_IDGNDDRV (1 << 1) 116#define ULPI_CARKIT_CTRL_TXDEN (1 << 2) 117#define ULPI_CARKIT_CTRL_RXDEN (1 << 3) 118#define ULPI_CARKIT_CTRL_SPKLEFTEN (1 << 4) 119#define ULPI_CARKIT_CTRL_SPKRIGHTEN (1 << 5) 120#define ULPI_CARKIT_CTRL_MICEN (1 << 6) 121 122/* Carkit Interrupt Enable */ 123#define ULPI_CARKIT_INT_EN_IDFLOAT_RISE (1 << 0) 124#define ULPI_CARKIT_INT_EN_IDFLOAT_FALL (1 << 1) 125#define ULPI_CARKIT_INT_EN_CARINTDET (1 << 2) 126#define ULPI_CARKIT_INT_EN_DP_RISE (1 << 3) 127#define ULPI_CARKIT_INT_EN_DP_FALL (1 << 4) 128 129/* Carkit Interrupt Status and 130 * Carkit Interrupt Latch 131 */ 132#define ULPI_CARKIT_INT_IDFLOAT (1 << 0) 133#define ULPI_CARKIT_INT_CARINTDET (1 << 1) 134#define ULPI_CARKIT_INT_DP (1 << 2) 135 136/* Carkit Pulse Control*/ 137#define ULPI_CARKIT_PLS_CTRL_TXPLSEN (1 << 0) 138#define ULPI_CARKIT_PLS_CTRL_RXPLSEN (1 << 1) 139#define ULPI_CARKIT_PLS_CTRL_SPKRLEFT_BIASEN (1 << 2) 140#define ULPI_CARKIT_PLS_CTRL_SPKRRIGHT_BIASEN (1 << 3) 141 142/*-------------------------------------------------------------------------*/ 143 144struct otg_transceiver *otg_ulpi_create(struct otg_io_access_ops *ops, 145 unsigned int flags); 146 147#endif /* __LINUX_USB_ULPI_H */