aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm53xx/patches-3.10/111-bcma-register-bcma-as-device-tree-driver.patch
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2013-07-28 22:13:52 +0000
committerHauke Mehrtens <hauke@hauke-m.de>2013-07-28 22:13:52 +0000
commit1377916ea7ac5dcb7690b0a48b785b3a8109fa37 (patch)
tree979754327684910c030ed5ca0441eb54e3203a6a /target/linux/bcm53xx/patches-3.10/111-bcma-register-bcma-as-device-tree-driver.patch
parent333252e493edf46e9bd3a3915a91c67a775e6305 (diff)
downloadupstream-1377916ea7ac5dcb7690b0a48b785b3a8109fa37.tar.gz
upstream-1377916ea7ac5dcb7690b0a48b785b3a8109fa37.tar.bz2
upstream-1377916ea7ac5dcb7690b0a48b785b3a8109fa37.zip
bcm53xx: update patches
This reorders the patchs and adds some new ones. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 37586
Diffstat (limited to 'target/linux/bcm53xx/patches-3.10/111-bcma-register-bcma-as-device-tree-driver.patch')
-rw-r--r--target/linux/bcm53xx/patches-3.10/111-bcma-register-bcma-as-device-tree-driver.patch96
1 files changed, 96 insertions, 0 deletions
diff --git a/target/linux/bcm53xx/patches-3.10/111-bcma-register-bcma-as-device-tree-driver.patch b/target/linux/bcm53xx/patches-3.10/111-bcma-register-bcma-as-device-tree-driver.patch
new file mode 100644
index 0000000000..0077f90379
--- /dev/null
+++ b/target/linux/bcm53xx/patches-3.10/111-bcma-register-bcma-as-device-tree-driver.patch
@@ -0,0 +1,96 @@
+bcma: register bcma as device tree driver
+
+This driver is used by the bcm53xx ARM SoC code.Now it is possible to
+give the address of the chipcommon core in device tree.
+
+Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
+---
+ drivers/bcma/host_soc.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 73 insertions(+)
+
+--- a/drivers/bcma/host_soc.c
++++ b/drivers/bcma/host_soc.c
+@@ -7,6 +7,9 @@
+
+ #include "bcma_private.h"
+ #include "scan.h"
++#include <linux/slab.h>
++#include <linux/module.h>
++#include <linux/of_address.h>
+ #include <linux/bcma/bcma.h>
+ #include <linux/bcma/bcma_soc.h>
+
+@@ -181,3 +184,73 @@ int __init bcma_host_soc_register(struct
+
+ return err;
+ }
++
++#ifdef CONFIG_OF
++static int bcma_host_soc_probe(struct platform_device *pdev)
++{
++ struct device *dev = &pdev->dev;
++ struct device_node *np = dev->of_node;
++ struct bcma_bus *bus;
++ int err;
++
++ /* Alloc */
++ bus = kzalloc(sizeof(*bus), GFP_KERNEL);
++ if (!bus)
++ return -ENOMEM;
++
++ /* Map MMIO */
++ err = -ENOMEM;
++ bus->mmio = of_iomap(np, 0);
++ if (!bus->mmio)
++ goto err_kfree_bus;
++
++ /* Host specific */
++ bus->hosttype = BCMA_HOSTTYPE_SOC;
++ bus->ops = &bcma_host_soc_ops;
++
++
++ /* Register */
++ err = bcma_bus_register(bus);
++ if (err)
++ goto err_unmap_mmio;
++
++ platform_set_drvdata(pdev, bus);
++
++ return err;
++
++err_unmap_mmio:
++ iounmap(bus->mmio);
++err_kfree_bus:
++ kfree(bus);
++ return err;
++}
++
++static int bcma_host_soc_remove(struct platform_device *pdev)
++{
++ struct bcma_bus *bus = platform_get_drvdata(pdev);
++
++ bcma_bus_unregister(bus);
++ iounmap(bus->mmio);
++ kfree(bus);
++ platform_set_drvdata(pdev, NULL);
++
++ return 0;
++}
++
++static const struct of_device_id bcma_host_soc_of_match[] = {
++ { .compatible = "brcm,bus-aix", },
++ {},
++};
++MODULE_DEVICE_TABLE(of, bcma_host_soc_of_match);
++
++static struct platform_driver bcma_host_soc_driver = {
++ .driver = {
++ .name = "bcma-host-soc",
++ .owner = THIS_MODULE,
++ .of_match_table = bcma_host_soc_of_match,
++ },
++ .probe = bcma_host_soc_probe,
++ .remove = bcma_host_soc_remove,
++};
++module_platform_driver(bcma_host_soc_driver);
++#endif /* CONFIG_OF */