2021-03-16 22:59:34

by Badhri Jagan Sridharan

[permalink] [raw]
Subject: [PATCH v1] usb: typec: tcpci: Added few missing TCPCI register definitions

This change adds some of the register bit definitions from the TCPCI spec:
https://www.usb.org/sites/default/files/documents/
usb-port_controller_specification_rev2.0_v1.0_0.pdf

Signed-off-by: Badhri Jagan Sridharan <[email protected]>
---
drivers/usb/typec/tcpm/tcpci.h | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

diff --git a/drivers/usb/typec/tcpm/tcpci.h b/drivers/usb/typec/tcpm/tcpci.h
index 57b6e24e0a0c..2be7a77d400e 100644
--- a/drivers/usb/typec/tcpm/tcpci.h
+++ b/drivers/usb/typec/tcpm/tcpci.h
@@ -47,7 +47,10 @@

#define TCPC_TCPC_CTRL 0x19
#define TCPC_TCPC_CTRL_ORIENTATION BIT(0)
+#define PLUG_ORNT_CC1 0
+#define PLUG_ORNT_CC2 1
#define TCPC_TCPC_CTRL_BIST_TM BIT(1)
+#define TCPC_TCPC_CTRL_EN_LK4CONN_ALRT BIT(6)

#define TCPC_EXTENDED_STATUS 0x20
#define TCPC_EXTENDED_STATUS_VSAFE0V BIT(0)
@@ -74,21 +77,28 @@
#define TCPC_POWER_CTRL_VCONN_ENABLE BIT(0)
#define TCPC_POWER_CTRL_BLEED_DISCHARGE BIT(3)
#define TCPC_POWER_CTRL_AUTO_DISCHARGE BIT(4)
+#define TCPC_DIS_VOLT_ALRM BIT(5)
+#define TCPC_POWER_CTRL_VBUS_VOLT_MON BIT(6)
#define TCPC_FAST_ROLE_SWAP_EN BIT(7)

#define TCPC_CC_STATUS 0x1d
#define TCPC_CC_STATUS_TOGGLING BIT(5)
#define TCPC_CC_STATUS_TERM BIT(4)
+#define TCPC_CC_STATUS_TERM_RP 0
+#define TCPC_CC_STATUS_TERM_RD 1
+#define TCPC_CC_STATE_SRC_OPEN 0
#define TCPC_CC_STATUS_CC2_SHIFT 2
#define TCPC_CC_STATUS_CC2_MASK 0x3
#define TCPC_CC_STATUS_CC1_SHIFT 0
#define TCPC_CC_STATUS_CC1_MASK 0x3

#define TCPC_POWER_STATUS 0x1e
+#define TCPC_POWER_STATUS_DBG_ACC_CON BIT(7)
#define TCPC_POWER_STATUS_UNINIT BIT(6)
#define TCPC_POWER_STATUS_SOURCING_VBUS BIT(4)
#define TCPC_POWER_STATUS_VBUS_DET BIT(3)
#define TCPC_POWER_STATUS_VBUS_PRES BIT(2)
+#define TCPC_POWER_STATUS_SINKING_VBUS BIT(0)

#define TCPC_FAULT_STATUS 0x1f

@@ -121,6 +131,10 @@
#define TCPC_RX_DETECT 0x2f
#define TCPC_RX_DETECT_HARD_RESET BIT(5)
#define TCPC_RX_DETECT_SOP BIT(0)
+#define TCPC_RX_DETECT_SOP1 BIT(1)
+#define TCPC_RX_DETECT_SOP2 BIT(2)
+#define TCPC_RX_DETECT_DBG1 BIT(3)
+#define TCPC_RX_DETECT_DBG2 BIT(4)

#define TCPC_RX_BYTE_CNT 0x30
#define TCPC_RX_BUF_FRAME_TYPE 0x31
@@ -139,6 +153,8 @@
#define TCPC_TX_DATA 0x54 /* through 0x6f */

#define TCPC_VBUS_VOLTAGE 0x70
+#define TCPC_VBUS_VOLTAGE_MASK 0x3ff
+#define TCPC_VBUS_VOLTAGE_LSB_MV 25
#define TCPC_VBUS_SINK_DISCONNECT_THRESH 0x72
#define TCPC_VBUS_SINK_DISCONNECT_THRESH_LSB_MV 25
#define TCPC_VBUS_SINK_DISCONNECT_THRESH_MAX 0x3ff
--
2.31.0.rc2.261.g7f71774620-goog


2021-03-16 23:00:55

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v1] usb: typec: tcpci: Added few missing TCPCI register definitions

On 3/16/21 3:13 PM, Badhri Jagan Sridharan wrote:
> This change adds some of the register bit definitions from the TCPCI spec:
> https://www.usb.org/sites/default/files/documents/
> usb-port_controller_specification_rev2.0_v1.0_0.pdf
>
> Signed-off-by: Badhri Jagan Sridharan <[email protected]>

Are those going to be used ?

Guenter

> ---
> drivers/usb/typec/tcpm/tcpci.h | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/drivers/usb/typec/tcpm/tcpci.h b/drivers/usb/typec/tcpm/tcpci.h
> index 57b6e24e0a0c..2be7a77d400e 100644
> --- a/drivers/usb/typec/tcpm/tcpci.h
> +++ b/drivers/usb/typec/tcpm/tcpci.h
> @@ -47,7 +47,10 @@
>
> #define TCPC_TCPC_CTRL 0x19
> #define TCPC_TCPC_CTRL_ORIENTATION BIT(0)
> +#define PLUG_ORNT_CC1 0
> +#define PLUG_ORNT_CC2 1
> #define TCPC_TCPC_CTRL_BIST_TM BIT(1)
> +#define TCPC_TCPC_CTRL_EN_LK4CONN_ALRT BIT(6)
>
> #define TCPC_EXTENDED_STATUS 0x20
> #define TCPC_EXTENDED_STATUS_VSAFE0V BIT(0)
> @@ -74,21 +77,28 @@
> #define TCPC_POWER_CTRL_VCONN_ENABLE BIT(0)
> #define TCPC_POWER_CTRL_BLEED_DISCHARGE BIT(3)
> #define TCPC_POWER_CTRL_AUTO_DISCHARGE BIT(4)
> +#define TCPC_DIS_VOLT_ALRM BIT(5)
> +#define TCPC_POWER_CTRL_VBUS_VOLT_MON BIT(6)
> #define TCPC_FAST_ROLE_SWAP_EN BIT(7)
>
> #define TCPC_CC_STATUS 0x1d
> #define TCPC_CC_STATUS_TOGGLING BIT(5)
> #define TCPC_CC_STATUS_TERM BIT(4)
> +#define TCPC_CC_STATUS_TERM_RP 0
> +#define TCPC_CC_STATUS_TERM_RD 1
> +#define TCPC_CC_STATE_SRC_OPEN 0
> #define TCPC_CC_STATUS_CC2_SHIFT 2
> #define TCPC_CC_STATUS_CC2_MASK 0x3
> #define TCPC_CC_STATUS_CC1_SHIFT 0
> #define TCPC_CC_STATUS_CC1_MASK 0x3
>
> #define TCPC_POWER_STATUS 0x1e
> +#define TCPC_POWER_STATUS_DBG_ACC_CON BIT(7)
> #define TCPC_POWER_STATUS_UNINIT BIT(6)
> #define TCPC_POWER_STATUS_SOURCING_VBUS BIT(4)
> #define TCPC_POWER_STATUS_VBUS_DET BIT(3)
> #define TCPC_POWER_STATUS_VBUS_PRES BIT(2)
> +#define TCPC_POWER_STATUS_SINKING_VBUS BIT(0)
>
> #define TCPC_FAULT_STATUS 0x1f
>
> @@ -121,6 +131,10 @@
> #define TCPC_RX_DETECT 0x2f
> #define TCPC_RX_DETECT_HARD_RESET BIT(5)
> #define TCPC_RX_DETECT_SOP BIT(0)
> +#define TCPC_RX_DETECT_SOP1 BIT(1)
> +#define TCPC_RX_DETECT_SOP2 BIT(2)
> +#define TCPC_RX_DETECT_DBG1 BIT(3)
> +#define TCPC_RX_DETECT_DBG2 BIT(4)
>
> #define TCPC_RX_BYTE_CNT 0x30
> #define TCPC_RX_BUF_FRAME_TYPE 0x31
> @@ -139,6 +153,8 @@
> #define TCPC_TX_DATA 0x54 /* through 0x6f */
>
> #define TCPC_VBUS_VOLTAGE 0x70
> +#define TCPC_VBUS_VOLTAGE_MASK 0x3ff
> +#define TCPC_VBUS_VOLTAGE_LSB_MV 25
> #define TCPC_VBUS_SINK_DISCONNECT_THRESH 0x72
> #define TCPC_VBUS_SINK_DISCONNECT_THRESH_LSB_MV 25
> #define TCPC_VBUS_SINK_DISCONNECT_THRESH_MAX 0x3ff
>

2021-03-17 16:46:40

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v1] usb: typec: tcpci: Added few missing TCPCI register definitions

On Tue, Mar 16, 2021 at 03:52:58PM -0700, Guenter Roeck wrote:
> On 3/16/21 3:13 PM, Badhri Jagan Sridharan wrote:
> > This change adds some of the register bit definitions from the TCPCI spec:
> > https://www.usb.org/sites/default/files/documents/
> > usb-port_controller_specification_rev2.0_v1.0_0.pdf
> >
> > Signed-off-by: Badhri Jagan Sridharan <[email protected]>
>
> Are those going to be used ?

For values and #defines that are in public specs, does it matter? It's
good to have full definitions in the .h files for whenever possible for
stuff like this to make it easy for people to write code to use them :)

thanks,

greg k-h

2021-03-17 18:03:12

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v1] usb: typec: tcpci: Added few missing TCPCI register definitions

On 3/17/21 9:42 AM, Greg Kroah-Hartman wrote:
> On Tue, Mar 16, 2021 at 03:52:58PM -0700, Guenter Roeck wrote:
>> On 3/16/21 3:13 PM, Badhri Jagan Sridharan wrote:
>>> This change adds some of the register bit definitions from the TCPCI spec:
>>> https://www.usb.org/sites/default/files/documents/
>>> usb-port_controller_specification_rev2.0_v1.0_0.pdf
>>>
>>> Signed-off-by: Badhri Jagan Sridharan <[email protected]>
>>
>> Are those going to be used ?
>
> For values and #defines that are in public specs, does it matter? It's
> good to have full definitions in the .h files for whenever possible for
> stuff like this to make it easy for people to write code to use them :)
>

Good to know your position on this. It is one of the per-maintainer
thingies: Some maintainers don't accept defines if they are not used.
Usually I stay away from defining them to avoid the resulting arguments/
discussions. If you are ok with it, so am I.

Guenter

2021-03-17 18:05:13

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v1] usb: typec: tcpci: Added few missing TCPCI register definitions

On Wed, Mar 17, 2021 at 10:58:24AM -0700, Guenter Roeck wrote:
> On 3/17/21 9:42 AM, Greg Kroah-Hartman wrote:
> > On Tue, Mar 16, 2021 at 03:52:58PM -0700, Guenter Roeck wrote:
> >> On 3/16/21 3:13 PM, Badhri Jagan Sridharan wrote:
> >>> This change adds some of the register bit definitions from the TCPCI spec:
> >>> https://www.usb.org/sites/default/files/documents/
> >>> usb-port_controller_specification_rev2.0_v1.0_0.pdf
> >>>
> >>> Signed-off-by: Badhri Jagan Sridharan <[email protected]>
> >>
> >> Are those going to be used ?
> >
> > For values and #defines that are in public specs, does it matter? It's
> > good to have full definitions in the .h files for whenever possible for
> > stuff like this to make it easy for people to write code to use them :)
> >
>
> Good to know your position on this. It is one of the per-maintainer
> thingies: Some maintainers don't accept defines if they are not used.
> Usually I stay away from defining them to avoid the resulting arguments/
> discussions. If you are ok with it, so am I.

#defines are trivial, and are good for documenting things. We have loads
of drivers that do this to make it a good way to document the full
hardware or specification despite not using all of the defines. They
also are not a maintenance burden.

I don't take new apis that no one uses in-kernel as that's just ripe for
deletion and is a maintenance burden. It makes no sense to add and then
remove something right away :)

thanks,

greg k-h

2021-03-17 19:23:37

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v1] usb: typec: tcpci: Added few missing TCPCI register definitions

On 3/16/21 3:13 PM, Badhri Jagan Sridharan wrote:
> This change adds some of the register bit definitions from the TCPCI spec:
> https://www.usb.org/sites/default/files/documents/
> usb-port_controller_specification_rev2.0_v1.0_0.pdf
>
> Signed-off-by: Badhri Jagan Sridharan <[email protected]>

Reviewed-by: Guenter Roeck <[email protected]>

> ---
> drivers/usb/typec/tcpm/tcpci.h | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/drivers/usb/typec/tcpm/tcpci.h b/drivers/usb/typec/tcpm/tcpci.h
> index 57b6e24e0a0c..2be7a77d400e 100644
> --- a/drivers/usb/typec/tcpm/tcpci.h
> +++ b/drivers/usb/typec/tcpm/tcpci.h
> @@ -47,7 +47,10 @@
>
> #define TCPC_TCPC_CTRL 0x19
> #define TCPC_TCPC_CTRL_ORIENTATION BIT(0)
> +#define PLUG_ORNT_CC1 0
> +#define PLUG_ORNT_CC2 1
> #define TCPC_TCPC_CTRL_BIST_TM BIT(1)
> +#define TCPC_TCPC_CTRL_EN_LK4CONN_ALRT BIT(6)
>
> #define TCPC_EXTENDED_STATUS 0x20
> #define TCPC_EXTENDED_STATUS_VSAFE0V BIT(0)
> @@ -74,21 +77,28 @@
> #define TCPC_POWER_CTRL_VCONN_ENABLE BIT(0)
> #define TCPC_POWER_CTRL_BLEED_DISCHARGE BIT(3)
> #define TCPC_POWER_CTRL_AUTO_DISCHARGE BIT(4)
> +#define TCPC_DIS_VOLT_ALRM BIT(5)
> +#define TCPC_POWER_CTRL_VBUS_VOLT_MON BIT(6)
> #define TCPC_FAST_ROLE_SWAP_EN BIT(7)
>
> #define TCPC_CC_STATUS 0x1d
> #define TCPC_CC_STATUS_TOGGLING BIT(5)
> #define TCPC_CC_STATUS_TERM BIT(4)
> +#define TCPC_CC_STATUS_TERM_RP 0
> +#define TCPC_CC_STATUS_TERM_RD 1
> +#define TCPC_CC_STATE_SRC_OPEN 0
> #define TCPC_CC_STATUS_CC2_SHIFT 2
> #define TCPC_CC_STATUS_CC2_MASK 0x3
> #define TCPC_CC_STATUS_CC1_SHIFT 0
> #define TCPC_CC_STATUS_CC1_MASK 0x3
>
> #define TCPC_POWER_STATUS 0x1e
> +#define TCPC_POWER_STATUS_DBG_ACC_CON BIT(7)
> #define TCPC_POWER_STATUS_UNINIT BIT(6)
> #define TCPC_POWER_STATUS_SOURCING_VBUS BIT(4)
> #define TCPC_POWER_STATUS_VBUS_DET BIT(3)
> #define TCPC_POWER_STATUS_VBUS_PRES BIT(2)
> +#define TCPC_POWER_STATUS_SINKING_VBUS BIT(0)
>
> #define TCPC_FAULT_STATUS 0x1f
>
> @@ -121,6 +131,10 @@
> #define TCPC_RX_DETECT 0x2f
> #define TCPC_RX_DETECT_HARD_RESET BIT(5)
> #define TCPC_RX_DETECT_SOP BIT(0)
> +#define TCPC_RX_DETECT_SOP1 BIT(1)
> +#define TCPC_RX_DETECT_SOP2 BIT(2)
> +#define TCPC_RX_DETECT_DBG1 BIT(3)
> +#define TCPC_RX_DETECT_DBG2 BIT(4)
>
> #define TCPC_RX_BYTE_CNT 0x30
> #define TCPC_RX_BUF_FRAME_TYPE 0x31
> @@ -139,6 +153,8 @@
> #define TCPC_TX_DATA 0x54 /* through 0x6f */
>
> #define TCPC_VBUS_VOLTAGE 0x70
> +#define TCPC_VBUS_VOLTAGE_MASK 0x3ff
> +#define TCPC_VBUS_VOLTAGE_LSB_MV 25
> #define TCPC_VBUS_SINK_DISCONNECT_THRESH 0x72
> #define TCPC_VBUS_SINK_DISCONNECT_THRESH_LSB_MV 25
> #define TCPC_VBUS_SINK_DISCONNECT_THRESH_MAX 0x3ff
>

2021-03-18 07:43:45

by Heikki Krogerus

[permalink] [raw]
Subject: Re: [PATCH v1] usb: typec: tcpci: Added few missing TCPCI register definitions

On Tue, Mar 16, 2021 at 03:13:04PM -0700, Badhri Jagan Sridharan wrote:
> This change adds some of the register bit definitions from the TCPCI spec:
> https://www.usb.org/sites/default/files/documents/
> usb-port_controller_specification_rev2.0_v1.0_0.pdf
>
> Signed-off-by: Badhri Jagan Sridharan <[email protected]>

Reviewed-by: Heikki Krogerus <[email protected]>

> ---
> drivers/usb/typec/tcpm/tcpci.h | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/drivers/usb/typec/tcpm/tcpci.h b/drivers/usb/typec/tcpm/tcpci.h
> index 57b6e24e0a0c..2be7a77d400e 100644
> --- a/drivers/usb/typec/tcpm/tcpci.h
> +++ b/drivers/usb/typec/tcpm/tcpci.h
> @@ -47,7 +47,10 @@
>
> #define TCPC_TCPC_CTRL 0x19
> #define TCPC_TCPC_CTRL_ORIENTATION BIT(0)
> +#define PLUG_ORNT_CC1 0
> +#define PLUG_ORNT_CC2 1
> #define TCPC_TCPC_CTRL_BIST_TM BIT(1)
> +#define TCPC_TCPC_CTRL_EN_LK4CONN_ALRT BIT(6)
>
> #define TCPC_EXTENDED_STATUS 0x20
> #define TCPC_EXTENDED_STATUS_VSAFE0V BIT(0)
> @@ -74,21 +77,28 @@
> #define TCPC_POWER_CTRL_VCONN_ENABLE BIT(0)
> #define TCPC_POWER_CTRL_BLEED_DISCHARGE BIT(3)
> #define TCPC_POWER_CTRL_AUTO_DISCHARGE BIT(4)
> +#define TCPC_DIS_VOLT_ALRM BIT(5)
> +#define TCPC_POWER_CTRL_VBUS_VOLT_MON BIT(6)
> #define TCPC_FAST_ROLE_SWAP_EN BIT(7)
>
> #define TCPC_CC_STATUS 0x1d
> #define TCPC_CC_STATUS_TOGGLING BIT(5)
> #define TCPC_CC_STATUS_TERM BIT(4)
> +#define TCPC_CC_STATUS_TERM_RP 0
> +#define TCPC_CC_STATUS_TERM_RD 1
> +#define TCPC_CC_STATE_SRC_OPEN 0
> #define TCPC_CC_STATUS_CC2_SHIFT 2
> #define TCPC_CC_STATUS_CC2_MASK 0x3
> #define TCPC_CC_STATUS_CC1_SHIFT 0
> #define TCPC_CC_STATUS_CC1_MASK 0x3
>
> #define TCPC_POWER_STATUS 0x1e
> +#define TCPC_POWER_STATUS_DBG_ACC_CON BIT(7)
> #define TCPC_POWER_STATUS_UNINIT BIT(6)
> #define TCPC_POWER_STATUS_SOURCING_VBUS BIT(4)
> #define TCPC_POWER_STATUS_VBUS_DET BIT(3)
> #define TCPC_POWER_STATUS_VBUS_PRES BIT(2)
> +#define TCPC_POWER_STATUS_SINKING_VBUS BIT(0)
>
> #define TCPC_FAULT_STATUS 0x1f
>
> @@ -121,6 +131,10 @@
> #define TCPC_RX_DETECT 0x2f
> #define TCPC_RX_DETECT_HARD_RESET BIT(5)
> #define TCPC_RX_DETECT_SOP BIT(0)
> +#define TCPC_RX_DETECT_SOP1 BIT(1)
> +#define TCPC_RX_DETECT_SOP2 BIT(2)
> +#define TCPC_RX_DETECT_DBG1 BIT(3)
> +#define TCPC_RX_DETECT_DBG2 BIT(4)
>
> #define TCPC_RX_BYTE_CNT 0x30
> #define TCPC_RX_BUF_FRAME_TYPE 0x31
> @@ -139,6 +153,8 @@
> #define TCPC_TX_DATA 0x54 /* through 0x6f */
>
> #define TCPC_VBUS_VOLTAGE 0x70
> +#define TCPC_VBUS_VOLTAGE_MASK 0x3ff
> +#define TCPC_VBUS_VOLTAGE_LSB_MV 25
> #define TCPC_VBUS_SINK_DISCONNECT_THRESH 0x72
> #define TCPC_VBUS_SINK_DISCONNECT_THRESH_LSB_MV 25
> #define TCPC_VBUS_SINK_DISCONNECT_THRESH_MAX 0x3ff
> --
> 2.31.0.rc2.261.g7f71774620-goog

--
heikki