On Sun 16 Feb 06:14 PST 2020, Dwivedi, Avaneesh Kumar (avani) wrote:Ok
Thank you very much Bjorn for your comments, will address them and post[..]
latest patchset soon.
On 2/4/2020 1:05 AM, Bjorn Andersson wrote:
On Thu 30 Jan 20:43 PST 2020, Avaneesh Kumar Dwivedi wrote:
Yes, we want to maintain alphabetical sort order of the config optionsPlease help to elaborate more, do you mean adding configs in alphabeticaldiff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/KconfigPlease aim for keeping the sort order in this file (ignore QCOM_APR
index d0a73e7..6b7c9d0 100644
--- a/drivers/soc/qcom/Kconfig
+++ b/drivers/soc/qcom/Kconfig
@@ -202,4 +202,16 @@ config QCOM_APR
application processor and QDSP6. APR is
used by audio driver to configure QDSP6
ASM, ADM and AFE modules.
+
+config QCOM_EUD
which obviously is in the wrong place)
order?
in the Kconfig file. Unfortunately I must have missed this as I picked
up QCOM_APR - hence my ask to add you entry further up, even if the
order isn't perfect...
ok.
[..]+ tristate "QTI Embedded USB Debugger (EUD)"
+ depends on ARCH_QCOM
+ 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
The problem I meant was hat if buf is "42", then you will hit theOK+static ssize_t enable_store(struct device *dev,You shouldn't need to initialize this as you're checking the return
+ struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct eud_chip *chip = dev_get_drvdata(dev);
+ int enable = 0;
value of sscanf().
ok+ int ret = 0;If ret is !0 you should probably return that, rather than count...
+
+ if (sscanf(buf, "%du", &enable) != 1)
+ return -EINVAL;
+
+ if (enable == EUD_ENABLE_CMD)
+ ret = enable_eud(chip);
ok+ else if (enable == EUD_DISABLE_CMD)...and then you don't need this check, or initialize ret to 0 above.
+ disable_eud(chip);
+ if (!ret)
will change enable struct member to bool?+ chip->enable = enable;So if I write 42 to "enable" nothing will change in the hardware, but
chip->enable will be 42...
following code path:
int ret = 0;
sscanf(buf, "%du", &enable);
chip->enable = 42;
As enable isn't 1 or 0, neither conditional path is taken, but you still
store the value in chip->enable.
Changing enable to bool won't change this problem, adding an else and
returning -EINVAL; would.
[..]+ return count;
+}
+
+static DEVICE_ATTR_RW(enable);
I don't know how to properly represent this, but I would like the USBi could see that usb role switch has been implemented for c type connector+static int msm_eud_probe(struct platform_device *pdev)Aren't we moving away from extcon in favor of the usb role switching
+{
+ struct eud_chip *chip;
+ struct resource *res;
+ int ret;
+
+ chip = devm_kzalloc(&pdev->dev, sizeof(*chip), GFP_KERNEL);
+ if (!chip)
+ return -ENOMEM;
+
+ chip->dev = &pdev->dev;
+ platform_set_drvdata(pdev, chip);
+
+ chip->extcon = devm_extcon_dev_allocate(&pdev->dev, eud_extcon_cable);
thing?
and that connector is modeled as child of usb controller, but EUD is not a
true connector, it intercepts PHY signals and reroute it to USB controller
as per EUD Command issued by debug appliaction
i am not sure if i need to implement EUD DT node as child of usb controller,
if i do so, as per my understanding EUD driver need to set USB controller
mode(host or device mode) by calling usb role switch API's, please let me
know if my understanding is correct?
guys to chime in before merging something.
Ok.
[..]+ if (IS_ERR(chip->extcon))
+ return PTR_ERR(chip->extcon);
+
You can add additional compatibles, but you can't change this one asEUD h/w IP is Qualcomm IP, As of now this is only hw IP available, if+static const struct of_device_id msm_eud_dt_match[] = {Is this the one and only, past and future, version of the EUD hardware
+ {.compatible = "qcom,msm-eud"},
block? Or do we need this compatible to be more specific?
future version of EUD IP comes, we can modify and add support then?
existing devicetree files must continue to function.
If you have a number of platforms that works with this very same
implementation then you could make the binding require a specific
platform and qcom,msm-eud (although qcom,eud should be enough?) and then
keep the implementation as is.
I.e. dt would say:
compatible = "qcom,sc7180-eud", "qcom,eud";
And driver would match on the latter only, for now.
Regards,
Bjorn