* [RFC PATCH 0/2] Update ehci-platform driver to support devicetree
@ 2012-10-20 3:17 Tony Prisk
2012-10-20 3:17 ` [PATCH 1/2] USB: Update EHCI-platform driver to devicetree Tony Prisk
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Tony Prisk @ 2012-10-20 3:17 UTC (permalink / raw)
To: linux-arm-kernel
This patchset updates the ehci-platform.c driver to allow device tree probing.
I have dropped support for the three function pointers (power_on, power_off
and power_suspend). If someone has knowledge of the power sequence functions
that are being implemented, these functions could be replaced (Sorry, I don't
know anything about implementing it).
port_power_(on_off) properties are not supported in DT as Alan Stern indicated
they are going to be removed.
I have included a binding document, but must admit most of the descriptions
for the properties are guessed. Quite likely some of these descriptions are
incorrect and/or need to be clarified.
Tony Prisk (2):
USB: Update EHCI-platform driver to devicetree.
USB: doc: Binding document for ehci-platform driver
.../devicetree/bindings/usb/ehci-platform.txt | 22 +++
drivers/usb/host/ehci-hcd.c | 5 -
drivers/usb/host/ehci-platform.c | 46 ++++++
drivers/usb/host/ehci-vt8500.c | 171 --------------------
4 files changed, 68 insertions(+), 176 deletions(-)
create mode 100644 Documentation/devicetree/bindings/usb/ehci-platform.txt
delete mode 100644 drivers/usb/host/ehci-vt8500.c
--
1.7.9.5
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] USB: Update EHCI-platform driver to devicetree.
2012-10-20 3:17 [RFC PATCH 0/2] Update ehci-platform driver to support devicetree Tony Prisk
@ 2012-10-20 3:17 ` Tony Prisk
2012-10-20 13:01 ` Florian Fainelli
2012-10-20 3:17 ` [PATCH 2/2] USB: doc: Binding document for ehci-platform driver Tony Prisk
2012-10-20 14:34 ` [RFC PATCH 0/2] Update ehci-platform driver to support devicetree Alan Stern
2 siblings, 1 reply; 8+ messages in thread
From: Tony Prisk @ 2012-10-20 3:17 UTC (permalink / raw)
To: linux-arm-kernel
This patch adds devicetree support to the EHCI-platform driver,
and removes the now unneeded ehci-vt8500.c
Existing platform properties are maintained, with the exception
the power_(on/off) and suspend function pointers.
Signed-off-by: Tony Prisk <linux@prisktech.co.nz>
---
drivers/usb/host/ehci-hcd.c | 5 --
drivers/usb/host/ehci-platform.c | 46 ++++++++++
drivers/usb/host/ehci-vt8500.c | 171 --------------------------------------
3 files changed, 46 insertions(+), 176 deletions(-)
delete mode 100644 drivers/usb/host/ehci-vt8500.c
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 6bf6c42..42c8e84 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -1274,11 +1274,6 @@ MODULE_LICENSE ("GPL");
#define PLATFORM_DRIVER cns3xxx_ehci_driver
#endif
-#ifdef CONFIG_ARCH_VT8500
-#include "ehci-vt8500.c"
-#define PLATFORM_DRIVER vt8500_ehci_driver
-#endif
-
#ifdef CONFIG_PLAT_SPEAR
#include "ehci-spear.c"
#define PLATFORM_DRIVER spear_ehci_hcd_driver
diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c
index 764e010..7f962dc 100644
--- a/drivers/usb/host/ehci-platform.c
+++ b/drivers/usb/host/ehci-platform.c
@@ -19,6 +19,7 @@
* Licensed under the GNU/GPL. See COPYING for details.
*/
#include <linux/platform_device.h>
+#include <linux/of.h>
#include <linux/usb/ehci_pdriver.h>
static int ehci_platform_reset(struct usb_hcd *hcd)
@@ -78,14 +79,48 @@ static const struct hc_driver ehci_platform_hc_driver = {
.clear_tt_buffer_complete = ehci_clear_tt_buffer_complete,
};
+static u64 ehci_dma_mask = DMA_BIT_MASK(32);
+
static int __devinit ehci_platform_probe(struct platform_device *dev)
{
struct usb_hcd *hcd;
struct resource *res_mem;
struct usb_ehci_pdata *pdata = dev->dev.platform_data;
+ struct device_node *np = dev->dev.of_node;
int irq;
int err = -ENOMEM;
+ /* Are we being initialized from a DT-probed device? */
+ if (np) {
+ /*
+ * No platform data is being passed, so initalize pdata.
+ * Limitation: we can't support power_on, power_off or
+ * power_suspend function pointers from DT.
+ * TODO: The missing functions could be replaced with
+ * power sequence handlers.
+ */
+ pdata = devm_kzalloc(&dev->dev, sizeof(*pdata), GFP_KERNEL);
+ dev->dev.platform_data = pdata;
+
+ /* Read the optional properties from DT node */
+ of_property_read_u32(np, "caps-offset", &pdata->caps_offset);
+ if (of_property_read_bool(np, "has-tt"))
+ pdata->has_tt = 1;
+ if (of_property_read_bool(np, "has-synopsys-hc-bug"))
+ pdata->has_synopsys_hc_bug = 1;
+ if (of_property_read_bool(np, "big-endian-desc"))
+ pdata->big_endian_desc = 1;
+ if (of_property_read_bool(np, "big-endian-mmio"))
+ pdata->big_endian_mmio = 1;
+
+ /* Right now device-tree probed devices don't get dma_mask set.
+ * Since shared usb code relies on it, set it here for now.
+ * Once we have dma capability bindings this can go away.
+ */
+ if (!dev->dev.dma_mask)
+ dev->dev.dma_mask = &ehci_dma_mask;
+ }
+
if (!pdata) {
WARN_ON(1);
return -ENODEV;
@@ -215,6 +250,16 @@ static const struct platform_device_id ehci_platform_table[] = {
{ "ehci-platform", 0 },
{ }
};
+
+#ifdef CONFIG_OF
+static const struct of_device_id ehci_platform_ids[] = {
+ { .compatible = "ehci-platform", },
+ {}
+};
+
+MODULE_DEVICE_TABLE(of, ehci_platform_ids);
+#endif
+
MODULE_DEVICE_TABLE(platform, ehci_platform_table);
static const struct dev_pm_ops ehci_platform_pm_ops = {
@@ -231,5 +276,6 @@ static struct platform_driver ehci_platform_driver = {
.owner = THIS_MODULE,
.name = "ehci-platform",
.pm = &ehci_platform_pm_ops,
+ .of_match_table = of_match_ptr(ehci_platform_ids),
}
};
diff --git a/drivers/usb/host/ehci-vt8500.c b/drivers/usb/host/ehci-vt8500.c
deleted file mode 100644
index d3c9a3e..0000000
--- a/drivers/usb/host/ehci-vt8500.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * drivers/usb/host/ehci-vt8500.c
- *
- * Copyright (C) 2010 Alexey Charkov <alchark@gmail.com>
- *
- * Based on ehci-au1xxx.c
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- */
-
-#include <linux/of.h>
-#include <linux/platform_device.h>
-
-static int ehci_update_device(struct usb_hcd *hcd, struct usb_device *udev)
-{
- struct ehci_hcd *ehci = hcd_to_ehci(hcd);
- int rc = 0;
-
- if (!udev->parent) /* udev is root hub itself, impossible */
- rc = -1;
- /* we only support lpm device connected to root hub yet */
- if (ehci->has_lpm && !udev->parent->parent) {
- rc = ehci_lpm_set_da(ehci, udev->devnum, udev->portnum);
- if (!rc)
- rc = ehci_lpm_check(ehci, udev->portnum);
- }
- return rc;
-}
-
-static const struct hc_driver vt8500_ehci_hc_driver = {
- .description = hcd_name,
- .product_desc = "VT8500 EHCI",
- .hcd_priv_size = sizeof(struct ehci_hcd),
-
- /*
- * generic hardware linkage
- */
- .irq = ehci_irq,
- .flags = HCD_MEMORY | HCD_USB2,
-
- /*
- * basic lifecycle operations
- */
- .reset = ehci_setup,
- .start = ehci_run,
- .stop = ehci_stop,
- .shutdown = ehci_shutdown,
-
- /*
- * managing i/o requests and associated device resources
- */
- .urb_enqueue = ehci_urb_enqueue,
- .urb_dequeue = ehci_urb_dequeue,
- .endpoint_disable = ehci_endpoint_disable,
- .endpoint_reset = ehci_endpoint_reset,
-
- /*
- * scheduling support
- */
- .get_frame_number = ehci_get_frame,
-
- /*
- * root hub support
- */
- .hub_status_data = ehci_hub_status_data,
- .hub_control = ehci_hub_control,
- .bus_suspend = ehci_bus_suspend,
- .bus_resume = ehci_bus_resume,
- .relinquish_port = ehci_relinquish_port,
- .port_handed_over = ehci_port_handed_over,
-
- /*
- * call back when device connected and addressed
- */
- .update_device = ehci_update_device,
-
- .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete,
-};
-
-static u64 vt8500_ehci_dma_mask = DMA_BIT_MASK(32);
-
-static int vt8500_ehci_drv_probe(struct platform_device *pdev)
-{
- struct usb_hcd *hcd;
- struct ehci_hcd *ehci;
- struct resource *res;
- int ret;
-
- if (usb_disabled())
- return -ENODEV;
-
- /*
- * Right now device-tree probed devices don't get dma_mask set.
- * Since shared usb code relies on it, set it here for now.
- * Once we have dma capability bindings this can go away.
- */
- if (!pdev->dev.dma_mask)
- pdev->dev.dma_mask = &vt8500_ehci_dma_mask;
-
- if (pdev->resource[1].flags != IORESOURCE_IRQ) {
- pr_debug("resource[1] is not IORESOURCE_IRQ");
- return -ENOMEM;
- }
- hcd = usb_create_hcd(&vt8500_ehci_hc_driver, &pdev->dev, "VT8500");
- if (!hcd)
- return -ENOMEM;
-
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- hcd->rsrc_start = res->start;
- hcd->rsrc_len = resource_size(res);
-
- hcd->regs = devm_request_and_ioremap(&pdev->dev, res);
- if (!hcd->regs) {
- pr_debug("ioremap failed");
- ret = -ENOMEM;
- goto err1;
- }
-
- ehci = hcd_to_ehci(hcd);
- ehci->caps = hcd->regs;
-
- ret = usb_add_hcd(hcd, pdev->resource[1].start,
- IRQF_SHARED);
- if (ret == 0) {
- platform_set_drvdata(pdev, hcd);
- return ret;
- }
-
-err1:
- usb_put_hcd(hcd);
- return ret;
-}
-
-static int vt8500_ehci_drv_remove(struct platform_device *pdev)
-{
- struct usb_hcd *hcd = platform_get_drvdata(pdev);
-
- usb_remove_hcd(hcd);
- usb_put_hcd(hcd);
- platform_set_drvdata(pdev, NULL);
-
- return 0;
-}
-
-static const struct of_device_id vt8500_ehci_ids[] = {
- { .compatible = "via,vt8500-ehci", },
- { .compatible = "wm,prizm-ehci", },
- {}
-};
-
-static struct platform_driver vt8500_ehci_driver = {
- .probe = vt8500_ehci_drv_probe,
- .remove = vt8500_ehci_drv_remove,
- .shutdown = usb_hcd_platform_shutdown,
- .driver = {
- .name = "vt8500-ehci",
- .owner = THIS_MODULE,
- .of_match_table = of_match_ptr(vt8500_ehci_ids),
- }
-};
-
-MODULE_ALIAS("platform:vt8500-ehci");
-MODULE_DEVICE_TABLE(of, vt8500_ehci_ids);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] USB: doc: Binding document for ehci-platform driver
2012-10-20 3:17 [RFC PATCH 0/2] Update ehci-platform driver to support devicetree Tony Prisk
2012-10-20 3:17 ` [PATCH 1/2] USB: Update EHCI-platform driver to devicetree Tony Prisk
@ 2012-10-20 3:17 ` Tony Prisk
2012-10-20 14:34 ` [RFC PATCH 0/2] Update ehci-platform driver to support devicetree Alan Stern
2 siblings, 0 replies; 8+ messages in thread
From: Tony Prisk @ 2012-10-20 3:17 UTC (permalink / raw)
To: linux-arm-kernel
Add a binding document for ehci-platform driver.
Signed-off-by: Tony Prisk <linux@prisktech.co.nz>
---
.../devicetree/bindings/usb/ehci-platform.txt | 22 ++++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 Documentation/devicetree/bindings/usb/ehci-platform.txt
diff --git a/Documentation/devicetree/bindings/usb/ehci-platform.txt b/Documentation/devicetree/bindings/usb/ehci-platform.txt
new file mode 100644
index 0000000..faeffe4
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/ehci-platform.txt
@@ -0,0 +1,22 @@
+Generic Platform EHCI Controller
+-----------------------------------------------------
+
+Required properties:
+- compatible : "ehci-platform"
+- reg : Should contain 1 register ranges(address and length)
+- interrupts : EHCI controller interrupt
+
+Optional properties:
+- caps-offset : offset to the capabilities register (default = 0)
+- has-tt : controller has transaction translator(s).
+- big-endian-desc : descriptors are in big-endian format
+- big-endian-mmio : mmio is in big-endian format
+- has-synopsys-hc-bug : controller has the synopsys hc bug
+
+Example:
+ ehci at d8007c00 {
+ compatible = "ehci-platform";
+ reg = <0xd8007c00 0x200>;
+ interrupts = <43>;
+ has-tt;
+ };
--
1.7.9.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 1/2] USB: Update EHCI-platform driver to devicetree.
2012-10-20 3:17 ` [PATCH 1/2] USB: Update EHCI-platform driver to devicetree Tony Prisk
@ 2012-10-20 13:01 ` Florian Fainelli
2012-10-20 14:31 ` Alan Stern
2012-10-20 18:11 ` Tony Prisk
0 siblings, 2 replies; 8+ messages in thread
From: Florian Fainelli @ 2012-10-20 13:01 UTC (permalink / raw)
To: linux-arm-kernel
Hi Tony,
On Saturday 20 October 2012 16:17:32 Tony Prisk wrote:
> This patch adds devicetree support to the EHCI-platform driver,
> and removes the now unneeded ehci-vt8500.c
>
> Existing platform properties are maintained, with the exception
> the power_(on/off) and suspend function pointers.
Ok, so I have recently sent a bit patchset to remove most OHCI/EHCI drivers
that could be converted to the generic variants, series starts here:
1349701906-16481-1-git-send-email-florian at openwrt.org
in this patchset I added a new property to the EHCI platform data:
need_io_watchdog, which needs to be handled too from DT ideally.
Adding device tree bindings is on my TODO after having a generic way
to pass clocks to the ehci/ohci platform drivers, so you are right on time :)
[snip]
> + if (np) {
> + /*
> + * No platform data is being passed, so initalize pdata.
> + * Limitation: we can't support power_on, power_off or
> + * power_suspend function pointers from DT.
> + * TODO: The missing functions could be replaced with
> + * power sequence handlers.
> + */
> + pdata = devm_kzalloc(&dev->dev, sizeof(*pdata), GFP_KERNEL);
Missing allocation failure handling here. And you should free this in
ehci_platform_remove() accordingly.
> + dev->dev.platform_data = pdata;
> +
> + /* Read the optional properties from DT node */
> + of_property_read_u32(np, "caps-offset", &pdata->caps_offset);
> + if (of_property_read_bool(np, "has-tt"))
> + pdata->has_tt = 1;
> + if (of_property_read_bool(np, "has-synopsys-hc-bug"))
> + pdata->has_synopsys_hc_bug = 1;
> + if (of_property_read_bool(np, "big-endian-desc"))
> + pdata->big_endian_desc = 1;
> + if (of_property_read_bool(np, "big-endian-mmio"))
> + pdata->big_endian_mmio = 1;
I would rather we remain compatible with ehci-ppc-of, by handling the
big-endian property you set big_endian_mmiod and big_endian_desc to 1, and
by setting them individually, you get what you expect.
> +
> + /* Right now device-tree probed devices don't get dma_mask set.
> + * Since shared usb code relies on it, set it here for now.
> + * Once we have dma capability bindings this can go away.
> + */
> + if (!dev->dev.dma_mask)
> + dev->dev.dma_mask = &ehci_dma_mask;
> + }
> +
> if (!pdata) {
> WARN_ON(1);
> return -ENODEV;
> @@ -215,6 +250,16 @@ static const struct platform_device_id ehci_platform_table[] = {
> { "ehci-platform", 0 },
> { }
> };
> +
> +#ifdef CONFIG_OF
> +static const struct of_device_id ehci_platform_ids[] = {
> + { .compatible = "ehci-platform", },
> + {}
ehci-platform is very linux-specific, so this should either be:
"linux,ehci-platform", or "usb-ehci", pretty much like the ppc-of ehci driver.
--
Florian
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] USB: Update EHCI-platform driver to devicetree.
2012-10-20 13:01 ` Florian Fainelli
@ 2012-10-20 14:31 ` Alan Stern
2012-10-20 22:20 ` Tony Prisk
2012-10-20 18:11 ` Tony Prisk
1 sibling, 1 reply; 8+ messages in thread
From: Alan Stern @ 2012-10-20 14:31 UTC (permalink / raw)
To: linux-arm-kernel
On Sat, 20 Oct 2012, Florian Fainelli wrote:
> Hi Tony,
>
> On Saturday 20 October 2012 16:17:32 Tony Prisk wrote:
> > This patch adds devicetree support to the EHCI-platform driver,
> > and removes the now unneeded ehci-vt8500.c
> >
> > Existing platform properties are maintained, with the exception
> > the power_(on/off) and suspend function pointers.
>
> Ok, so I have recently sent a bit patchset to remove most OHCI/EHCI drivers
> that could be converted to the generic variants, series starts here:
> 1349701906-16481-1-git-send-email-florian at openwrt.org
>
> in this patchset I added a new property to the EHCI platform data:
> need_io_watchdog, which needs to be handled too from DT ideally.
Actually the new property is "no_io_watchdog". See
http://marc.info/?l=linux-usb&m=134970247511140&w=2
> Adding device tree bindings is on my TODO after having a generic way
> to pass clocks to the ehci/ohci platform drivers, so you are right on time :)
At some point we'll need a way to handle the power_{on,off,suspend}
callbacks. I don't know how that should be done.
Alan Stern
^ permalink raw reply [flat|nested] 8+ messages in thread
* [RFC PATCH 0/2] Update ehci-platform driver to support devicetree
2012-10-20 3:17 [RFC PATCH 0/2] Update ehci-platform driver to support devicetree Tony Prisk
2012-10-20 3:17 ` [PATCH 1/2] USB: Update EHCI-platform driver to devicetree Tony Prisk
2012-10-20 3:17 ` [PATCH 2/2] USB: doc: Binding document for ehci-platform driver Tony Prisk
@ 2012-10-20 14:34 ` Alan Stern
2 siblings, 0 replies; 8+ messages in thread
From: Alan Stern @ 2012-10-20 14:34 UTC (permalink / raw)
To: linux-arm-kernel
On Sat, 20 Oct 2012, Tony Prisk wrote:
> This patchset updates the ehci-platform.c driver to allow device tree probing.
> I have dropped support for the three function pointers (power_on, power_off
> and power_suspend). If someone has knowledge of the power sequence functions
> that are being implemented, these functions could be replaced (Sorry, I don't
> know anything about implementing it).
>
> port_power_(on_off) properties are not supported in DT as Alan Stern indicated
> they are going to be removed.
>
> I have included a binding document, but must admit most of the descriptions
> for the properties are guessed. Quite likely some of these descriptions are
> incorrect and/or need to be clarified.
They look okay to me. Over time we may need to add a few more entries,
as more drivers are converted over to ehci-platform.
> Tony Prisk (2):
> USB: Update EHCI-platform driver to devicetree.
> USB: doc: Binding document for ehci-platform driver
This is very good; thanks for doing the work.
Alan Stern
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] USB: Update EHCI-platform driver to devicetree.
2012-10-20 13:01 ` Florian Fainelli
2012-10-20 14:31 ` Alan Stern
@ 2012-10-20 18:11 ` Tony Prisk
1 sibling, 0 replies; 8+ messages in thread
From: Tony Prisk @ 2012-10-20 18:11 UTC (permalink / raw)
To: linux-arm-kernel
On Sat, 2012-10-20 at 15:01 +0200, Florian Fainelli wrote:
> Hi Tony,
>
> On Saturday 20 October 2012 16:17:32 Tony Prisk wrote:
> > This patch adds devicetree support to the EHCI-platform driver,
> > and removes the now unneeded ehci-vt8500.c
> >
> > Existing platform properties are maintained, with the exception
> > the power_(on/off) and suspend function pointers.
>
> Ok, so I have recently sent a bit patchset to remove most OHCI/EHCI drivers
> that could be converted to the generic variants, series starts here:
> 1349701906-16481-1-git-send-email-florian at openwrt.org
>
> in this patchset I added a new property to the EHCI platform data:
> need_io_watchdog, which needs to be handled too from DT ideally.
>
> Adding device tree bindings is on my TODO after having a generic way
> to pass clocks to the ehci/ohci platform drivers, so you are right on time :)
>
> [snip]
>
> > + if (np) {
> > + /*
> > + * No platform data is being passed, so initalize pdata.
> > + * Limitation: we can't support power_on, power_off or
> > + * power_suspend function pointers from DT.
> > + * TODO: The missing functions could be replaced with
> > + * power sequence handlers.
> > + */
> > + pdata = devm_kzalloc(&dev->dev, sizeof(*pdata), GFP_KERNEL);
>
> Missing allocation failure handling here. And you should free this in
> ehci_platform_remove() accordingly.
Oops - good catch. Will fix.
>
> > + dev->dev.platform_data = pdata;
> > +
> > + /* Read the optional properties from DT node */
> > + of_property_read_u32(np, "caps-offset", &pdata->caps_offset);
> > + if (of_property_read_bool(np, "has-tt"))
> > + pdata->has_tt = 1;
> > + if (of_property_read_bool(np, "has-synopsys-hc-bug"))
> > + pdata->has_synopsys_hc_bug = 1;
> > + if (of_property_read_bool(np, "big-endian-desc"))
> > + pdata->big_endian_desc = 1;
> > + if (of_property_read_bool(np, "big-endian-mmio"))
> > + pdata->big_endian_mmio = 1;
>
> I would rather we remain compatible with ehci-ppc-of, by handling the
> big-endian property you set big_endian_mmiod and big_endian_desc to 1, and
> by setting them individually, you get what you expect.
I noticed in the usb-ehci.txt binding document, it lists
big-endian-regs, big-endian-desc and big-endian so perhaps we should
rename all these to match.
>
> > +
> > + /* Right now device-tree probed devices don't get dma_mask set.
> > + * Since shared usb code relies on it, set it here for now.
> > + * Once we have dma capability bindings this can go away.
> > + */
> > + if (!dev->dev.dma_mask)
> > + dev->dev.dma_mask = &ehci_dma_mask;
> > + }
> > +
> > if (!pdata) {
> > WARN_ON(1);
> > return -ENODEV;
> > @@ -215,6 +250,16 @@ static const struct platform_device_id ehci_platform_table[] = {
> > { "ehci-platform", 0 },
> > { }
> > };
> > +
> > +#ifdef CONFIG_OF
> > +static const struct of_device_id ehci_platform_ids[] = {
> > + { .compatible = "ehci-platform", },
> > + {}
>
> ehci-platform is very linux-specific, so this should either be:
> "linux,ehci-platform", or "usb-ehci", pretty much like the ppc-of ehci driver.
Anyone has any preferences? This change should also be applied to
platform-uhci to keep everything uniform (and ohci-platform eventually
as well).
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] USB: Update EHCI-platform driver to devicetree.
2012-10-20 14:31 ` Alan Stern
@ 2012-10-20 22:20 ` Tony Prisk
0 siblings, 0 replies; 8+ messages in thread
From: Tony Prisk @ 2012-10-20 22:20 UTC (permalink / raw)
To: linux-arm-kernel
On Sat, 2012-10-20 at 10:31 -0400, Alan Stern wrote:
> On Sat, 20 Oct 2012, Florian Fainelli wrote:
>
> > Hi Tony,
> >
> > On Saturday 20 October 2012 16:17:32 Tony Prisk wrote:
> > > This patch adds devicetree support to the EHCI-platform driver,
> > > and removes the now unneeded ehci-vt8500.c
> > >
> > > Existing platform properties are maintained, with the exception
> > > the power_(on/off) and suspend function pointers.
> >
> > Ok, so I have recently sent a bit patchset to remove most OHCI/EHCI drivers
> > that could be converted to the generic variants, series starts here:
> > 1349701906-16481-1-git-send-email-florian at openwrt.org
> >
> > in this patchset I added a new property to the EHCI platform data:
> > need_io_watchdog, which needs to be handled too from DT ideally.
>
> Actually the new property is "no_io_watchdog". See
>
> http://marc.info/?l=linux-usb&m=134970247511140&w=2
>
> > Adding device tree bindings is on my TODO after having a generic way
> > to pass clocks to the ehci/ohci platform drivers, so you are right on time :)
>
> At some point we'll need a way to handle the power_{on,off,suspend}
> callbacks. I don't know how that should be done.
>
> Alan Stern
I actually included a comment in the patch regarding the missing
functions:
> + * No platform data is being passed, so initalize
> pdata.
> + * Limitation: we can't support power_on, power_off or
> + * power_suspend function pointers from DT.
> + * TODO: The missing functions could be replaced with
> + * power sequence handlers.
> + */
I don't know anything about the power sequence code, but have seen some
patches for pwm backlight using it. I don't know if it would allow
everything that's needed, but it seems to have support for voltage
regulators and gpios (among other things).
Regards
Tony P
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2012-10-20 22:20 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-20 3:17 [RFC PATCH 0/2] Update ehci-platform driver to support devicetree Tony Prisk
2012-10-20 3:17 ` [PATCH 1/2] USB: Update EHCI-platform driver to devicetree Tony Prisk
2012-10-20 13:01 ` Florian Fainelli
2012-10-20 14:31 ` Alan Stern
2012-10-20 22:20 ` Tony Prisk
2012-10-20 18:11 ` Tony Prisk
2012-10-20 3:17 ` [PATCH 2/2] USB: doc: Binding document for ehci-platform driver Tony Prisk
2012-10-20 14:34 ` [RFC PATCH 0/2] Update ehci-platform driver to support devicetree Alan Stern
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).