aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/pinctrl/pinctrl-samsung.c13
-rw-r--r--drivers/pinctrl/pinctrl-samsung.h2
2 files changed, 15 insertions, 0 deletions
diff --git a/drivers/pinctrl/pinctrl-samsung.c b/drivers/pinctrl/pinctrl-samsung.c
index 94e13780a6a6..f266710a1b04 100644
--- a/drivers/pinctrl/pinctrl-samsung.c
+++ b/drivers/pinctrl/pinctrl-samsung.c
@@ -794,6 +794,7 @@ static struct samsung_pin_ctrl *samsung_pinctrl_get_soc_data(
794 int id; 794 int id;
795 const struct of_device_id *match; 795 const struct of_device_id *match;
796 const struct device_node *node = pdev->dev.of_node; 796 const struct device_node *node = pdev->dev.of_node;
797 struct device_node *np;
797 struct samsung_pin_ctrl *ctrl; 798 struct samsung_pin_ctrl *ctrl;
798 struct samsung_pin_bank *bank; 799 struct samsung_pin_bank *bank;
799 int i; 800 int i;
@@ -816,6 +817,18 @@ static struct samsung_pin_ctrl *samsung_pinctrl_get_soc_data(
816 } 817 }
817 } 818 }
818 819
820 for_each_child_of_node(node, np) {
821 if (!of_find_property(np, "gpio-controller", NULL))
822 continue;
823 bank = ctrl->pin_banks;
824 for (i = 0; i < ctrl->nr_banks; ++i, ++bank) {
825 if (!strcmp(bank->name, np->name)) {
826 bank->of_node = np;
827 break;
828 }
829 }
830 }
831
819 ctrl->base = pin_base; 832 ctrl->base = pin_base;
820 pin_base += ctrl->nr_pins; 833 pin_base += ctrl->nr_pins;
821 834
diff --git a/drivers/pinctrl/pinctrl-samsung.h b/drivers/pinctrl/pinctrl-samsung.h
index b8956934cda6..5c53f32cca06 100644
--- a/drivers/pinctrl/pinctrl-samsung.h
+++ b/drivers/pinctrl/pinctrl-samsung.h
@@ -111,6 +111,7 @@ struct samsung_pinctrl_drv_data;
111 * @eint_type: type of the external interrupt supported by the bank. 111 * @eint_type: type of the external interrupt supported by the bank.
112 * @irq_base: starting controller local irq number of the bank. 112 * @irq_base: starting controller local irq number of the bank.
113 * @name: name to be prefixed for each pin in this pin bank. 113 * @name: name to be prefixed for each pin in this pin bank.
114 * @of_node: OF node of the bank.
114 */ 115 */
115struct samsung_pin_bank { 116struct samsung_pin_bank {
116 u32 pctl_offset; 117 u32 pctl_offset;
@@ -124,6 +125,7 @@ struct samsung_pin_bank {
124 enum eint_type eint_type; 125 enum eint_type eint_type;
125 u32 irq_base; 126 u32 irq_base;
126 char *name; 127 char *name;
128 struct device_node *of_node;
127}; 129};
128 130
129/** 131/**