linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Add Embedded USB Debugger (EUD) driver
@ 2018-07-31 18:22 Prakruthi Deepak Heragu
  2018-07-31 18:22 ` [PATCH 1/2] dt-bindings: Documentation for qcom,eud Prakruthi Deepak Heragu
  2018-07-31 18:22 ` [PATCH 2/2] Embedded USB Debugger (EUD) driver Prakruthi Deepak Heragu
  0 siblings, 2 replies; 8+ messages in thread
From: Prakruthi Deepak Heragu @ 2018-07-31 18:22 UTC (permalink / raw)
  To: linux-arm-msm; +Cc: linux-kernel, tsoni, ckadabi, bryanh, psodagud

This is a series of patches that implements a driver for the control
peripheral, EUD (Embedded USB Debugger). The EUD is a mini-USB hub 
implemented on chip to support the USB-based debug and trace capabilities.
Apart from debug capabilities, EUD has a control peripheral. Control 
Peripheral is on when EUD is on and gets signals like USB attach, pet EUD,
charge phone etc. EUD driver listens to events like USB attach or detach 
and charger enable or disable and then notifies the USB driver or PMIC 
driver respectively about these events via EXTCON. At regular intervals, 
the EUD driver receives an interrupt to pet the driver indicating that 
the software is functional.

Prakruthi Deepak Heragu (2):
  dt-bindings: Documentation for qcom,eud
  Embedded USB Debugger (EUD) driver

 .../devicetree/bindings/soc/qcom/qcom,msm-eud.txt  |  32 ++
 drivers/soc/qcom/Kconfig                           |  11 +
 drivers/soc/qcom/Makefile                          |   1 +
 drivers/soc/qcom/eud.c                             | 340 +++++++++++++++++++++
 4 files changed, 384 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt
 create mode 100644 drivers/soc/qcom/eud.c

-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/2] dt-bindings: Documentation for qcom,eud
  2018-07-31 18:22 [PATCH 0/2] Add Embedded USB Debugger (EUD) driver Prakruthi Deepak Heragu
@ 2018-07-31 18:22 ` Prakruthi Deepak Heragu
  2018-08-01 14:04   ` Rob Herring
  2018-07-31 18:22 ` [PATCH 2/2] Embedded USB Debugger (EUD) driver Prakruthi Deepak Heragu
  1 sibling, 1 reply; 8+ messages in thread
From: Prakruthi Deepak Heragu @ 2018-07-31 18:22 UTC (permalink / raw)
  To: linux-arm-msm
  Cc: linux-kernel, tsoni, ckadabi, bryanh, psodagud,
	Satya Durga Srinivasu Prabhala, Prakruthi Deepak Heragu

Documentation for Embedded USB Debugger (EUD) device tree bindings.

Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
Signed-off-by: Prakruthi Deepak Heragu <pheragu@codeaurora.org>
---
 .../devicetree/bindings/soc/qcom/qcom,msm-eud.txt  | 28 ++++++++++++++++++++++
 1 file changed, 28 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt

diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt
new file mode 100644
index 0000000..ea63f1c
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt
@@ -0,0 +1,28 @@
+* Qualcomm Technologies Inc Embedded USB Debugger (EUD)
+
+The EUD (Embedded USB Debugger) is a mini-USB hub implemented
+on chip to support the USB-based debug and trace capabilities.
+
+Required properties:
+
+ - compatible:  Should be "qcom,msm-eud"
+ - interrupts:  Interrupt number
+ - reg: Should be address and size of EUD register space
+
+Driver notifies clients via extcon for VBUS attach/detach
+and charger enable/disable events. Clients registered for these
+notifications should have extcon property set to eud.
+
+An example for EUD device node:
+
+	eud: qcom,msm-eud@88e0000 {
+		compatible = "qcom,msm-eud";
+		interrupts = <GIC_SPI 492 IRQ_TYPE_LEVEL_HIGH>;
+		reg = <0x88e0000 0x4000>;
+	};
+
+An example for EUD extcon client:
+
+	usb3 {
+		extcon = <&eud>;
+	};
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/2] Embedded USB Debugger (EUD) driver
  2018-07-31 18:22 [PATCH 0/2] Add Embedded USB Debugger (EUD) driver Prakruthi Deepak Heragu
  2018-07-31 18:22 ` [PATCH 1/2] dt-bindings: Documentation for qcom,eud Prakruthi Deepak Heragu
@ 2018-07-31 18:22 ` Prakruthi Deepak Heragu
  2018-07-31 19:29   ` Trilok Soni
  1 sibling, 1 reply; 8+ messages in thread
From: Prakruthi Deepak Heragu @ 2018-07-31 18:22 UTC (permalink / raw)
  To: linux-arm-msm
  Cc: linux-kernel, tsoni, ckadabi, bryanh, psodagud,
	Satya Durga Srinivasu Prabhala, Prakruthi Deepak Heragu

Add support for control peripheral of EUD (Embedded USB Debugger) to
listen to events such as USB attach/detach, charger enable/disable, pet
EUD to indicate software is functional.

Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
Signed-off-by: Prakruthi Deepak Heragu <pheragu@codeaurora.org>
---
 drivers/soc/qcom/Kconfig  |  13 ++
 drivers/soc/qcom/Makefile |   1 +
 drivers/soc/qcom/eud.c    | 340 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 354 insertions(+)
 create mode 100644 drivers/soc/qcom/eud.c

diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig
index 5856e79..efd431f 100644
--- a/drivers/soc/qcom/Kconfig
+++ b/drivers/soc/qcom/Kconfig
@@ -136,4 +136,17 @@ config QCOM_APR
           application processor and QDSP6. APR is
           used by audio driver to configure QDSP6
           ASM, ADM and AFE modules.
+
+config QCOM_EUD
+	tristate "QTI Embedded USB Debugger (EUD)"
+	depends on ARCH_QCOM
+	select SERIAL_CORE
+	help
+	  The Embedded USB Debugger (EUD) driver is a driver for the
+	  control peripheral which waits on events like USB attach/detach
+	  and charger enable/disable. The control peripheral further helps
+	  support the USB-based debug and trace capabilities.
+	  This module enables support for Qualcomm Technologies, Inc.
+	  Embedded USB Debugger (EUD).
+	  If unsure, say N.
 endmenu
diff --git a/drivers/soc/qcom/Makefile b/drivers/soc/qcom/Makefile
index 19dcf95..dd4701b 100644
--- a/drivers/soc/qcom/Makefile
+++ b/drivers/soc/qcom/Makefile
@@ -15,3 +15,4 @@ obj-$(CONFIG_QCOM_SMP2P)	+= smp2p.o
 obj-$(CONFIG_QCOM_SMSM)	+= smsm.o
 obj-$(CONFIG_QCOM_WCNSS_CTRL) += wcnss_ctrl.o
 obj-$(CONFIG_QCOM_APR) += apr.o
+obj-$(CONFIG_QCOM_EUD) += eud.o
diff --git a/drivers/soc/qcom/eud.c b/drivers/soc/qcom/eud.c
new file mode 100644
index 0000000..b4c4235
--- /dev/null
+++ b/drivers/soc/qcom/eud.c
@@ -0,0 +1,340 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+#include <linux/interrupt.h>
+#include <linux/err.h>
+#include <linux/platform_device.h>
+#include <linux/extcon.h>
+#include <linux/delay.h>
+#include <linux/sysfs.h>
+#include <linux/io.h>
+#include <linux/bitops.h>
+#include <linux/workqueue.h>
+#include <linux/power_supply.h>
+
+#define EUD_ENABLE_CMD 1
+#define EUD_DISABLE_CMD 0
+
+#define EUD_REG_INT1_EN_MASK	0x0024
+#define EUD_REG_INT_STATUS_1	0x0044
+#define EUD_REG_CTL_OUT_1	0x0074
+#define EUD_REG_VBUS_INT_CLR	0x0080
+#define EUD_REG_CHGR_INT_CLR	0x0084
+#define EUD_REG_CSR_EUD_EN	0x1014
+#define EUD_REG_SW_ATTACH_DET	0x1018
+
+#define EUD_INT_VBUS		BIT(2)
+#define EUD_INT_CHGR		BIT(3)
+#define EUD_INT_SAFE_MODE	BIT(4)
+
+#define EUD_NR			1
+
+struct eud_chip {
+	struct device			*dev;
+	int				eud_irq;
+	unsigned int			extcon_id;
+	unsigned int			int_status;
+	bool				usb_attach;
+	bool				chgr_enable;
+	void __iomem			*eud_reg_base;
+	struct extcon_dev		*extcon;
+	struct work_struct		eud_work;
+};
+
+static const unsigned int eud_extcon_cable[] = {
+	EXTCON_USB,
+	EXTCON_CHG_USB_SDP,
+	EXTCON_NONE,
+};
+
+/*
+ * On the kernel command line specify eud.enable=1 to enable EUD.
+ * EUD is disabled by default.
+ */
+static int enable;
+static bool eud_ready;
+static struct eud_chip *eud_private;
+
+static void enable_eud(struct eud_chip *priv)
+{
+	struct power_supply *usb_psy = NULL;
+	union power_supply_propval pval = {0};
+	union power_supply_propval tval = {0};
+	int ret;
+
+	usb_psy = power_supply_get_by_name("usb");
+	if (!usb_psy)
+		return;
+
+	ret = power_supply_get_property(usb_psy,
+			POWER_SUPPLY_PROP_PRESENT, &pval);
+	if (ret)
+		return;
+
+	ret = power_supply_get_property(usb_psy,
+			POWER_SUPPLY_PROP_REAL_TYPE, &tval);
+	if (ret)
+		return;
+
+	if (pval.intval && (tval.intval == POWER_SUPPLY_TYPE_USB ||
+	    tval.intval == POWER_SUPPLY_TYPE_USB_CDP)) {
+		/* write into CSR to enable EUD */
+		writel_relaxed(BIT(0), priv->eud_reg_base + EUD_REG_CSR_EUD_EN);
+		/* Enable vbus, chgr & safe mode warning interrupts */
+		writel_relaxed(EUD_INT_VBUS | EUD_INT_CHGR | EUD_INT_SAFE_MODE,
+				priv->eud_reg_base + EUD_REG_INT1_EN_MASK);
+
+		/* Ensure Register Writes Complete */
+		wmb();
+
+		/*
+		 * Set the default cable state to usb connect and charger
+		 * enable
+		 */
+		ret = extcon_set_state_sync(priv->extcon, EXTCON_USB, true);
+		if (ret)
+			return;
+		ret = extcon_set_state_sync(priv->extcon,
+				EXTCON_CHG_USB_SDP, true);
+		if (ret)
+			return;
+	} else {
+		return;
+	}
+
+}
+
+static void disable_eud(struct eud_chip *priv)
+{
+	/* write into CSR to disable EUD */
+	writel_relaxed(0, priv->eud_reg_base + EUD_REG_CSR_EUD_EN);
+}
+
+static int param_eud_set(const char *val, const struct kernel_param *kp)
+{
+	int enable = 0;
+
+	if (sscanf(val, "%du", &enable) != 1)
+		return -EINVAL;
+
+	if (enable != EUD_ENABLE_CMD && enable != EUD_DISABLE_CMD)
+		return -EINVAL;
+
+	*((uint *)kp->arg) = enable;
+	if (!eud_ready)
+		return 0;
+
+	if (enable == EUD_ENABLE_CMD)
+		enable_eud(eud_private);
+	else if (enable == EUD_DISABLE_CMD)
+		disable_eud(eud_private);
+
+	return 0;
+}
+
+static const struct kernel_param_ops eud_param_ops = {
+	.set = param_eud_set,
+	.get = param_get_int,
+};
+
+module_param_cb(enable, &eud_param_ops, &enable, 0644);
+
+static void eud_event_notifier(struct work_struct *eud_work)
+{
+	struct eud_chip *chip = container_of(eud_work, struct eud_chip,
+					eud_work);
+	int ret;
+
+	if (chip->int_status == EUD_INT_VBUS) {
+		ret = extcon_set_state_sync(chip->extcon, chip->extcon_id,
+					chip->usb_attach);
+		if (ret)
+			return;
+	} else if (chip->int_status == EUD_INT_CHGR) {
+		ret = extcon_set_state_sync(chip->extcon, chip->extcon_id,
+					chip->chgr_enable);
+		if (ret)
+			return;
+	}
+}
+
+static void usb_attach_detach(struct eud_chip *chip)
+{
+	u32 reg;
+
+	chip->extcon_id = EXTCON_USB;
+	/* read ctl_out_1[4] to find USB attach or detach event */
+	reg = readl_relaxed(chip->eud_reg_base + EUD_REG_CTL_OUT_1);
+	if (reg & BIT(4))
+		chip->usb_attach = true;
+	else
+		chip->usb_attach = false;
+
+	schedule_work(&chip->eud_work);
+
+	/* set and clear vbus_int_clr[0] to clear interrupt */
+	writel_relaxed(BIT(0), chip->eud_reg_base + EUD_REG_VBUS_INT_CLR);
+	/* Ensure Register Writes Complete */
+	wmb();
+	writel_relaxed(0, chip->eud_reg_base + EUD_REG_VBUS_INT_CLR);
+}
+
+static void chgr_enable_disable(struct eud_chip *chip)
+{
+	u32 reg;
+
+	chip->extcon_id = EXTCON_CHG_USB_SDP;
+	/* read ctl_out_1[6] to find charger enable or disable event */
+	reg = readl_relaxed(chip->eud_reg_base + EUD_REG_CTL_OUT_1);
+	if (reg & BIT(6))
+		chip->chgr_enable = true;
+	else
+		chip->chgr_enable = false;
+
+	schedule_work(&chip->eud_work);
+
+	/* set and clear chgr_int_clr[0] to clear interrupt */
+	writel_relaxed(BIT(0), chip->eud_reg_base + EUD_REG_CHGR_INT_CLR);
+	/* Ensure Register Writes Complete */
+	wmb();
+	writel_relaxed(0, chip->eud_reg_base + EUD_REG_CHGR_INT_CLR);
+}
+
+static void pet_eud(struct eud_chip *chip)
+{
+	u32 reg;
+
+	/* read sw_attach_det[0] to find attach/detach event */
+	reg = readl_relaxed(chip->eud_reg_base + EUD_REG_SW_ATTACH_DET);
+	if (reg & BIT(0)) {
+		/* Detach & Attach pet for EUD */
+		writel_relaxed(0, chip->eud_reg_base + EUD_REG_SW_ATTACH_DET);
+		/* Ensure Register Writes Complete */
+		wmb();
+		/* Delay to make sure detach pet is done before attach pet */
+		udelay(100);
+		writel_relaxed(BIT(0), chip->eud_reg_base +
+					EUD_REG_SW_ATTACH_DET);
+		/* Ensure Register Writes Complete */
+		wmb();
+	} else {
+		/* Attach pet for EUD */
+		writel_relaxed(BIT(0), chip->eud_reg_base +
+					EUD_REG_SW_ATTACH_DET);
+		/* Ensure Register Writes Complete */
+		wmb();
+	}
+}
+
+static irqreturn_t handle_eud_irq(int irq, void *data)
+{
+	struct eud_chip *chip = data;
+	u32 reg;
+
+	/* read status register and find out which interrupt triggered */
+	reg = readl_relaxed(chip->eud_reg_base + EUD_REG_INT_STATUS_1);
+	if (reg & EUD_INT_VBUS) {
+		chip->int_status = EUD_INT_VBUS;
+		usb_attach_detach(chip);
+	} else if (reg & EUD_INT_CHGR) {
+		chip->int_status = EUD_INT_CHGR;
+		chgr_enable_disable(chip);
+	} else if (reg & EUD_INT_SAFE_MODE) {
+		pet_eud(chip);
+	} else {
+		return IRQ_NONE;
+	}
+
+	return IRQ_HANDLED;
+}
+
+static int msm_eud_probe(struct platform_device *pdev)
+{
+	struct eud_chip *chip;
+	struct resource *res;
+	int ret;
+
+	chip = devm_kzalloc(&pdev->dev, sizeof(*chip), GFP_KERNEL);
+	if (!chip) {
+		ret = -ENOMEM;
+		return ret;
+	}
+
+	platform_set_drvdata(pdev, chip);
+
+	chip->extcon = devm_extcon_dev_allocate(&pdev->dev, eud_extcon_cable);
+	if (IS_ERR(chip->extcon))
+		return PTR_ERR(chip->extcon);
+
+	ret = devm_extcon_dev_register(&pdev->dev, chip->extcon);
+	if (ret)
+		return ret;
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!res) {
+		ret = -ENOMEM;
+		return ret;
+	}
+
+	chip->eud_reg_base = devm_ioremap_resource(&pdev->dev, res);
+	if (IS_ERR(chip->eud_reg_base))
+		return PTR_ERR(chip->eud_reg_base);
+
+	chip->eud_irq = platform_get_irq(pdev, 0);
+
+	ret = devm_request_irq(&pdev->dev, chip->eud_irq, handle_eud_irq,
+				IRQF_TRIGGER_HIGH, NULL, chip);
+	if (ret)
+		return ret;
+
+	device_init_wakeup(&pdev->dev, true);
+	enable_irq_wake(chip->eud_irq);
+
+	INIT_WORK(&chip->eud_work, eud_event_notifier);
+
+	eud_private = chip;
+	eud_ready = true;
+
+	/* Enable EUD */
+	if (enable)
+		enable_eud(eud_private);
+
+	return 0;
+}
+
+static int msm_eud_remove(struct platform_device *pdev)
+{
+	struct eud_chip *chip = platform_get_drvdata(pdev);
+
+	if (enable)
+		disable_eud(eud_private);
+	device_init_wakeup(&pdev->dev, false);
+	disable_irq_wake(chip->eud_irq);
+	platform_set_drvdata(pdev, NULL);
+
+	return 0;
+}
+
+static const struct of_device_id msm_eud_dt_match[] = {
+	{.compatible = "qcom,msm-eud"},
+	{},
+};
+MODULE_DEVICE_TABLE(of, msm_eud_dt_match);
+
+static struct platform_driver msm_eud_driver = {
+	.probe		= msm_eud_probe,
+	.remove		= msm_eud_remove,
+	.driver		= {
+		.name		= "msm-eud",
+		.of_match_table = msm_eud_dt_match,
+	},
+};
+module_platform_driver(msm_eud_driver);
+
+MODULE_DESCRIPTION("QTI EUD driver");
+MODULE_LICENSE("GPL v2");
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] Embedded USB Debugger (EUD) driver
  2018-07-31 18:22 ` [PATCH 2/2] Embedded USB Debugger (EUD) driver Prakruthi Deepak Heragu
@ 2018-07-31 19:29   ` Trilok Soni
  2018-07-31 19:32     ` pheragu
  0 siblings, 1 reply; 8+ messages in thread
From: Trilok Soni @ 2018-07-31 19:29 UTC (permalink / raw)
  To: Prakruthi Deepak Heragu, linux-arm-msm
  Cc: linux-kernel, ckadabi, bryanh, psodagud, Satya Durga Srinivasu Prabhala

Hi Prakruthi,

On 7/31/2018 11:22 AM, Prakruthi Deepak Heragu wrote:
> Add support for control peripheral of EUD (Embedded USB Debugger) to
> listen to events such as USB attach/detach, charger enable/disable, pet
> EUD to indicate software is functional.

We should CC linux-usb mailing list too?

> +
> +config QCOM_EUD
> +	tristate "QTI Embedded USB Debugger (EUD)"
> +	depends on ARCH_QCOM
> +	select SERIAL_CORE

We don't need to select SERIAL_CORE since there is nothing related to 
serial console in this driver.
-- 
---Trilok Soni
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a 
Linux Foundation Collaborative Project

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] Embedded USB Debugger (EUD) driver
  2018-07-31 19:29   ` Trilok Soni
@ 2018-07-31 19:32     ` pheragu
  0 siblings, 0 replies; 8+ messages in thread
From: pheragu @ 2018-07-31 19:32 UTC (permalink / raw)
  To: Trilok Soni
  Cc: linux-arm-msm, linux-kernel, ckadabi, bryanh, psodagud,
	Satya Durga Srinivasu Prabhala

On 2018-07-31 12:29, Trilok Soni wrote:
> Hi Prakruthi,
> 
> On 7/31/2018 11:22 AM, Prakruthi Deepak Heragu wrote:
>> Add support for control peripheral of EUD (Embedded USB Debugger) to
>> listen to events such as USB attach/detach, charger enable/disable, 
>> pet
>> EUD to indicate software is functional.
> 
> We should CC linux-usb mailing list too?
> 
Sure. Will get the id and do it.
>> +
>> +config QCOM_EUD
>> +	tristate "QTI Embedded USB Debugger (EUD)"
>> +	depends on ARCH_QCOM
>> +	select SERIAL_CORE
> 
> We don't need to select SERIAL_CORE since there is nothing related to
> serial console in this driver.
Yes, I will take it off. Shall I send a version 1?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] dt-bindings: Documentation for qcom,eud
  2018-07-31 18:22 ` [PATCH 1/2] dt-bindings: Documentation for qcom,eud Prakruthi Deepak Heragu
@ 2018-08-01 14:04   ` Rob Herring
  2018-08-02 18:44     ` pheragu
  0 siblings, 1 reply; 8+ messages in thread
From: Rob Herring @ 2018-08-01 14:04 UTC (permalink / raw)
  To: pheragu
  Cc: linux-arm-msm, Linux Kernel Mailing List, tsoni, ckadabi, bryanh,
	psodagud, satyap

On Tue, Jul 31, 2018 at 12:22 PM Prakruthi Deepak Heragu
<pheragu@codeaurora.org> wrote:
>
> Documentation for Embedded USB Debugger (EUD) device tree bindings.

If you want bindings reviewed, send them to the correct list and
people (hint: run get_maintainers.pl).

New bindings should not use extcon.

>
> Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
> Signed-off-by: Prakruthi Deepak Heragu <pheragu@codeaurora.org>
> ---
>  .../devicetree/bindings/soc/qcom/qcom,msm-eud.txt  | 28 ++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt
>
> diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt
> new file mode 100644
> index 0000000..ea63f1c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt
> @@ -0,0 +1,28 @@
> +* Qualcomm Technologies Inc Embedded USB Debugger (EUD)
> +
> +The EUD (Embedded USB Debugger) is a mini-USB hub implemented
> +on chip to support the USB-based debug and trace capabilities.
> +
> +Required properties:
> +
> + - compatible:  Should be "qcom,msm-eud"
> + - interrupts:  Interrupt number
> + - reg: Should be address and size of EUD register space
> +
> +Driver notifies clients via extcon for VBUS attach/detach
> +and charger enable/disable events. Clients registered for these
> +notifications should have extcon property set to eud.
> +
> +An example for EUD device node:
> +
> +       eud: qcom,msm-eud@88e0000 {
> +               compatible = "qcom,msm-eud";
> +               interrupts = <GIC_SPI 492 IRQ_TYPE_LEVEL_HIGH>;
> +               reg = <0x88e0000 0x4000>;
> +       };
> +
> +An example for EUD extcon client:
> +
> +       usb3 {
> +               extcon = <&eud>;
> +       };
> --
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] dt-bindings: Documentation for qcom,eud
  2018-08-01 14:04   ` Rob Herring
@ 2018-08-02 18:44     ` pheragu
  2018-08-02 21:23       ` Rob Herring
  0 siblings, 1 reply; 8+ messages in thread
From: pheragu @ 2018-08-02 18:44 UTC (permalink / raw)
  To: Rob Herring
  Cc: linux-arm-msm, Linux Kernel Mailing List, tsoni, ckadabi, bryanh,
	psodagud, satyap

On 2018-08-01 07:04, Rob Herring wrote:
> On Tue, Jul 31, 2018 at 12:22 PM Prakruthi Deepak Heragu
> <pheragu@codeaurora.org> wrote:
>> 
>> Documentation for Embedded USB Debugger (EUD) device tree bindings.
> 
> If you want bindings reviewed, send them to the correct list and
> people (hint: run get_maintainers.pl).
> 
> New bindings should not use extcon.
> 
Why should we not use extcon? Are there any alternatives which you
would suggest? We were looking at graphs instead of extcon.
>> 
>> Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
>> Signed-off-by: Prakruthi Deepak Heragu <pheragu@codeaurora.org>
>> ---
>>  .../devicetree/bindings/soc/qcom/qcom,msm-eud.txt  | 28 
>> ++++++++++++++++++++++
>>  1 file changed, 28 insertions(+)
>>  create mode 100644 
>> Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt
>> 
>> diff --git 
>> a/Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt 
>> b/Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt
>> new file mode 100644
>> index 0000000..ea63f1c
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/soc/qcom/qcom,msm-eud.txt
>> @@ -0,0 +1,28 @@
>> +* Qualcomm Technologies Inc Embedded USB Debugger (EUD)
>> +
>> +The EUD (Embedded USB Debugger) is a mini-USB hub implemented
>> +on chip to support the USB-based debug and trace capabilities.
>> +
>> +Required properties:
>> +
>> + - compatible:  Should be "qcom,msm-eud"
>> + - interrupts:  Interrupt number
>> + - reg: Should be address and size of EUD register space
>> +
>> +Driver notifies clients via extcon for VBUS attach/detach
>> +and charger enable/disable events. Clients registered for these
>> +notifications should have extcon property set to eud.
>> +
>> +An example for EUD device node:
>> +
>> +       eud: qcom,msm-eud@88e0000 {
>> +               compatible = "qcom,msm-eud";
>> +               interrupts = <GIC_SPI 492 IRQ_TYPE_LEVEL_HIGH>;
>> +               reg = <0x88e0000 0x4000>;
>> +       };
>> +
>> +An example for EUD extcon client:
>> +
>> +       usb3 {
>> +               extcon = <&eud>;
>> +       };
>> --
>> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora 
>> Forum,
>> a Linux Foundation Collaborative Project
>> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] dt-bindings: Documentation for qcom,eud
  2018-08-02 18:44     ` pheragu
@ 2018-08-02 21:23       ` Rob Herring
  0 siblings, 0 replies; 8+ messages in thread
From: Rob Herring @ 2018-08-02 21:23 UTC (permalink / raw)
  To: pheragu
  Cc: linux-arm-msm, linux-kernel, Trilok Soni, ckadabi, bryanh,
	psodagud, satyap

On Thu, Aug 2, 2018 at 12:44 PM <pheragu@codeaurora.org> wrote:
>
> On 2018-08-01 07:04, Rob Herring wrote:
> > On Tue, Jul 31, 2018 at 12:22 PM Prakruthi Deepak Heragu
> > <pheragu@codeaurora.org> wrote:
> >>
> >> Documentation for Embedded USB Debugger (EUD) device tree bindings.
> >
> > If you want bindings reviewed, send them to the correct list and
> > people (hint: run get_maintainers.pl).
> >
> > New bindings should not use extcon.
> >
> Why should we not use extcon?

Because it is poorly designed and has things which are Linux specific.

> Are there any alternatives which you
> would suggest? We were looking at graphs instead of extcon.

There's a usb-connector binding now which does use graphs.

But I'm not really sure what this should look like given this appears
to be both a USB device and a MMIO device.

Rob

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-08-02 21:23 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-31 18:22 [PATCH 0/2] Add Embedded USB Debugger (EUD) driver Prakruthi Deepak Heragu
2018-07-31 18:22 ` [PATCH 1/2] dt-bindings: Documentation for qcom,eud Prakruthi Deepak Heragu
2018-08-01 14:04   ` Rob Herring
2018-08-02 18:44     ` pheragu
2018-08-02 21:23       ` Rob Herring
2018-07-31 18:22 ` [PATCH 2/2] Embedded USB Debugger (EUD) driver Prakruthi Deepak Heragu
2018-07-31 19:29   ` Trilok Soni
2018-07-31 19:32     ` pheragu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).