* [PATCH resend 01/12] usb: typec: add API to get port type and preferred role
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
@ 2017-09-26 4:05 ` Li Jun
2017-09-26 4:05 ` [PATCH resend 02/12] usb: typec: add basic typec properties Li Jun
` (11 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
This patch add 2 APIs to get port type and preferred role from firmware
description.
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
drivers/usb/typec/typec.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
include/linux/usb/typec.h | 2 ++
2 files changed, 47 insertions(+)
diff --git a/drivers/usb/typec/typec.c b/drivers/usb/typec/typec.c
index 24e355b..0c77cc4 100644
--- a/drivers/usb/typec/typec.c
+++ b/drivers/usb/typec/typec.c
@@ -12,6 +12,7 @@
#include <linux/device.h>
#include <linux/module.h>
#include <linux/mutex.h>
+#include <linux/of.h>
#include <linux/slab.h>
#include <linux/usb/typec.h>
@@ -1249,6 +1250,50 @@ void typec_set_pwr_opmode(struct typec_port *port,
}
EXPORT_SYMBOL_GPL(typec_set_pwr_opmode);
+/**
+ * typec_get_port_type - Get the typec port type
+ * @dev: Device to get the property of
+ *
+ * This routine is used by typec hardware driver to read property port type
+ * from the device firmware description.
+ *
+ * Returns typec_port_type if success, otherwise negative error code.
+ */
+int typec_get_port_type(struct device *dev)
+{
+ const char *type_str;
+ int ret;
+
+ ret = device_property_read_string(dev, "port-type", &type_str);
+ if (ret < 0)
+ return ret;
+
+ return match_string(typec_port_types, ARRAY_SIZE(typec_port_types),
+ type_str);
+}
+EXPORT_SYMBOL_GPL(typec_get_port_type);
+
+/**
+ * typec_get_power_role - Get the typec preferred role
+ * @dev: Device to get the property of
+ *
+ * This routine is used by typec hardware driver to read property default role
+ * from the device firmware description.
+ *
+ * Returns typec_role if success, otherwise negative error code.
+ */
+int typec_get_power_role(struct device *dev)
+{
+ const char *power_str;
+ int ret;
+
+ ret = device_property_read_string(dev, "default-role", &power_str);
+ if (ret < 0)
+ return ret;
+
+ return match_string(typec_roles, ARRAY_SIZE(typec_roles), power_str);
+}
+EXPORT_SYMBOL_GPL(typec_get_power_role);
/* --------------------------------------- */
/**
diff --git a/include/linux/usb/typec.h b/include/linux/usb/typec.h
index ffe7487..bfac685 100644
--- a/include/linux/usb/typec.h
+++ b/include/linux/usb/typec.h
@@ -243,5 +243,7 @@ void typec_set_data_role(struct typec_port *port, enum typec_data_role role);
void typec_set_pwr_role(struct typec_port *port, enum typec_role role);
void typec_set_vconn_role(struct typec_port *port, enum typec_role role);
void typec_set_pwr_opmode(struct typec_port *port, enum typec_pwr_opmode mode);
+int typec_get_port_type(struct device *dev);
+int typec_get_power_role(struct device *dev);
#endif /* __LINUX_USB_TYPEC_H */
--
2.6.6
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH resend 02/12] usb: typec: add basic typec properties
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
2017-09-26 4:05 ` [PATCH resend 01/12] usb: typec: add API to get port type and preferred role Li Jun
@ 2017-09-26 4:05 ` Li Jun
[not found] ` <1506398723-19359-3-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
2017-09-26 4:05 ` [PATCH resend 03/12] staging: typec: tcpci: add documentation for tcpci Li Jun
` (10 subsequent siblings)
12 siblings, 1 reply; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
port-type is required for any typec port; default-role is only required
for drp; power source capable needs src-pdos; power sink capable needs
snk-pdos, max-snk-mv, max-snk-ma, op-snk-mw.
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
Documentation/devicetree/bindings/usb/typec.txt | 46 +++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/Documentation/devicetree/bindings/usb/typec.txt b/Documentation/devicetree/bindings/usb/typec.txt
new file mode 100644
index 0000000..36d4467
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/typec.txt
@@ -0,0 +1,46 @@
+Generic typec and power delivery properties
+-------------------------------------------
+
+Required properties:
+- port-type: should be one of "source", "sink" or "dual".
+- default-role: preferred power role if drp, should be "sink" or "source".
+- src-pdos: An array of u32 with each entry providing supported power
+ source data object(PDO), the detailed bit definitions of
+ PDO can be found in "Universal Serial Bus Power Delivery
+ Specification" chapter 6.4.1.2 Source_Capabilities Message,
+ the order of each entry(PDO) should follow the PD spec chapter
+ 6.4.1. Required only for power source and power dual role with
+ power delivery support.
+- snk-pdos: An array of u32 with each entry providing supported power
+ sink data object(PDO), the detailed bit definitions of PDO
+ can be found in "Universal Serial Bus Power Delivery
+ Specification" chapter 6.4.1.3 Sink Capabilities Message,
+ the order of each entry(PDO) should follow the PD spec chapter
+ 6.4.1. Required only for power sink and power dual role with
+ power delivery support.
+- max-snk-mv: The max voltage the sink can support in millivoltage, required
+ only for power sink and power dual role with power delivery
+ support.
+- max-snk-ma: The max current the sink can support in milliampere, required
+ only for power sink and power dual role with power delivery
+ support.
+- op-snk-mw: Sink required operating power in milliwatts, if source offered
+ power is less then it, Capability Mismatch is set, required
+ only for power sink and power dual role with power delivery
+ support.
+
+Example:
+
+ptn5110@50 {
+ compatible = "usb,tcpci";
+ reg = <0x50>;
+ interrupt-parent = <&gpio3>;
+ interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+ port-type = "dual";
+ default-role = "sink";
+ src-pdos = <0x380190c8>;
+ snk-pdos = <0x380190c8 0x3802d0c8>;
+ max-snk-mv = <9000>;
+ max-snk-ma = <1000>;
+ op-snk-mw = <9000>;
+};
--
2.6.6
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH resend 03/12] staging: typec: tcpci: add documentation for tcpci
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
2017-09-26 4:05 ` [PATCH resend 01/12] usb: typec: add API to get port type and preferred role Li Jun
2017-09-26 4:05 ` [PATCH resend 02/12] usb: typec: add basic typec properties Li Jun
@ 2017-09-26 4:05 ` Li Jun
2017-09-26 4:05 ` [PATCH resend 04/12] staging: typec: tcpci: support port config passed via dt Li Jun
` (9 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
TCPCI stands for typec port controller interface, its implementation
has full typec port control with power delivery support, it's a
standard i2c slave with GPIO input as irq interface, detail see spec
"Universal Serial Bus Type-C Port Controller Interface Specification
Revision 1.0, Version 1.1"
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
.../devicetree/bindings/usb/typec-tcpci.txt | 36 ++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/Documentation/devicetree/bindings/usb/typec-tcpci.txt b/Documentation/devicetree/bindings/usb/typec-tcpci.txt
new file mode 100644
index 0000000..9268440
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/typec-tcpci.txt
@@ -0,0 +1,36 @@
+TCPCI(Typec port cotroller interface) binding
+---------------------------------------------
+
+Required properties:
+- compatible: should be "usb,tcpci".
+- reg: the i2c slave address of typec port controller device.
+- interrupt-parent: the phandle to the interrupt controller which provides
+ the interrupt.
+- interrupts: interrupt specification for tcpci alert.
+- port-type: typec port type.
+- default-role: preferred power role if port type is "dual".
+
+Required properties only for power source or drp:
+- src-pdos
+
+Required properties only for power sink or drp:
+- snk-pdos
+- max-snk-mv
+- max-snk-ma
+- op-snk-mw
+
+Example:
+
+ptn5110@50 {
+ compatible = "usb,tcpci";
+ reg = <0x50>;
+ interrupt-parent = <&gpio3>;
+ interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+ port-type = "dual";
+ default-role = "sink";
+ src-pdos = <0x380190c8>;
+ snk-pdos = <0x380190c8 0x3802d0c8>;
+ max-snk-mv = <9000>;
+ max-snk-ma = <1000>;
+ op-snk-mw = <9000>;
+};
--
2.6.6
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH resend 04/12] staging: typec: tcpci: support port config passed via dt
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
` (2 preceding siblings ...)
2017-09-26 4:05 ` [PATCH resend 03/12] staging: typec: tcpci: add documentation for tcpci Li Jun
@ 2017-09-26 4:05 ` Li Jun
2017-09-26 4:05 ` [PATCH resend 05/12] staging: typec: tcpci: register port before request irq Li Jun
` (8 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
User can define the typec port properties in tcpci node to setup
the port config.
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
drivers/staging/typec/tcpci.c | 89 +++++++++++++++++++++++++++++++++++++++----
include/linux/usb/tcpm.h | 6 +--
2 files changed, 85 insertions(+), 10 deletions(-)
diff --git a/drivers/staging/typec/tcpci.c b/drivers/staging/typec/tcpci.c
index 4636804..0119453 100644
--- a/drivers/staging/typec/tcpci.c
+++ b/drivers/staging/typec/tcpci.c
@@ -425,17 +425,92 @@ static const struct regmap_config tcpci_regmap_config = {
.max_register = 0x7F, /* 0x80 .. 0xFF are vendor defined */
};
-static const struct tcpc_config tcpci_tcpc_config = {
- .type = TYPEC_PORT_DFP,
- .default_role = TYPEC_SINK,
-};
-
+/* Populate struct tcpc_config from device-tree */
static int tcpci_parse_config(struct tcpci *tcpci)
{
+ struct tcpc_config *tcfg;
+ int ret = -EINVAL;
+
tcpci->controls_vbus = true; /* XXX */
- /* TODO: Populate struct tcpc_config from ACPI/device-tree */
- tcpci->tcpc.config = &tcpci_tcpc_config;
+ tcpci->tcpc.config = devm_kzalloc(tcpci->dev, sizeof(*tcfg),
+ GFP_KERNEL);
+ if (!tcpci->tcpc.config)
+ return -ENOMEM;
+
+ tcfg = tcpci->tcpc.config;
+
+ /* Get port-type */
+ ret = typec_get_port_type(tcpci->dev);
+ if (ret < 0) {
+ dev_err(tcpci->dev, "typec port type is NOT correct!\n");
+ return ret;
+ }
+ tcfg->type = ret;
+
+ if (tcfg->type == TYPEC_PORT_UFP)
+ goto sink;
+
+ /* Get source PDO */
+ tcfg->nr_src_pdo = device_property_read_u32_array(tcpci->dev,
+ "src-pdos", NULL, 0);
+ if (tcfg->nr_src_pdo <= 0) {
+ dev_err(tcpci->dev, "typec source pdo is missing!\n");
+ return -EINVAL;
+ }
+
+ tcfg->src_pdo = devm_kzalloc(tcpci->dev,
+ sizeof(*tcfg->src_pdo) * tcfg->nr_src_pdo, GFP_KERNEL);
+ if (!tcfg->src_pdo)
+ return -ENOMEM;
+
+ ret = device_property_read_u32_array(tcpci->dev, "src-pdos",
+ tcfg->src_pdo, tcfg->nr_src_pdo);
+ if (ret) {
+ dev_err(tcpci->dev, "Failed to read src pdo!\n");
+ return -EINVAL;
+ }
+
+ if (tcfg->type == TYPEC_PORT_DFP)
+ return 0;
+
+ /* Get the preferred power role for drp */
+ ret = typec_get_power_role(tcpci->dev);
+ if (ret < 0) {
+ dev_err(tcpci->dev, "typec preferred role is wrong!\n");
+ return ret;
+ }
+ tcfg->default_role = ret;
+sink:
+ /* Get sink power capability */
+ tcfg->nr_snk_pdo = device_property_read_u32_array(tcpci->dev,
+ "snk-pdos", NULL, 0);
+ if (tcfg->nr_snk_pdo <= 0) {
+ dev_err(tcpci->dev, "typec sink pdo is missing!\n");
+ return -EINVAL;
+ }
+
+ tcfg->snk_pdo = devm_kzalloc(tcpci->dev,
+ sizeof(*tcfg->snk_pdo) * tcfg->nr_snk_pdo, GFP_KERNEL);
+ if (!tcfg->snk_pdo)
+ return -ENOMEM;
+
+ ret = device_property_read_u32_array(tcpci->dev, "snk-pdos",
+ tcfg->snk_pdo, tcfg->nr_snk_pdo);
+ if (ret) {
+ dev_err(tcpci->dev, "Failed to read sink pdo!\n");
+ return -EINVAL;
+ }
+
+ if (device_property_read_u32(tcpci->dev, "max-snk-mv",
+ &tcfg->max_snk_mv) ||
+ device_property_read_u32(tcpci->dev, "max-snk-ma",
+ &tcfg->max_snk_ma) ||
+ device_property_read_u32(tcpci->dev, "op-snk-mw",
+ &tcfg->operating_snk_mw)) {
+ dev_err(tcpci->dev, "Failed to read sink capability!\n");
+ return -EINVAL;
+ }
return 0;
}
diff --git a/include/linux/usb/tcpm.h b/include/linux/usb/tcpm.h
index 073197f..a67cf77 100644
--- a/include/linux/usb/tcpm.h
+++ b/include/linux/usb/tcpm.h
@@ -76,10 +76,10 @@ enum tcpm_transmit_type {
* @alt_modes: List of supported alternate modes
*/
struct tcpc_config {
- const u32 *src_pdo;
+ u32 *src_pdo;
unsigned int nr_src_pdo;
- const u32 *snk_pdo;
+ u32 *snk_pdo;
unsigned int nr_snk_pdo;
const u32 *snk_vdo;
@@ -154,7 +154,7 @@ struct tcpc_mux_dev {
* @mux: Pointer to multiplexer data
*/
struct tcpc_dev {
- const struct tcpc_config *config;
+ struct tcpc_config *config;
int (*init)(struct tcpc_dev *dev);
int (*get_vbus)(struct tcpc_dev *dev);
--
2.6.6
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH resend 05/12] staging: typec: tcpci: register port before request irq
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
` (3 preceding siblings ...)
2017-09-26 4:05 ` [PATCH resend 04/12] staging: typec: tcpci: support port config passed via dt Li Jun
@ 2017-09-26 4:05 ` Li Jun
2017-09-26 4:05 ` [PATCH resend 06/12] staging: typec: tcpci: enable vbus detection Li Jun
` (7 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
With that we can clear any pending events and the port is registered
so driver can be ready to handle typec events once we request irq.
Signed-off-by: Peter Chen <peter.chen-3arQi8VN3Tc@public.gmane.org>
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
drivers/staging/typec/tcpci.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/staging/typec/tcpci.c b/drivers/staging/typec/tcpci.c
index 0119453..6d608b4 100644
--- a/drivers/staging/typec/tcpci.c
+++ b/drivers/staging/typec/tcpci.c
@@ -552,15 +552,14 @@ static int tcpci_probe(struct i2c_client *client,
/* Disable chip interrupts */
tcpci_write16(tcpci, TCPC_ALERT_MASK, 0);
- err = devm_request_threaded_irq(tcpci->dev, client->irq, NULL,
+ tcpci->port = tcpm_register_port(tcpci->dev, &tcpci->tcpc);
+ if (IS_ERR(tcpci->port))
+ return PTR_ERR(tcpci->port);
+
+ return devm_request_threaded_irq(tcpci->dev, client->irq, NULL,
tcpci_irq,
IRQF_ONESHOT | IRQF_TRIGGER_LOW,
dev_name(tcpci->dev), tcpci);
- if (err < 0)
- return err;
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH resend 06/12] staging: typec: tcpci: enable vbus detection
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
` (4 preceding siblings ...)
2017-09-26 4:05 ` [PATCH resend 05/12] staging: typec: tcpci: register port before request irq Li Jun
@ 2017-09-26 4:05 ` Li Jun
2017-09-26 4:05 ` [PATCH resend 07/12] typec: tcpm: add starting value for drp toggling Li Jun
` (6 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
TCPCI implementation may need SW to enable VBUS detection to generate
power status events.
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
drivers/staging/typec/tcpci.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/drivers/staging/typec/tcpci.c b/drivers/staging/typec/tcpci.c
index 6d608b4..851d026 100644
--- a/drivers/staging/typec/tcpci.c
+++ b/drivers/staging/typec/tcpci.c
@@ -313,6 +313,26 @@ static int tcpci_pd_transmit(struct tcpc_dev *tcpc,
return 0;
}
+static int tcpci_vbus_detect(struct tcpc_dev *tcpc, bool enable)
+{
+ struct tcpci *tcpci = tcpc_to_tcpci(tcpc);
+ int ret;
+
+ if (enable) {
+ ret = regmap_write(tcpci->regmap, TCPC_COMMAND,
+ TCPC_CMD_ENABLE_VBUS_DETECT);
+ if (ret < 0)
+ return ret;
+ } else {
+ ret = regmap_write(tcpci->regmap, TCPC_COMMAND,
+ TCPC_CMD_DISABLE_VBUS_DETECT);
+ if (ret < 0)
+ return ret;
+ }
+
+ return 0;
+}
+
static int tcpci_init(struct tcpc_dev *tcpc)
{
struct tcpci *tcpci = tcpc_to_tcpci(tcpc);
@@ -344,6 +364,9 @@ static int tcpci_init(struct tcpc_dev *tcpc)
if (ret < 0)
return ret;
+ /* Enable Vbus detection */
+ tcpci_vbus_detect(tcpc, true);
+
reg = TCPC_ALERT_TX_SUCCESS | TCPC_ALERT_TX_FAILED |
TCPC_ALERT_TX_DISCARDED | TCPC_ALERT_RX_STATUS |
TCPC_ALERT_RX_HARD_RST | TCPC_ALERT_CC_STATUS;
--
2.6.6
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH resend 07/12] typec: tcpm: add starting value for drp toggling
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
` (5 preceding siblings ...)
2017-09-26 4:05 ` [PATCH resend 06/12] staging: typec: tcpci: enable vbus detection Li Jun
@ 2017-09-26 4:05 ` Li Jun
2017-09-26 4:05 ` [PATCH resend 08/12] staging: typec: tcpci: correct " Li Jun
` (5 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
As DRP port autonomously toggles the Rp/Rd need a start value to
begin with, so add one parameter for it in tcpm_start_drp_toggling.
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
drivers/usb/typec/tcpm.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c
index 8483d3e..38a6223 100644
--- a/drivers/usb/typec/tcpm.c
+++ b/drivers/usb/typec/tcpm.c
@@ -1839,15 +1839,15 @@ static int tcpm_set_charge(struct tcpm_port *port, bool charge)
return 0;
}
-static bool tcpm_start_drp_toggling(struct tcpm_port *port)
+static bool tcpm_start_drp_toggling(struct tcpm_port *port,
+ enum typec_cc_status cc)
{
int ret;
if (port->tcpc->start_drp_toggling &&
port->port_type == TYPEC_PORT_DRP) {
tcpm_log_force(port, "Start DRP toggling");
- ret = port->tcpc->start_drp_toggling(port->tcpc,
- tcpm_rp_cc(port));
+ ret = port->tcpc->start_drp_toggling(port->tcpc, cc);
if (!ret)
return true;
}
@@ -2156,7 +2156,7 @@ static void run_state_machine(struct tcpm_port *port)
if (!port->non_pd_role_swap)
tcpm_swap_complete(port, -ENOTCONN);
tcpm_src_detach(port);
- if (tcpm_start_drp_toggling(port)) {
+ if (tcpm_start_drp_toggling(port, tcpm_rp_cc(port))) {
tcpm_set_state(port, DRP_TOGGLING, 0);
break;
}
@@ -2328,7 +2328,7 @@ static void run_state_machine(struct tcpm_port *port)
if (!port->non_pd_role_swap)
tcpm_swap_complete(port, -ENOTCONN);
tcpm_snk_detach(port);
- if (tcpm_start_drp_toggling(port)) {
+ if (tcpm_start_drp_toggling(port, TYPEC_CC_RD)) {
tcpm_set_state(port, DRP_TOGGLING, 0);
break;
}
--
2.6.6
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH resend 08/12] staging: typec: tcpci: correct drp toggling
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
` (6 preceding siblings ...)
2017-09-26 4:05 ` [PATCH resend 07/12] typec: tcpm: add starting value for drp toggling Li Jun
@ 2017-09-26 4:05 ` Li Jun
2017-09-26 4:05 ` [PATCH resend 09/12] usb: typec: tcpm: only drives the connected cc line when attached Li Jun
` (4 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
Per tcpci spec 4.4.5.2 ROLE_CONTROL description: "the TCPM shall
write B6 (DRP) =1b and the starting value of Rp/Rd to B3..0 (CC1/CC2)
to indicate DRP autonomous toggling mode to the TCPC", so add CC1/CC2
setting, also we should issue COMMAND.Look4Connection to start it.
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
drivers/staging/typec/tcpci.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/drivers/staging/typec/tcpci.c b/drivers/staging/typec/tcpci.c
index 851d026..cea67f9 100644
--- a/drivers/staging/typec/tcpci.c
+++ b/drivers/staging/typec/tcpci.c
@@ -109,6 +109,7 @@ static int tcpci_start_drp_toggling(struct tcpc_dev *tcpc,
{
struct tcpci *tcpci = tcpc_to_tcpci(tcpc);
unsigned int reg = TCPC_ROLE_CTRL_DRP;
+ int ret;
switch (cc) {
default:
@@ -126,7 +127,19 @@ static int tcpci_start_drp_toggling(struct tcpc_dev *tcpc,
break;
}
- return regmap_write(tcpci->regmap, TCPC_ROLE_CTRL, reg);
+ if (cc == TYPEC_CC_RD)
+ reg |= (TCPC_ROLE_CTRL_CC_RD << TCPC_ROLE_CTRL_CC1_SHIFT) |
+ (TCPC_ROLE_CTRL_CC_RD << TCPC_ROLE_CTRL_CC2_SHIFT);
+ else
+ reg |= (TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC1_SHIFT) |
+ (TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC2_SHIFT);
+
+ ret = regmap_write(tcpci->regmap, TCPC_ROLE_CTRL, reg);
+ if (ret < 0)
+ return ret;
+
+ return regmap_write(tcpci->regmap, TCPC_COMMAND,
+ TCPC_CMD_LOOK4CONNECTION);
}
static enum typec_cc_status tcpci_to_typec_cc(unsigned int cc, bool sink)
--
2.6.6
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH resend 09/12] usb: typec: tcpm: only drives the connected cc line when attached
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
` (7 preceding siblings ...)
2017-09-26 4:05 ` [PATCH resend 08/12] staging: typec: tcpci: correct " Li Jun
@ 2017-09-26 4:05 ` Li Jun
[not found] ` <1506398723-19359-10-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
2017-09-26 4:05 ` [PATCH resend 10/12] staging: typec: tcpci: update set_cc for different state Li Jun
` (3 subsequent siblings)
12 siblings, 1 reply; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
As we should only drive connected cc line to be the right state when
attached, and keeps the other one to be open, so update the set_cc
interface for that.
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
drivers/usb/typec/tcpm.c | 12 +++++++++++-
include/linux/usb/tcpm.h | 3 ++-
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c
index 38a6223..c9966ee 100644
--- a/drivers/usb/typec/tcpm.c
+++ b/drivers/usb/typec/tcpm.c
@@ -1857,9 +1857,15 @@ static bool tcpm_start_drp_toggling(struct tcpm_port *port,
static void tcpm_set_cc(struct tcpm_port *port, enum typec_cc_status cc)
{
+ bool attached;
+
tcpm_log(port, "cc:=%d", cc);
port->cc_req = cc;
- port->tcpc->set_cc(port->tcpc, cc);
+ if (port->state == SRC_ATTACHED || port->state == SNK_ATTACHED)
+ attached = true;
+ else
+ attached = false;
+ port->tcpc->set_cc(port->tcpc, cc, attached, port->polarity);
}
static int tcpm_init_vbus(struct tcpm_port *port)
@@ -1913,6 +1919,8 @@ static int tcpm_src_attach(struct tcpm_port *port)
if (ret < 0)
return ret;
+ tcpm_set_cc(port, tcpm_rp_cc(port));
+
ret = tcpm_set_roles(port, true, TYPEC_SOURCE, TYPEC_HOST);
if (ret < 0)
return ret;
@@ -2028,6 +2036,8 @@ static int tcpm_snk_attach(struct tcpm_port *port)
if (ret < 0)
return ret;
+ tcpm_set_cc(port, TYPEC_CC_RD);
+
ret = tcpm_set_roles(port, true, TYPEC_SINK, TYPEC_DEVICE);
if (ret < 0)
return ret;
diff --git a/include/linux/usb/tcpm.h b/include/linux/usb/tcpm.h
index a67cf77..a007e2a1 100644
--- a/include/linux/usb/tcpm.h
+++ b/include/linux/usb/tcpm.h
@@ -159,7 +159,8 @@ struct tcpc_dev {
int (*init)(struct tcpc_dev *dev);
int (*get_vbus)(struct tcpc_dev *dev);
int (*get_current_limit)(struct tcpc_dev *dev);
- int (*set_cc)(struct tcpc_dev *dev, enum typec_cc_status cc);
+ int (*set_cc)(struct tcpc_dev *dev, enum typec_cc_status cc,
+ bool attached, enum typec_cc_polarity polarity);
int (*get_cc)(struct tcpc_dev *dev, enum typec_cc_status *cc1,
enum typec_cc_status *cc2);
int (*set_polarity)(struct tcpc_dev *dev,
--
2.6.6
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH resend 10/12] staging: typec: tcpci: update set_cc for different state
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
` (8 preceding siblings ...)
2017-09-26 4:05 ` [PATCH resend 09/12] usb: typec: tcpm: only drives the connected cc line when attached Li Jun
@ 2017-09-26 4:05 ` Li Jun
2017-09-26 4:05 ` [PATCH resend 11/12] staging: typec: tcpci: Only touch target bit when enable vconn Li Jun
` (2 subsequent siblings)
12 siblings, 0 replies; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
As we should keep the disconnected cc line to be open when attached,
so update the set_cc interface accordingly for it.
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
drivers/staging/typec/tcpci.c | 37 +++++++++++++++++++++----------------
1 file changed, 21 insertions(+), 16 deletions(-)
diff --git a/drivers/staging/typec/tcpci.c b/drivers/staging/typec/tcpci.c
index cea67f9..c7c45da 100644
--- a/drivers/staging/typec/tcpci.c
+++ b/drivers/staging/typec/tcpci.c
@@ -57,10 +57,11 @@ static int tcpci_write16(struct tcpci *tcpci, unsigned int reg, u16 val)
return regmap_raw_write(tcpci->regmap, reg, &val, sizeof(u16));
}
-static int tcpci_set_cc(struct tcpc_dev *tcpc, enum typec_cc_status cc)
+static int tcpci_set_cc(struct tcpc_dev *tcpc, enum typec_cc_status cc,
+ bool attached, enum typec_cc_polarity polarity)
{
struct tcpci *tcpci = tcpc_to_tcpci(tcpc);
- unsigned int reg;
+ unsigned int reg = 0, reg_cc1 = 0, reg_cc2 = 0;
int ret;
switch (cc) {
@@ -69,26 +70,23 @@ static int tcpci_set_cc(struct tcpc_dev *tcpc, enum typec_cc_status cc)
(TCPC_ROLE_CTRL_CC_RA << TCPC_ROLE_CTRL_CC2_SHIFT);
break;
case TYPEC_CC_RD:
- reg = (TCPC_ROLE_CTRL_CC_RD << TCPC_ROLE_CTRL_CC1_SHIFT) |
- (TCPC_ROLE_CTRL_CC_RD << TCPC_ROLE_CTRL_CC2_SHIFT);
+ reg_cc1 = TCPC_ROLE_CTRL_CC_RD << TCPC_ROLE_CTRL_CC1_SHIFT;
+ reg_cc2 = TCPC_ROLE_CTRL_CC_RD << TCPC_ROLE_CTRL_CC2_SHIFT;
break;
case TYPEC_CC_RP_DEF:
- reg = (TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC1_SHIFT) |
- (TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC2_SHIFT) |
- (TCPC_ROLE_CTRL_RP_VAL_DEF <<
- TCPC_ROLE_CTRL_RP_VAL_SHIFT);
+ reg_cc1 = TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC1_SHIFT;
+ reg_cc2 = TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC2_SHIFT;
+ reg = TCPC_ROLE_CTRL_RP_VAL_DEF << TCPC_ROLE_CTRL_RP_VAL_SHIFT;
break;
case TYPEC_CC_RP_1_5:
- reg = (TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC1_SHIFT) |
- (TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC2_SHIFT) |
- (TCPC_ROLE_CTRL_RP_VAL_1_5 <<
- TCPC_ROLE_CTRL_RP_VAL_SHIFT);
+ reg_cc1 = TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC1_SHIFT;
+ reg_cc2 = TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC2_SHIFT;
+ reg = TCPC_ROLE_CTRL_RP_VAL_1_5 << TCPC_ROLE_CTRL_RP_VAL_SHIFT;
break;
case TYPEC_CC_RP_3_0:
- reg = (TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC1_SHIFT) |
- (TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC2_SHIFT) |
- (TCPC_ROLE_CTRL_RP_VAL_3_0 <<
- TCPC_ROLE_CTRL_RP_VAL_SHIFT);
+ reg_cc1 = TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC1_SHIFT;
+ reg_cc2 = TCPC_ROLE_CTRL_CC_RP << TCPC_ROLE_CTRL_CC2_SHIFT;
+ reg = TCPC_ROLE_CTRL_RP_VAL_3_0 << TCPC_ROLE_CTRL_RP_VAL_SHIFT;
break;
case TYPEC_CC_OPEN:
default:
@@ -97,6 +95,13 @@ static int tcpci_set_cc(struct tcpc_dev *tcpc, enum typec_cc_status cc)
break;
}
+ if (!attached)
+ reg |= reg_cc1 | reg_cc2;
+ else if (polarity == TYPEC_POLARITY_CC1)
+ reg |= reg_cc1;
+ else
+ reg |= reg_cc2;
+
ret = regmap_write(tcpci->regmap, TCPC_ROLE_CTRL, reg);
if (ret < 0)
return ret;
--
2.6.6
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH resend 11/12] staging: typec: tcpci: Only touch target bit when enable vconn
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
` (9 preceding siblings ...)
2017-09-26 4:05 ` [PATCH resend 10/12] staging: typec: tcpci: update set_cc for different state Li Jun
@ 2017-09-26 4:05 ` Li Jun
2017-09-26 4:05 ` [PATCH resend 12/12] staging: typec: tcpci: move tcpci driver out of staging Li Jun
2017-10-27 0:42 ` [PATCH resend 00/12] staging: typec: tcpci: move " Guenter Roeck
12 siblings, 0 replies; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
We need regmap_update_bits to avoid touch any other bits when
enable or disable vconn.
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
drivers/staging/typec/tcpci.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/staging/typec/tcpci.c b/drivers/staging/typec/tcpci.c
index c7c45da..293a07c 100644
--- a/drivers/staging/typec/tcpci.c
+++ b/drivers/staging/typec/tcpci.c
@@ -202,14 +202,10 @@ static int tcpci_set_polarity(struct tcpc_dev *tcpc,
static int tcpci_set_vconn(struct tcpc_dev *tcpc, bool enable)
{
struct tcpci *tcpci = tcpc_to_tcpci(tcpc);
- int ret;
- ret = regmap_write(tcpci->regmap, TCPC_POWER_CTRL,
- enable ? TCPC_POWER_CTRL_VCONN_ENABLE : 0);
- if (ret < 0)
- return ret;
-
- return 0;
+ return regmap_update_bits(tcpci->regmap, TCPC_POWER_CTRL,
+ TCPC_POWER_CTRL_VCONN_ENABLE,
+ enable ? TCPC_POWER_CTRL_VCONN_ENABLE : 0);
}
static int tcpci_set_roles(struct tcpc_dev *tcpc, bool attached,
--
2.6.6
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH resend 12/12] staging: typec: tcpci: move tcpci driver out of staging
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
` (10 preceding siblings ...)
2017-09-26 4:05 ` [PATCH resend 11/12] staging: typec: tcpci: Only touch target bit when enable vconn Li Jun
@ 2017-09-26 4:05 ` Li Jun
2017-10-27 0:42 ` [PATCH resend 00/12] staging: typec: tcpci: move " Guenter Roeck
12 siblings, 0 replies; 19+ messages in thread
From: Li Jun @ 2017-09-26 4:05 UTC (permalink / raw)
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
linux-0h96xk9xTtrk1uMJSBkQmQ, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
mark.rutland-5wv7dgnIgG8, heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
jun.li-3arQi8VN3Tc, linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
Move TCPCI(Typec port controller interface) driver out of staging.
Signed-off-by: Li Jun <jun.li-3arQi8VN3Tc@public.gmane.org>
---
drivers/staging/Kconfig | 2 --
drivers/staging/Makefile | 1 -
drivers/staging/typec/Kconfig | 14 --------------
drivers/staging/typec/Makefile | 1 -
drivers/staging/typec/TODO | 5 -----
drivers/usb/typec/Kconfig | 7 +++++++
drivers/usb/typec/Makefile | 1 +
drivers/{staging => usb}/typec/tcpci.c | 0
drivers/{staging => usb}/typec/tcpci.h | 0
9 files changed, 8 insertions(+), 23 deletions(-)
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 5546839..1e3d5d0 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -112,8 +112,6 @@ source "drivers/staging/vc04_services/Kconfig"
source "drivers/staging/ccree/Kconfig"
-source "drivers/staging/typec/Kconfig"
-
source "drivers/staging/vboxvideo/Kconfig"
source "drivers/staging/pi433/Kconfig"
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index 8951c37..4d1ccb4 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -1,7 +1,6 @@
# Makefile for staging directory
obj-y += media/
-obj-y += typec/
obj-$(CONFIG_IRDA) += irda/net/
obj-$(CONFIG_IRDA) += irda/drivers/
obj-$(CONFIG_PRISM2_USB) += wlan-ng/
diff --git a/drivers/staging/typec/Kconfig b/drivers/staging/typec/Kconfig
deleted file mode 100644
index 5359f55..0000000
--- a/drivers/staging/typec/Kconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-menu "USB Power Delivery and Type-C drivers"
-
-if TYPEC_TCPM
-
-config TYPEC_TCPCI
- tristate "Type-C Port Controller Interface driver"
- depends on I2C
- select REGMAP_I2C
- help
- Type-C Port Controller driver for TCPCI-compliant controller.
-
-endif
-
-endmenu
diff --git a/drivers/staging/typec/Makefile b/drivers/staging/typec/Makefile
deleted file mode 100644
index 53d649a..0000000
--- a/drivers/staging/typec/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-obj-$(CONFIG_TYPEC_TCPCI) += tcpci.o
diff --git a/drivers/staging/typec/TODO b/drivers/staging/typec/TODO
deleted file mode 100644
index 53fe2f7..0000000
--- a/drivers/staging/typec/TODO
+++ /dev/null
@@ -1,5 +0,0 @@
-tcpci:
-- Test with real hardware
-
-Please send patches to Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org> and copy
-Heikki Krogerus <heikki.krogerus-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>.
diff --git a/drivers/usb/typec/Kconfig b/drivers/usb/typec/Kconfig
index 819c0ed..33b04c4 100644
--- a/drivers/usb/typec/Kconfig
+++ b/drivers/usb/typec/Kconfig
@@ -14,6 +14,13 @@ config TYPEC_TCPM
if TYPEC_TCPM
+config TYPEC_TCPCI
+ tristate "Type-C Port Controller Interface driver"
+ depends on I2C
+ select REGMAP_I2C
+ help
+ Type-C Port Controller driver for TCPCI-compliant controller.
+
source "drivers/usb/typec/fusb302/Kconfig"
endif
diff --git a/drivers/usb/typec/Makefile b/drivers/usb/typec/Makefile
index b77688c..c2fbf17 100644
--- a/drivers/usb/typec/Makefile
+++ b/drivers/usb/typec/Makefile
@@ -3,3 +3,4 @@ obj-$(CONFIG_TYPEC_TCPM) += tcpm.o
obj-y += fusb302/
obj-$(CONFIG_TYPEC_WCOVE) += typec_wcove.o
obj-$(CONFIG_TYPEC_UCSI) += ucsi/
+obj-$(CONFIG_TYPEC_TCPCI) += tcpci.o
diff --git a/drivers/staging/typec/tcpci.c b/drivers/usb/typec/tcpci.c
similarity index 100%
rename from drivers/staging/typec/tcpci.c
rename to drivers/usb/typec/tcpci.c
diff --git a/drivers/staging/typec/tcpci.h b/drivers/usb/typec/tcpci.h
similarity index 100%
rename from drivers/staging/typec/tcpci.h
rename to drivers/usb/typec/tcpci.h
--
2.6.6
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH resend 00/12] staging: typec: tcpci: move out of staging
[not found] ` <1506398723-19359-1-git-send-email-jun.li-3arQi8VN3Tc@public.gmane.org>
` (11 preceding siblings ...)
2017-09-26 4:05 ` [PATCH resend 12/12] staging: typec: tcpci: move tcpci driver out of staging Li Jun
@ 2017-10-27 0:42 ` Guenter Roeck
[not found] ` <96d37f9b-f04d-f923-ec09-b25fd62a90be-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
12 siblings, 1 reply; 19+ messages in thread
From: Guenter Roeck @ 2017-10-27 0:42 UTC (permalink / raw)
To: Li Jun, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A, mark.rutland-5wv7dgnIgG8,
heikki.krogerus-VuQAYsv1563Yd54FQh9/CA
Cc: yueyao-hpIqsD4AKlfQT0dZR+AlfA, o_leveque-1tsiiZ//OF9QFI55V6+gNQ,
peter.chen-3arQi8VN3Tc, aisheng.dong-3arQi8VN3Tc,
linux-usb-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA
What happened with this series ? Did we all drop the ball ?
Guenter
On 09/25/2017 09:05 PM, Li Jun wrote:
> This patch set attempts to move the tcpci driver out of staging by fix
> some tcpci driver issues and verified on NXP PTN5110, which is a standard
> tcpci typec port controller device with power delivery support, tested
> power source and sink with drp config.
>
> Li Jun (12):
> usb: typec: add API to get port type and preferred role
> usb: typec: add basic typec properties
> staging: typec: tcpci: add documentation for tcpci
> staging: typec: tcpci: support port config passed via dt
> staging: typec: tcpci: register port before request irq
> staging: typec: tcpci: enable vbus detection
> typec: tcpm: add starting value for drp toggling
> staging: typec: tcpci: correct drp toggling
> usb: typec: tcpm: only drives the connected cc line when attached
> staging: typec: tcpci: update set_cc for different state
> staging: typec: tcpci: Only touch target bit when enable vconn
> staging: typec: tcpci: move tcpci driver out of staging
>
> .../devicetree/bindings/usb/typec-tcpci.txt | 36 ++++
> Documentation/devicetree/bindings/usb/typec.txt | 46 +++++
> drivers/staging/Kconfig | 2 -
> drivers/staging/Makefile | 1 -
> drivers/staging/typec/Kconfig | 14 --
> drivers/staging/typec/Makefile | 1 -
> drivers/staging/typec/TODO | 5 -
> drivers/usb/typec/Kconfig | 7 +
> drivers/usb/typec/Makefile | 1 +
> drivers/{staging => usb}/typec/tcpci.c | 185 ++++++++++++++++-----
> drivers/{staging => usb}/typec/tcpci.h | 0
> drivers/usb/typec/tcpm.c | 22 ++-
> drivers/usb/typec/typec.c | 45 +++++
> include/linux/usb/tcpm.h | 9 +-
> include/linux/usb/typec.h | 2 +
> 15 files changed, 306 insertions(+), 70 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/usb/typec-tcpci.txt
> create mode 100644 Documentation/devicetree/bindings/usb/typec.txt
> delete mode 100644 drivers/staging/typec/Kconfig
> delete mode 100644 drivers/staging/typec/Makefile
> delete mode 100644 drivers/staging/typec/TODO
> rename drivers/{staging => usb}/typec/tcpci.c (73%)
> rename drivers/{staging => usb}/typec/tcpci.h (100%)
>
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 19+ messages in thread