* [RFC/PATCH 13/32] usb: gadget: goku_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/goku_udc.c | 10 +---------
drivers/usb/gadget/goku_udc.h | 3 +--
2 files changed, 2 insertions(+), 11 deletions(-)
diff --git a/drivers/usb/gadget/goku_udc.c b/drivers/usb/gadget/goku_udc.c
index 85742d4..b4ea2cf 100644
--- a/drivers/usb/gadget/goku_udc.c
+++ b/drivers/usb/gadget/goku_udc.c
@@ -1716,8 +1716,6 @@ static void goku_remove(struct pci_dev *pdev)
pci_resource_len (pdev, 0));
if (dev->enabled)
pci_disable_device(pdev);
- if (dev->registered)
- device_unregister(&dev->gadget.dev);
pci_set_drvdata(pdev, NULL);
dev->regs = NULL;
@@ -1756,11 +1754,11 @@ static int goku_probe(struct pci_dev *pdev, const struct pci_device_id *id)
dev->gadget.max_speed = USB_SPEED_FULL;
/* the "gadget" abstracts/virtualizes the controller */
- dev_set_name(&dev->gadget.dev, "gadget");
dev->gadget.dev.parent = &pdev->dev;
dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
dev->gadget.dev.release = gadget_release;
dev->gadget.name = driver_name;
+ dev->gadget.register_my_device = true;
/* now all the pci goodies ... */
retval = pci_enable_device(pdev);
@@ -1810,12 +1808,6 @@ static int goku_probe(struct pci_dev *pdev, const struct pci_device_id *id)
create_proc_read_entry(proc_node_name, 0, NULL, udc_proc_read, dev);
#endif
- retval = device_register(&dev->gadget.dev);
- if (retval) {
- put_device(&dev->gadget.dev);
- goto err;
- }
- dev->registered = 1;
retval = usb_add_gadget_udc(&pdev->dev, &dev->gadget);
if (retval)
goto err;
diff --git a/drivers/usb/gadget/goku_udc.h b/drivers/usb/gadget/goku_udc.h
index b4470d2..86d2ada 100644
--- a/drivers/usb/gadget/goku_udc.h
+++ b/drivers/usb/gadget/goku_udc.h
@@ -250,8 +250,7 @@ struct goku_udc {
got_region:1,
req_config:1,
configured:1,
- enabled:1,
- registered:1;
+ enabled:1;
/* pci state used to access those endpoints */
struct pci_dev *pdev;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 12/32] usb: gadget: fusb300_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/fusb300_udc.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/usb/gadget/fusb300_udc.c b/drivers/usb/gadget/fusb300_udc.c
index 8c2372f..798a25b 100644
--- a/drivers/usb/gadget/fusb300_udc.c
+++ b/drivers/usb/gadget/fusb300_udc.c
@@ -1422,15 +1422,12 @@ static int __init fusb300_probe(struct platform_device *pdev)
fusb300->gadget.ops = &fusb300_gadget_ops;
- device_initialize(&fusb300->gadget.dev);
-
- dev_set_name(&fusb300->gadget.dev, "gadget");
-
fusb300->gadget.max_speed = USB_SPEED_HIGH;
fusb300->gadget.dev.parent = &pdev->dev;
fusb300->gadget.dev.dma_mask = pdev->dev.dma_mask;
fusb300->gadget.dev.release = pdev->dev.release;
fusb300->gadget.name = udc_name;
+ fusb300->gadget.register_my_device = true;
fusb300->reg = reg;
ret = request_irq(ires->start, fusb300_irq, IRQF_SHARED,
@@ -1478,19 +1475,10 @@ static int __init fusb300_probe(struct platform_device *pdev)
if (ret)
goto err_add_udc;
- ret = device_add(&fusb300->gadget.dev);
- if (ret) {
- pr_err("device_add error (%d)\n", ret);
- goto err_add_device;
- }
-
dev_info(&pdev->dev, "version %s\n", DRIVER_VERSION);
return 0;
-err_add_device:
- usb_del_gadget_udc(&fusb300->gadget);
-
err_add_udc:
fusb300_free_request(&fusb300->ep[0]->ep, fusb300->ep0_req);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 11/32] usb: gadget: fsl_udc_core: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/fsl_udc_core.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c
index 49642d4..b78b734 100644
--- a/drivers/usb/gadget/fsl_udc_core.c
+++ b/drivers/usb/gadget/fsl_udc_core.c
@@ -2526,9 +2526,7 @@ static int __init fsl_udc_probe(struct platform_device *pdev)
udc_controller->gadget.dev.release = fsl_udc_release;
udc_controller->gadget.dev.parent = &pdev->dev;
udc_controller->gadget.dev.of_node = pdev->dev.of_node;
- ret = device_register(&udc_controller->gadget.dev);
- if (ret < 0)
- goto err_free_irq;
+ udc_controller->gadget.register_my_device = true;
if (!IS_ERR_OR_NULL(udc_controller->transceiver))
udc_controller->gadget.is_otg = 1;
@@ -2561,7 +2559,7 @@ static int __init fsl_udc_probe(struct platform_device *pdev)
DTD_ALIGNMENT, UDC_DMA_BOUNDARY);
if (udc_controller->td_pool == NULL) {
ret = -ENOMEM;
- goto err_unregister;
+ goto err_free_irq;
}
ret = usb_add_gadget_udc(&pdev->dev, &udc_controller->gadget);
@@ -2573,8 +2571,6 @@ static int __init fsl_udc_probe(struct platform_device *pdev)
err_del_udc:
dma_pool_destroy(udc_controller->td_pool);
-err_unregister:
- device_unregister(&udc_controller->gadget.dev);
err_free_irq:
free_irq(udc_controller->irq, udc_controller);
err_iounmap:
@@ -2624,7 +2620,6 @@ static int __exit fsl_udc_remove(struct platform_device *pdev)
if (pdata->operating_mode == FSL_USB2_DR_DEVICE)
release_mem_region(res->start, resource_size(res));
- device_unregister(&udc_controller->gadget.dev);
/* free udc --wait for the release() finished */
wait_for_completion(&done);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 10/32] usb: gadget: fsl_qe_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/fsl_qe_udc.c | 15 ++-------------
1 file changed, 2 insertions(+), 13 deletions(-)
diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c
index ec50f18..08c8432 100644
--- a/drivers/usb/gadget/fsl_qe_udc.c
+++ b/drivers/usb/gadget/fsl_qe_udc.c
@@ -2523,13 +2523,9 @@ static int qe_udc_probe(struct platform_device *ofdev)
/* name: Identifies the controller hardware type. */
udc->gadget.name = driver_name;
-
- device_initialize(&udc->gadget.dev);
-
- dev_set_name(&udc->gadget.dev, "gadget");
-
udc->gadget.dev.release = qe_udc_release;
udc->gadget.dev.parent = &ofdev->dev;
+ udc->gadget.register_my_device = true;
/* initialize qe_ep struct */
for (i = 0; i < USB_MAX_ENDPOINTS ; i++) {
@@ -2592,13 +2588,9 @@ static int qe_udc_probe(struct platform_device *ofdev)
goto err5;
}
- ret = device_add(&udc->gadget.dev);
- if (ret)
- goto err6;
-
ret = usb_add_gadget_udc(&ofdev->dev, &udc->gadget);
if (ret)
- goto err7;
+ goto err6;
dev_set_drvdata(&ofdev->dev, udc);
dev_info(udc->dev,
@@ -2606,8 +2598,6 @@ static int qe_udc_probe(struct platform_device *ofdev)
(udc->soc_type == PORT_QE) ? "QE" : "CPM");
return 0;
-err7:
- device_unregister(&udc->gadget.dev);
err6:
free_irq(udc->usb_irq, udc);
err5:
@@ -2702,7 +2692,6 @@ static int qe_udc_remove(struct platform_device *ofdev)
iounmap(udc->usb_regs);
- device_unregister(&udc->gadget.dev);
/* wait for release() of gadget.dev to free udc */
wait_for_completion(&done);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 09/32] usb: gadget: dummy_hcd: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/dummy_hcd.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c
index 95d584d..8155d4a 100644
--- a/drivers/usb/gadget/dummy_hcd.c
+++ b/drivers/usb/gadget/dummy_hcd.c
@@ -982,16 +982,10 @@ static int dummy_udc_probe(struct platform_device *pdev)
dum->gadget.name = gadget_name;
dum->gadget.ops = &dummy_ops;
dum->gadget.max_speed = USB_SPEED_SUPER;
+ dum->gadget.register_my_device = true;
- dev_set_name(&dum->gadget.dev, "gadget");
dum->gadget.dev.parent = &pdev->dev;
dum->gadget.dev.release = dummy_gadget_release;
- rc = device_register(&dum->gadget.dev);
- if (rc < 0) {
- put_device(&dum->gadget.dev);
- return rc;
- }
-
init_dummy_udc_hw(dum);
rc = usb_add_gadget_udc(&pdev->dev, &dum->gadget);
@@ -1007,7 +1001,6 @@ static int dummy_udc_probe(struct platform_device *pdev)
err_dev:
usb_del_gadget_udc(&dum->gadget);
err_udc:
- device_unregister(&dum->gadget.dev);
return rc;
}
@@ -1018,7 +1011,6 @@ static int dummy_udc_remove(struct platform_device *pdev)
usb_del_gadget_udc(&dum->gadget);
platform_set_drvdata(pdev, NULL);
device_remove_file(&dum->gadget.dev, &dev_attr_function);
- device_unregister(&dum->gadget.dev);
return 0;
}
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 08/32] usb: gadget: bcm63xx_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/bcm63xx_udc.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/usb/gadget/bcm63xx_udc.c b/drivers/usb/gadget/bcm63xx_udc.c
index 47a4993..10b0475 100644
--- a/drivers/usb/gadget/bcm63xx_udc.c
+++ b/drivers/usb/gadget/bcm63xx_udc.c
@@ -2367,13 +2367,13 @@ static int bcm63xx_udc_probe(struct platform_device *pdev)
spin_lock_init(&udc->lock);
INIT_WORK(&udc->ep0_wq, bcm63xx_ep0_process);
- dev_set_name(&udc->gadget.dev, "gadget");
udc->gadget.ops = &bcm63xx_udc_ops;
udc->gadget.name = dev_name(dev);
udc->gadget.dev.parent = dev;
udc->gadget.dev.release = bcm63xx_udc_gadget_release;
udc->gadget.dev.dma_mask = dev->dma_mask;
+ udc->gadget.register_my_device = true;
if (!pd->use_fullspeed && !use_fullspeed)
udc->gadget.max_speed = USB_SPEED_HIGH;
@@ -2413,10 +2413,6 @@ static int bcm63xx_udc_probe(struct platform_device *pdev)
}
}
- rc = device_register(&udc->gadget.dev);
- if (rc)
- goto out_uninit;
-
bcm63xx_udc_init_debugfs(udc);
rc = usb_add_gadget_udc(dev, &udc->gadget);
if (!rc)
@@ -2439,7 +2435,6 @@ static int bcm63xx_udc_remove(struct platform_device *pdev)
bcm63xx_udc_cleanup_debugfs(udc);
usb_del_gadget_udc(&udc->gadget);
- device_unregister(&udc->gadget.dev);
BUG_ON(udc->driver);
platform_set_drvdata(pdev, NULL);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 07/32] usb: gadget: atmel_usba_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/atmel_usba_udc.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c
index a7aed84..f0f9423 100644
--- a/drivers/usb/gadget/atmel_usba_udc.c
+++ b/drivers/usb/gadget/atmel_usba_udc.c
@@ -1900,9 +1900,9 @@ static int __init usba_udc_probe(struct platform_device *pdev)
dev_info(&pdev->dev, "FIFO at 0x%08lx mapped at %p\n",
(unsigned long)fifo->start, udc->fifo);
- device_initialize(&udc->gadget.dev);
udc->gadget.dev.parent = &pdev->dev;
udc->gadget.dev.dma_mask = pdev->dev.dma_mask;
+ udc->gadget.register_my_device = true;
platform_set_drvdata(pdev, udc);
@@ -1962,12 +1962,6 @@ static int __init usba_udc_probe(struct platform_device *pdev)
}
udc->irq = irq;
- ret = device_add(&udc->gadget.dev);
- if (ret) {
- dev_dbg(&pdev->dev, "Could not add gadget: %d\n", ret);
- goto err_device_add;
- }
-
if (gpio_is_valid(pdata->vbus_pin)) {
if (!gpio_request(pdata->vbus_pin, "atmel_usba_udc")) {
udc->vbus_pin = pdata->vbus_pin;
@@ -2007,9 +2001,6 @@ err_add_udc:
gpio_free(udc->vbus_pin);
}
- device_unregister(&udc->gadget.dev);
-
-err_device_add:
free_irq(irq, udc);
err_request_irq:
kfree(usba_ep);
@@ -2053,8 +2044,6 @@ static int __exit usba_udc_remove(struct platform_device *pdev)
clk_put(udc->hclk);
clk_put(udc->pclk);
- device_unregister(&udc->gadget.dev);
-
return 0;
}
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 06/32] usb: gadget: at91_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can remove some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/at91_udc.c | 13 ++-----------
1 file changed, 2 insertions(+), 11 deletions(-)
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
index 10f45fa..177b56d 100644
--- a/drivers/usb/gadget/at91_udc.c
+++ b/drivers/usb/gadget/at91_udc.c
@@ -1726,6 +1726,7 @@ static int at91udc_probe(struct platform_device *pdev)
/* init software state */
udc = &controller;
+ udc->gadget.register_my_device = true;
udc->gadget.dev.parent = dev;
if (pdev->dev.of_node)
at91udc_of_init(udc, pdev->dev.of_node);
@@ -1780,13 +1781,7 @@ static int at91udc_probe(struct platform_device *pdev)
DBG("clocks missing\n");
retval = -ENODEV;
/* NOTE: we "know" here that refcounts on these are NOPs */
- goto fail0b;
- }
-
- retval = device_register(&udc->gadget.dev);
- if (retval < 0) {
- put_device(&udc->gadget.dev);
- goto fail0b;
+ goto fail1;
}
/* don't do anything until we have both gadget driver and VBUS */
@@ -1857,8 +1852,6 @@ fail3:
fail2:
free_irq(udc->udp_irq, udc);
fail1:
- device_unregister(&udc->gadget.dev);
-fail0b:
iounmap(udc->udp_baseaddr);
fail0a:
if (cpu_is_at91rm9200())
@@ -1892,8 +1885,6 @@ static int __exit at91udc_remove(struct platform_device *pdev)
gpio_free(udc->board.vbus_pin);
}
free_irq(udc->udp_irq, udc);
- device_unregister(&udc->gadget.dev);
-
iounmap(udc->udp_baseaddr);
if (cpu_is_at91rm9200())
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 05/32] usb: gadget: amd5536udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we drop some boilerplate
code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/amd5536udc.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/drivers/usb/gadget/amd5536udc.c b/drivers/usb/gadget/amd5536udc.c
index 3dac001..1827d4c 100644
--- a/drivers/usb/gadget/amd5536udc.c
+++ b/drivers/usb/gadget/amd5536udc.c
@@ -3080,7 +3080,6 @@ static void udc_pci_remove(struct pci_dev *pdev)
if (dev->active)
pci_disable_device(pdev);
- device_unregister(&dev->gadget.dev);
pci_set_drvdata(pdev, NULL);
udc_remove(dev);
@@ -3276,6 +3275,7 @@ static int udc_probe(struct udc *dev)
dev->gadget.dev.release = gadget_release;
dev->gadget.name = name;
dev->gadget.max_speed = USB_SPEED_HIGH;
+ dev->gadget.register_my_device = true;
/* init registers, interrupts, ... */
startup_registers(dev);
@@ -3301,13 +3301,6 @@ static int udc_probe(struct udc *dev)
if (retval)
goto finished;
- retval = device_register(&dev->gadget.dev);
- if (retval) {
- usb_del_gadget_udc(&dev->gadget);
- put_device(&dev->gadget.dev);
- goto finished;
- }
-
/* timer init */
init_timer(&udc_timer);
udc_timer.function = udc_timer_function;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 04/32] usb: gadget: omap_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we drop some boilerplate
code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/omap_udc.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c
index d0c87b1..234e82b 100644
--- a/drivers/usb/gadget/omap_udc.c
+++ b/drivers/usb/gadget/omap_udc.c
@@ -2631,10 +2631,9 @@ omap_udc_setup(struct platform_device *odev, struct usb_phy *xceiv)
udc->gadget.max_speed = USB_SPEED_FULL;
udc->gadget.name = driver_name;
- device_initialize(&udc->gadget.dev);
- dev_set_name(&udc->gadget.dev, "gadget");
udc->gadget.dev.release = omap_udc_release;
udc->gadget.dev.parent = &odev->dev;
+ udc->gadget.register_my_device = true;
if (use_dma)
udc->gadget.dev.dma_mask = odev->dev.dma_mask;
@@ -2911,14 +2910,12 @@ bad_on_1710:
}
create_proc_file();
- status = device_add(&udc->gadget.dev);
+ status = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
if (status)
goto cleanup4;
- status = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
- if (!status)
- return status;
- /* If fail, fall through */
+ return 0;
+
cleanup4:
remove_proc_file();
@@ -2989,7 +2986,6 @@ static int omap_udc_remove(struct platform_device *pdev)
release_mem_region(pdev->resource[0].start,
pdev->resource[0].end - pdev->resource[0].start + 1);
- device_unregister(&udc->gadget.dev);
wait_for_completion(&done);
return 0;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 03/32] usb: musb: gadget: let udc-core manage gadget-dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can delete a little
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/musb/musb_gadget.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index 8767874..1c4a8e8 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -1871,12 +1871,11 @@ int musb_gadget_setup(struct musb *musb)
musb->g.speed = USB_SPEED_UNKNOWN;
/* this "gadget" abstracts/virtualizes the controller */
- dev_set_name(&musb->g.dev, "gadget");
musb->g.dev.parent = musb->controller;
musb->g.dev.dma_mask = musb->controller->dma_mask;
musb->g.dev.release = musb_gadget_release;
musb->g.name = musb_driver_name;
-
+ musb->g.register_my_device = true;
musb->g.is_otg = 1;
musb_g_init_endpoints(musb);
@@ -1884,11 +1883,6 @@ int musb_gadget_setup(struct musb *musb)
musb->is_active = 0;
musb_platform_try_idle(musb, 0);
- status = device_register(&musb->g.dev);
- if (status != 0) {
- put_device(&musb->g.dev);
- return status;
- }
status = usb_add_gadget_udc(musb->controller, &musb->g);
if (status)
goto err;
@@ -1903,8 +1897,6 @@ err:
void musb_gadget_cleanup(struct musb *musb)
{
usb_del_gadget_udc(&musb->g);
- if (musb->g.dev.parent)
- device_unregister(&musb->g.dev);
}
/*
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 02/32] usb: dwc3: gadget: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
We don't need to register that device ourselves
if we simply set gadget->register_my_device.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/dwc3/gadget.c | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 2e43b33..7002cf6 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2412,8 +2412,6 @@ int dwc3_gadget_init(struct dwc3 *dwc)
goto err3;
}
- dev_set_name(&dwc->gadget.dev, "gadget");
-
dwc->gadget.ops = &dwc3_gadget_ops;
dwc->gadget.max_speed = USB_SPEED_SUPER;
dwc->gadget.speed = USB_SPEED_UNKNOWN;
@@ -2425,6 +2423,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc->gadget.dev.dma_parms = dwc->dev->dma_parms;
dwc->gadget.dev.dma_mask = dwc->dev->dma_mask;
dwc->gadget.dev.release = dwc3_gadget_release;
+ dwc->gadget.register_my_device = true;
dwc->gadget.name = "dwc3-gadget";
/*
@@ -2480,24 +2479,14 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc3_gadget_usb3_phy_suspend(dwc, false);
}
- ret = device_register(&dwc->gadget.dev);
- if (ret) {
- dev_err(dwc->dev, "failed to register gadget device\n");
- put_device(&dwc->gadget.dev);
- goto err6;
- }
-
ret = usb_add_gadget_udc(dwc->dev, &dwc->gadget);
if (ret) {
dev_err(dwc->dev, "failed to register udc\n");
- goto err7;
+ goto err6;
}
return 0;
-err7:
- device_unregister(&dwc->gadget.dev);
-
err6:
dwc3_writel(dwc->regs, DWC3_DEVTEN, 0x00);
free_irq(irq, dwc);
@@ -2546,6 +2535,4 @@ void dwc3_gadget_exit(struct dwc3 *dwc)
dma_free_coherent(dwc->dev, sizeof(*dwc->ctrl_req),
dwc->ctrl_req, dwc->ctrl_req_addr);
-
- device_unregister(&dwc->gadget.dev);
}
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 01/32] usb: gadget: udc-core: allow udc class register gadget device
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
Currently all UDC drivers are calling
device_register() before calling
usb_add_gadget_udc(). In order to avoid
code duplication, we can allow udc-core.c
register that device.
However that would become a really large patch,
so to cope with the meanwhile and allow us
to write bite-sized patches, we're adding
a flag which will be set by UDC driver once
it removes the code for registering the
gadget device.
Once all are converted, the new flag will
be removed.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/udc-core.c | 23 +++++++++++++++++++----
include/linux/usb/gadget.h | 4 ++++
2 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
index 2a9cd36..9195054 100644
--- a/drivers/usb/gadget/udc-core.c
+++ b/drivers/usb/gadget/udc-core.c
@@ -173,6 +173,14 @@ int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget)
if (!udc)
goto err1;
+ if (gadget->register_my_device) {
+ dev_set_name(&gadget->dev, "gadget");
+
+ ret = device_register(&gadget->dev);
+ if (ret)
+ goto err2;
+ }
+
device_initialize(&udc->dev);
udc->dev.release = usb_udc_release;
udc->dev.class = udc_class;
@@ -180,7 +188,7 @@ int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget)
udc->dev.parent = parent;
ret = dev_set_name(&udc->dev, "%s", kobject_name(&parent->kobj));
if (ret)
- goto err2;
+ goto err3;
udc->gadget = gadget;
@@ -189,18 +197,22 @@ int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget)
ret = device_add(&udc->dev);
if (ret)
- goto err3;
+ goto err4;
mutex_unlock(&udc_lock);
return 0;
-err3:
+
+err4:
list_del(&udc->list);
mutex_unlock(&udc_lock);
-err2:
+err3:
put_device(&udc->dev);
+err2:
+ if (gadget->register_my_device)
+ put_device(&gadget->dev);
err1:
return ret;
}
@@ -254,6 +266,9 @@ found:
kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE);
device_unregister(&udc->dev);
+
+ if (gadget->register_my_device)
+ device_unregister(&gadget->dev);
}
EXPORT_SYMBOL_GPL(usb_del_gadget_udc);
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
index 2e297e8..fcd9ef8 100644
--- a/include/linux/usb/gadget.h
+++ b/include/linux/usb/gadget.h
@@ -494,6 +494,9 @@ struct usb_gadget_ops {
* only supports HNP on a different root port.
* @b_hnp_enable: OTG device feature flag, indicating that the A-Host
* enabled HNP support.
+ * @register_my_device: Flag telling udc-core that UDC driver didn't
+ * register the gadget device to the driver model. Temporary until
+ * all UDC drivers are fixed up properly.
* @name: Identifies the controller hardware type. Used in diagnostics
* and sometimes configuration.
* @dev: Driver model state for this abstract device.
@@ -531,6 +534,7 @@ struct usb_gadget {
unsigned b_hnp_enable:1;
unsigned a_hnp_support:1;
unsigned a_alt_hnp_support:1;
+ unsigned register_my_device:1;
const char *name;
struct device dev;
unsigned out_epnum;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 00/32] usb: refactor gadget->dev registration
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
Hi folks,
Please comment on this series as I need help testing it
on all UDC controllers so we can send it for v3.10 merge
window.
NOTE: I will queue this series for v3.10 merge window, so
make sure to test and comment.
cheers
Felipe Balbi (32):
usb: gadget: udc-core: allow udc class register gadget device
usb: dwc3: gadget: let udc-core manage gadget->dev
usb: musb: gadget: let udc-core manage gadget-dev
usb: gadget: omap_udc: let udc-core manage gadget->dev
usb: gadget: amd5536udc: let udc-core manage gadget->dev
usb: gadget: at91_udc: let udc-core manage gadget->dev
usb: gadget: atmel_usba_udc: let udc-core manage gadget->dev
usb: gadget: bcm63xx_udc: let udc-core manage gadget->dev
usb: gadget: dummy_hcd: let udc-core manage gadget->dev
usb: gadget: fsl_qe_udc: let udc-core manage gadget->dev
usb: gadget: fsl_udc_core: let udc-core manage gadget->dev
usb: gadget: fusb300_udc: let udc-core manage gadget->dev
usb: gadget: goku_udc: let udc-core manage gadget->dev
usb: gadget: imx_udc: let udc-core manage gadget->dev
usb: gadget: lpc32xx_udc: let udc-core manage gadget->dev
usb: gadget: m66592-udc: let udc-core manage gadget->dev
usb: gadget: mv_u3d_core: let udc-core manage gadget->dev
usb: gadget: mv_u3d_core: fix a compile warning
usb: gadget: mv_udc_core: let udc-core manage gadget->dev
usb: gadget: net2272: let udc-core manage gadget->dev
usb: gadget: net2280: let udc-core manage gadget->dev
usb: gadget: pch_udc: let udc-core manage gadget->dev
usb: gadget: r8a66597-udc: let udc-core manage gadget->dev
usb: gadget: s3c-hsotg: let udc-core manage gadget->dev
usb: gadget: s3c-hsudc: let udc-core manage gadget->dev
usb: gadget: s3c2410_udc: let udc-core manage gadget->dev
usb: renesas_usbhs: gadget: let udc-core manage gadget->dev
usb: gadget: pxa25x_udc: let udc-core manage gadget->dev
usb: gadget: pxa27x_udc: let udc-core manage gadget->dev
usb: chipidea: register debugging syfs on our device
usb: chipidea: let udc-core manage gadget->dev
usb: gadget: drop now unnecessary flag
drivers/usb/chipidea/udc.c | 18 ++++--------------
drivers/usb/dwc3/gadget.c | 16 +---------------
drivers/usb/gadget/amd5536udc.c | 8 --------
drivers/usb/gadget/at91_udc.c | 12 +-----------
drivers/usb/gadget/atmel_usba_udc.c | 12 ------------
drivers/usb/gadget/bcm63xx_udc.c | 6 ------
drivers/usb/gadget/dummy_hcd.c | 9 ---------
drivers/usb/gadget/fsl_qe_udc.c | 14 +-------------
drivers/usb/gadget/fsl_udc_core.c | 8 +-------
drivers/usb/gadget/fusb300_udc.c | 13 -------------
drivers/usb/gadget/goku_udc.c | 9 ---------
drivers/usb/gadget/goku_udc.h | 3 +--
drivers/usb/gadget/imx_udc.c | 12 ------------
drivers/usb/gadget/lpc32xx_udc.c | 10 ----------
drivers/usb/gadget/m66592-udc.c | 12 ------------
drivers/usb/gadget/mv_u3d_core.c | 11 +----------
drivers/usb/gadget/mv_udc_core.c | 11 +----------
drivers/usb/gadget/net2272.c | 9 +--------
drivers/usb/gadget/net2280.c | 4 ----
drivers/usb/gadget/omap_udc.c | 11 +++--------
drivers/usb/gadget/pch_udc.c | 9 ---------
drivers/usb/gadget/pxa25x_udc.c | 9 ---------
drivers/usb/gadget/pxa27x_udc.c | 8 --------
drivers/usb/gadget/r8a66597-udc.c | 11 +----------
drivers/usb/gadget/s3c-hsotg.c | 13 -------------
drivers/usb/gadget/s3c-hsudc.c | 10 ----------
drivers/usb/gadget/s3c2410_udc.c | 9 ---------
drivers/usb/gadget/udc-core.c | 20 ++++++++++++++++----
drivers/usb/musb/musb_gadget.c | 9 ---------
drivers/usb/renesas_usbhs/mod_gadget.c | 10 +---------
30 files changed, 33 insertions(+), 283 deletions(-)
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply
* [PATCH v6 04/15] KVM: ARM: Hypervisor initialization
From: Catalin Marinas @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130116175748.29147.91246.stgit@ubuntu>
On Wed, Jan 16, 2013 at 05:57:48PM +0000, Christoffer Dall wrote:
> --- a/arch/arm/include/asm/pgtable-3level-hwdef.h
> +++ b/arch/arm/include/asm/pgtable-3level-hwdef.h
> @@ -32,6 +32,9 @@
> #define PMD_TYPE_SECT (_AT(pmdval_t, 1) << 0)
> #define PMD_BIT4 (_AT(pmdval_t, 0))
> #define PMD_DOMAIN(x) (_AT(pmdval_t, 0))
> +#define PMD_APTABLE_SHIFT (61)
> +#define PMD_APTABLE (_AT(pgdval_t, 3) << PGD_APTABLE_SHIFT)
> +#define PMD_PXNTABLE (_AT(pgdval_t, 1) << 59)
Are these used anywhere? I grep'ed but couldn't find. While I'm fine
with keeping some hardware definitions for future use, I think here you
need to qualify these bits with some suffix to PMD_APTABLE. The APTable
are just a group of bits with different meaning (no write access etc.).
If you want to keep them as group of bits, you can add a _MASK suffix.
> +static int init_hyp_mode(void)
> +{
> + phys_addr_t init_phys_addr;
> + int cpu;
> + int err = 0;
> +
> + /*
> + * Allocate Hyp PGD and setup Hyp identity mapping
> + */
> + err = kvm_mmu_init();
> + if (err)
> + goto out_err;
The comment is a bit misleading since kvm_mmu_init() simply checks
whether hyp_pgd has been initialised. The actual initialisation is done
by the idmap code.
--
Catalin
^ permalink raw reply
* [PATCH 1/2] ARM: dts: omap3-overo: Add support for pwm-leds
From: Peter Ujfalusi @ 2013-01-24 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <51015663.8080109@epfl.ch>
On 01/24/2013 04:42 PM, Florian Vaussard wrote:
> I did it at first, but the led API executes in atomic context, where the
> pwm-twl-led driver uses i2c communication. Setting a trigger will result in a
> kernel panic.
Now that you mentioned it, this might be true.
> I am working on a patch for pwm-twl-led to defer using a workqueue right now.
Great!
The only thing I worry about is the latency we are going to get with the
workqueue.
--
P?ter
^ permalink raw reply
* [PATCH 1/2] ARM: dts: omap3-overo: Add support for pwm-leds
From: Florian Vaussard @ 2013-01-24 15:42 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <5101510C.9050407@ti.com>
Hi Peter,
>>
>> diff --git a/arch/arm/boot/dts/omap3-overo.dtsi b/arch/arm/boot/dts/omap3-overo.dtsi
>> index 89808ce..800be29 100644
>> --- a/arch/arm/boot/dts/omap3-overo.dtsi
>> +++ b/arch/arm/boot/dts/omap3-overo.dtsi
>> @@ -14,12 +14,13 @@
>> /include/ "omap3.dtsi"
>>
>> / {
>> - leds {
>> - compatible = "gpio-leds";
>> + pwmleds {
>> + compatible = "pwm-leds";
>> +
>> overo {
>> label = "overo:blue:COM";
>> - gpios = <&twl_gpio 19 0>;
>> - linux,default-trigger = "mmc0";
>
> You can keep the default trigger for the pwm-leds as well.
> The best way to test this is on top of linux-next which already have the
> leds-pwm DT bindings.
>
I did it at first, but the led API executes in atomic context, where the
pwm-twl-led driver uses i2c communication. Setting a trigger will result
in a kernel panic.
I am working on a patch for pwm-twl-led to defer using a workqueue right
now.
Cheers,
Florian
^ permalink raw reply
* [RFC PATCH 3/6] ARM: kirkwood: nsa310: cleanup includes and unneeded code
From: Jason Cooper @ 2013-01-24 15:41 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130124055052.GA21297@lunn.ch>
On Thu, Jan 24, 2013 at 06:50:52AM +0100, Andrew Lunn wrote:
> On Wed, Jan 23, 2013 at 11:34:21PM +0000, Jason Cooper wrote:
> > Signed-off-by: Jason Cooper <jason@lakedaemon.net>
> > ---
> > arch/arm/mach-kirkwood/board-nsa310.c | 9 +--------
> > 1 file changed, 1 insertion(+), 8 deletions(-)
> >
> > diff --git a/arch/arm/mach-kirkwood/board-nsa310.c b/arch/arm/mach-kirkwood/board-nsa310.c
> > index 1bd328d..0b99533 100644
> > --- a/arch/arm/mach-kirkwood/board-nsa310.c
> > +++ b/arch/arm/mach-kirkwood/board-nsa310.c
> > @@ -10,11 +10,8 @@
> >
> > #include <linux/kernel.h>
> > #include <linux/init.h>
> > -#include <linux/i2c.h>
> > -
> > -#include <asm/mach-types.h>
> > -#include <asm/mach/arch.h>
> > #include <mach/kirkwood.h>
> > +#include <linux/of.h>
> > #include "common.h"
> > #include "mpp.h"
> >
> > @@ -40,11 +37,7 @@ static unsigned int nsa310_mpp_config[] __initdata = {
> >
> > void __init nsa310_init(void)
> > {
> > - u32 dev, rev;
> > -
> > kirkwood_mpp_conf(nsa310_mpp_config);
> > -
> > - kirkwood_pcie_id(&dev, &rev);
> > }
> >
> > static int __init nsa310_pci_init(void)
> > --
> > 1.8.1.1
> >
>
> Hi Jason, Tero
>
> This board is rather unusual for a Kirkwood. It has no Ethernet
> interfaces. Is this correct?
Found this [1], it details some mpp we don't have, and a hwmon
interface. No mention of ethernet, though. :-/ Apparently there's a
buzzer attached to mpp44, fun.
[2] for the nsa320 does initialize it. Apparently auto-negotiation in
borked?
thx,
Jason.
[1] https://github.com/peeter123/linux-nsa320/blob/master/arch/arm/mach-kirkwood/nsa310-setup.c
[2] https://github.com/peeter123/linux-nsa320/blob/master/arch/arm/mach-kirkwood/nsa320-setup.c
^ permalink raw reply
* [PATCH] regulators/db8500: Fix compile failure for drivers/regulator/dbx500-prcmu.c
From: Steven Rostedt @ 2013-01-24 15:29 UTC (permalink / raw)
To: linux-arm-kernel
Building for the snowball board, I ran into this compile failure:
CC drivers/regulator/dbx500-prcmu.o
arm-test.git/drivers/regulator/dbx500-prcmu.c:119:11: error: 'THIS_MODULE' undeclared here (not in a function)
make[3]: *** [drivers/regulator/dbx500-prcmu.o] Error 1
make[2]: *** [drivers/regulator] Error 2
Commit 38e968380 "regulators/db8500: split off shared dbx500 code"
separated out the dbx500 code but did not copy over the required include
to linux/module.h.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
diff --git a/drivers/regulator/dbx500-prcmu.c b/drivers/regulator/dbx500-prcmu.c
index 261f3d2..89bd2fa 100644
--- a/drivers/regulator/dbx500-prcmu.c
+++ b/drivers/regulator/dbx500-prcmu.c
@@ -14,6 +14,7 @@
#include <linux/debugfs.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
+#include <linux/module.h>
#include "dbx500-prcmu.h"
^ permalink raw reply related
* [RESEND PATCH v5 3/7] usb: chipidea: add otg id switch and vbus connect/disconnect detect
From: Alexander Shishkin @ 2013-01-24 15:25 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1358733418-17969-4-git-send-email-peter.chen@freescale.com>
Peter Chen <peter.chen@freescale.com> writes:
> The main design flow is the same with msm otg driver, that is the id and
> vbus interrupt are handled at core driver, others are handled by
> individual drivers.
>
> - At former design, when switch usb role from device->host, it will call
> udc_stop, it will remove the gadget driver, so when switch role
> from host->device, it can't add gadget driver any more.
> At new design, when role switch occurs, the gadget just calls
> usb_gadget_vbus_disconnect/usb_gadget_vbus_connect as well as
> reset controller, it will not free any device/gadget structure
>
> - Add vbus connect and disconnect to core interrupt handler, it can
> notify udc driver by calling usb_gadget_vbus_disconnect
> /usb_gadget_vbus_connect.
>
> Signed-off-by: Peter Chen <peter.chen@freescale.com>
[snip]
> @@ -483,6 +614,17 @@ static int ci_hdrc_probe(struct platform_device *pdev)
> goto rm_wq;
> }
>
> + otgsc = hw_read(ci, OP_OTGSC, ~0);
> + /*
> + * if it is device mode:
> + * - Enable vbus detect
> + * - If it has already connected to host, notify udc
> + */
> + if (ci->role == CI_ROLE_GADGET) {
> + ci_enable_otg_interrupt(ci, OTGSC_BSVIE);
> + ci_handle_vbus_change(ci);
> + }
> +
Actually, this doesn't work, neither here, nor in udc_start(), where the
next patch moves it. If you start in host role with A plug, unplug it,
plug B and load a gadget module, it won't start till you replug the
cable, which is where vbus detection happens. So, when you say that vbus
detection is "fully tested", what is the test case set that you're
using?
One obvious fix is to move ci_handle_vbus_change() call to
ci13xxx_start(), but I need to think about the whole thing a bit more.
Regards,
--
Alex
^ permalink raw reply
* [PATCH 2/2] ARM: dts: omap3-overo: Add audio support
From: Peter Ujfalusi @ 2013-01-24 15:21 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1358963812-19947-3-git-send-email-florian.vaussard@epfl.ch>
Hi,
On 01/23/2013 06:56 PM, Florian Vaussard wrote:
> Add the needed sections to enable audio support on Overo.
Looks fine for me.
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
>
> Signed-off-by: Florian Vaussard <florian.vaussard@epfl.ch>
> ---
> arch/arm/boot/dts/omap3-overo.dtsi | 14 ++++++++++++++
> 1 files changed, 14 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/boot/dts/omap3-overo.dtsi b/arch/arm/boot/dts/omap3-overo.dtsi
> index 800be29..81341fa 100644
> --- a/arch/arm/boot/dts/omap3-overo.dtsi
> +++ b/arch/arm/boot/dts/omap3-overo.dtsi
> @@ -23,6 +23,14 @@
> max-brightness = <127>;
> };
> };
> +
> + sound {
> + compatible = "ti,omap-twl4030";
> + ti,model = "overo";
> +
> + ti,mcbsp = <&mcbsp2>;
> + ti,codec = <&twl_audio>;
> + };
> };
>
> &i2c1 {
> @@ -32,6 +40,12 @@
> reg = <0x48>;
> interrupts = <7>; /* SYS_NIRQ cascaded to intc */
> interrupt-parent = <&intc>;
> +
> + twl_audio: audio {
> + compatible = "ti,twl4030-audio";
> + codec {
> + };
> + };
> };
> };
>
>
--
P?ter
^ permalink raw reply
* [PATCH 1/2] ARM: dts: omap3-overo: Add support for pwm-leds
From: Peter Ujfalusi @ 2013-01-24 15:19 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1358963812-19947-2-git-send-email-florian.vaussard@epfl.ch>
Hi,
On 01/23/2013 06:56 PM, Florian Vaussard wrote:
> Convert the on-board LED connected to the TWL4030 (LEDB) to use
> pwm-leds.
>
> Signed-off-by: Florian Vaussard <florian.vaussard@epfl.ch>
> ---
> arch/arm/boot/dts/omap3-overo.dtsi | 9 +++++----
> 1 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/boot/dts/omap3-overo.dtsi b/arch/arm/boot/dts/omap3-overo.dtsi
> index 89808ce..800be29 100644
> --- a/arch/arm/boot/dts/omap3-overo.dtsi
> +++ b/arch/arm/boot/dts/omap3-overo.dtsi
> @@ -14,12 +14,13 @@
> /include/ "omap3.dtsi"
>
> / {
> - leds {
> - compatible = "gpio-leds";
> + pwmleds {
> + compatible = "pwm-leds";
> +
> overo {
> label = "overo:blue:COM";
> - gpios = <&twl_gpio 19 0>;
> - linux,default-trigger = "mmc0";
You can keep the default trigger for the pwm-leds as well.
The best way to test this is on top of linux-next which already have the
leds-pwm DT bindings.
> + pwms = <&twl_pwmled 1 7812500>;
> + max-brightness = <127>;
> };
> };
> };
>
--
P?ter
^ permalink raw reply
* [kvmarm] [Qemu-devel] [RFC] Virtio-desktop: Virtio-based virtual desktop
From: Alexander Graf @ 2013-01-24 14:52 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CAFEAcA-EM-aj-tMZbfhbLg20OB0iBk7qnTRuYav0PBaRNTsXXw@mail.gmail.com>
On 24.01.2013, at 15:42, Peter Maydell wrote:
> On 24 January 2013 14:38, Alexander Graf <agraf@suse.de> wrote:
>> But check out the QEMU e500 machine. We have a fully device tree
>> based machine type in the kernel. QEMU drives it by generating a
>> device tree for devices it actually exposes on the fly.
>
> The ARM equivalent for that would be mach-virt, I think
> (I forget what the status is but no doubt somebody will
> remind me :-))
>
>> The big advantage we have here is that
>>
>> 1) We don't have to emulate all hardware real hardware emulates
>> 2) We're not restricted to emulate what real hardware emulates. PCI on ARM anyone?
>
> ...do we have an ARM PCI controller of any working kind in
> the kernel? versatilepb's PCI controller doesn't count as
> it is utterly broken :-)
Don't the Marvell chips have PCI? And Tegra? I'm sure there have to be some SoCs with PCI :).
Alex
^ permalink raw reply
* [kvmarm] [Qemu-devel] [RFC] Virtio-desktop: Virtio-based virtual desktop
From: Peter Maydell @ 2013-01-24 14:42 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <EC4021BD-DDB7-4D28-BD79-4B7A809200AE@suse.de>
On 24 January 2013 14:38, Alexander Graf <agraf@suse.de> wrote:
> But check out the QEMU e500 machine. We have a fully device tree
> based machine type in the kernel. QEMU drives it by generating a
> device tree for devices it actually exposes on the fly.
The ARM equivalent for that would be mach-virt, I think
(I forget what the status is but no doubt somebody will
remind me :-))
> The big advantage we have here is that
>
> 1) We don't have to emulate all hardware real hardware emulates
> 2) We're not restricted to emulate what real hardware emulates. PCI on ARM anyone?
...do we have an ARM PCI controller of any working kind in
the kernel? versatilepb's PCI controller doesn't count as
it is utterly broken :-)
-- PMM
^ permalink raw reply
* [PATCH 1/2] misc/at24: Add at24c512b eeprom support
From: Linus Walleij @ 2013-01-24 14:41 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20130123125001.GG16264@pengutronix.de>
On Wed, Jan 23, 2013 at 1:50 PM, Wolfram Sang <w.sang@pengutronix.de> wrote:
> On Wed, Jan 23, 2013 at 01:24:52PM +0100, Linus Walleij wrote:
>> On Wed, Jan 23, 2013 at 7:32 AM, Liu Ying <Ying.Liu@freescale.com> wrote:
>>
>> > This patch adds at24c512b eeprom support.
>> > The datasheet of at24c512b can be found at:
>> > http://www.alldatasheet.com/datasheet-pdf/pdf/
>> > 256958/ATMEL/AT24C512B-TH-B.html
>> >
>> > Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
>>
>> Arnd Bergmann is the misc maintainer, route this by him.
>
> I usually take at24 patches via my I2C tree.
Oh I didn't mean he'd merge it, I meant route it by him as
in "let him have a look at it" :-)
Yours,
Linus Walleij
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox