1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* |
3 | * NXP ISP1301 USB transceiver driver |
4 | * |
5 | * Copyright (C) 2012 Roland Stigge <stigge@antcom.de> |
6 | */ |
7 | |
8 | #ifndef __LINUX_USB_ISP1301_H |
9 | #define __LINUX_USB_ISP1301_H |
10 | |
11 | #include <linux/of.h> |
12 | |
13 | /* I2C Register definitions: */ |
14 | |
15 | #define ISP1301_I2C_MODE_CONTROL_1 0x04 /* u8 read, set, +1 clear */ |
16 | |
17 | #define MC1_SPEED_REG (1 << 0) |
18 | #define MC1_SUSPEND_REG (1 << 1) |
19 | #define MC1_DAT_SE0 (1 << 2) |
20 | #define MC1_TRANSPARENT (1 << 3) |
21 | #define MC1_BDIS_ACON_EN (1 << 4) |
22 | #define MC1_OE_INT_EN (1 << 5) |
23 | #define MC1_UART_EN (1 << 6) |
24 | #define MC1_MASK 0x7f |
25 | |
26 | #define ISP1301_I2C_MODE_CONTROL_2 0x12 /* u8 read, set, +1 clear */ |
27 | |
28 | #define MC2_GLOBAL_PWR_DN (1 << 0) |
29 | #define MC2_SPD_SUSP_CTRL (1 << 1) |
30 | #define MC2_BI_DI (1 << 2) |
31 | #define MC2_TRANSP_BDIR0 (1 << 3) |
32 | #define MC2_TRANSP_BDIR1 (1 << 4) |
33 | #define MC2_AUDIO_EN (1 << 5) |
34 | #define MC2_PSW_EN (1 << 6) |
35 | #define MC2_EN2V7 (1 << 7) |
36 | |
37 | #define ISP1301_I2C_OTG_CONTROL_1 0x06 /* u8 read, set, +1 clear */ |
38 | |
39 | #define OTG1_DP_PULLUP (1 << 0) |
40 | #define OTG1_DM_PULLUP (1 << 1) |
41 | #define OTG1_DP_PULLDOWN (1 << 2) |
42 | #define OTG1_DM_PULLDOWN (1 << 3) |
43 | #define OTG1_ID_PULLDOWN (1 << 4) |
44 | #define OTG1_VBUS_DRV (1 << 5) |
45 | #define OTG1_VBUS_DISCHRG (1 << 6) |
46 | #define OTG1_VBUS_CHRG (1 << 7) |
47 | |
48 | #define ISP1301_I2C_OTG_CONTROL_2 0x10 /* u8 readonly */ |
49 | |
50 | #define OTG_B_SESS_END (1 << 6) |
51 | #define OTG_B_SESS_VLD (1 << 7) |
52 | |
53 | #define ISP1301_I2C_INTERRUPT_SOURCE 0x8 |
54 | #define ISP1301_I2C_INTERRUPT_LATCH 0xA |
55 | #define ISP1301_I2C_INTERRUPT_FALLING 0xC |
56 | #define ISP1301_I2C_INTERRUPT_RISING 0xE |
57 | |
58 | #define INT_VBUS_VLD (1 << 0) |
59 | #define INT_SESS_VLD (1 << 1) |
60 | #define INT_DP_HI (1 << 2) |
61 | #define INT_ID_GND (1 << 3) |
62 | #define INT_DM_HI (1 << 4) |
63 | #define INT_ID_FLOAT (1 << 5) |
64 | #define INT_BDIS_ACON (1 << 6) |
65 | #define INT_CR_INT (1 << 7) |
66 | |
67 | #define ISP1301_I2C_REG_CLEAR_ADDR 1 /* Register Address Modifier */ |
68 | |
69 | struct i2c_client *isp1301_get_client(struct device_node *node); |
70 | |
71 | #endif /* __LINUX_USB_ISP1301_H */ |
72 | |