aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/pinctrl-nomadik.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pinctrl/pinctrl-nomadik.c')
-rw-r--r--drivers/pinctrl/pinctrl-nomadik.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/pinctrl/pinctrl-nomadik.c b/drivers/pinctrl/pinctrl-nomadik.c
index b8e01c3eaa95..b26395d16347 100644
--- a/drivers/pinctrl/pinctrl-nomadik.c
+++ b/drivers/pinctrl/pinctrl-nomadik.c
@@ -24,6 +24,7 @@
24#include <linux/irq.h> 24#include <linux/irq.h>
25#include <linux/irqdomain.h> 25#include <linux/irqdomain.h>
26#include <linux/slab.h> 26#include <linux/slab.h>
27#include <linux/of_device.h>
27#include <linux/pinctrl/pinctrl.h> 28#include <linux/pinctrl/pinctrl.h>
28#include <linux/pinctrl/pinmux.h> 29#include <linux/pinctrl/pinmux.h>
29#include <linux/pinctrl/pinconf.h> 30#include <linux/pinctrl/pinconf.h>
@@ -1688,18 +1689,34 @@ static struct pinctrl_desc nmk_pinctrl_desc = {
1688 .owner = THIS_MODULE, 1689 .owner = THIS_MODULE,
1689}; 1690};
1690 1691
1692static const struct of_device_id nmk_pinctrl_match[] = {
1693 {
1694 .compatible = "stericsson,nmk_pinctrl",
1695 .data = (void *)PINCTRL_NMK_DB8500,
1696 },
1697 {},
1698};
1699
1691static int __devinit nmk_pinctrl_probe(struct platform_device *pdev) 1700static int __devinit nmk_pinctrl_probe(struct platform_device *pdev)
1692{ 1701{
1693 const struct platform_device_id *platid = platform_get_device_id(pdev); 1702 const struct platform_device_id *platid = platform_get_device_id(pdev);
1703 struct device_node *np = pdev->dev.of_node;
1694 struct nmk_pinctrl *npct; 1704 struct nmk_pinctrl *npct;
1705 unsigned int version = 0;
1695 int i; 1706 int i;
1696 1707
1697 npct = devm_kzalloc(&pdev->dev, sizeof(*npct), GFP_KERNEL); 1708 npct = devm_kzalloc(&pdev->dev, sizeof(*npct), GFP_KERNEL);
1698 if (!npct) 1709 if (!npct)
1699 return -ENOMEM; 1710 return -ENOMEM;
1700 1711
1712 if (platid)
1713 version = platid->driver_data;
1714 else if (np)
1715 version = (unsigned int)
1716 of_match_device(nmk_pinctrl_match, &pdev->dev)->data;
1717
1701 /* Poke in other ASIC variants here */ 1718 /* Poke in other ASIC variants here */
1702 if (platid->driver_data == PINCTRL_NMK_DB8500) 1719 if (version == PINCTRL_NMK_DB8500)
1703 nmk_pinctrl_db8500_init(&npct->soc); 1720 nmk_pinctrl_db8500_init(&npct->soc);
1704 1721
1705 /* 1722 /*
@@ -1758,6 +1775,7 @@ static struct platform_driver nmk_pinctrl_driver = {
1758 .driver = { 1775 .driver = {
1759 .owner = THIS_MODULE, 1776 .owner = THIS_MODULE,
1760 .name = "pinctrl-nomadik", 1777 .name = "pinctrl-nomadik",
1778 .of_match_table = nmk_pinctrl_match,
1761 }, 1779 },
1762 .probe = nmk_pinctrl_probe, 1780 .probe = nmk_pinctrl_probe,
1763 .id_table = nmk_pinctrl_id, 1781 .id_table = nmk_pinctrl_id,