These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / pinctrl / sh-pfc / core.c
index 7b2c949..181ea98 100644 (file)
 static int sh_pfc_map_resources(struct sh_pfc *pfc,
                                struct platform_device *pdev)
 {
-       unsigned int num_windows = 0;
-       unsigned int num_irqs = 0;
+       unsigned int num_windows, num_irqs;
        struct sh_pfc_window *windows;
        unsigned int *irqs = NULL;
        struct resource *res;
        unsigned int i;
+       int irq;
 
        /* Count the MEM and IRQ resources. */
-       for (i = 0; i < pdev->num_resources; ++i) {
-               switch (resource_type(&pdev->resource[i])) {
-               case IORESOURCE_MEM:
-                       num_windows++;
+       for (num_windows = 0;; num_windows++) {
+               res = platform_get_resource(pdev, IORESOURCE_MEM, num_windows);
+               if (!res)
                        break;
-
-               case IORESOURCE_IRQ:
-                       num_irqs++;
+       }
+       for (num_irqs = 0;; num_irqs++) {
+               irq = platform_get_irq(pdev, num_irqs);
+               if (irq == -EPROBE_DEFER)
+                       return irq;
+               if (irq < 0)
                        break;
-               }
        }
 
        if (num_windows == 0)
@@ -72,22 +73,17 @@ static int sh_pfc_map_resources(struct sh_pfc *pfc,
        }
 
        /* Fill them. */
-       for (i = 0, res = pdev->resource; i < pdev->num_resources; i++, res++) {
-               switch (resource_type(res)) {
-               case IORESOURCE_MEM:
-                       windows->phys = res->start;
-                       windows->size = resource_size(res);
-                       windows->virt = devm_ioremap_resource(pfc->dev, res);
-                       if (IS_ERR(windows->virt))
-                               return -ENOMEM;
-                       windows++;
-                       break;
-
-               case IORESOURCE_IRQ:
-                       *irqs++ = res->start;
-                       break;
-               }
+       for (i = 0; i < num_windows; i++) {
+               res = platform_get_resource(pdev, IORESOURCE_MEM, i);
+               windows->phys = res->start;
+               windows->size = resource_size(res);
+               windows->virt = devm_ioremap_resource(pfc->dev, res);
+               if (IS_ERR(windows->virt))
+                       return -ENOMEM;
+               windows++;
        }
+       for (i = 0; i < num_irqs; i++)
+               *irqs++ = platform_get_irq(pdev, i);
 
        return 0;
 }
@@ -276,7 +272,7 @@ static int sh_pfc_get_config_reg(struct sh_pfc *pfc, u16 enum_id,
 static int sh_pfc_mark_to_enum(struct sh_pfc *pfc, u16 mark, int pos,
                              u16 *enum_idp)
 {
-       const u16 *data = pfc->info->gpio_data;
+       const u16 *data = pfc->info->pinmux_data;
        unsigned int k;
 
        if (pos) {
@@ -284,7 +280,7 @@ static int sh_pfc_mark_to_enum(struct sh_pfc *pfc, u16 mark, int pos,
                return pos + 1;
        }
 
-       for (k = 0; k < pfc->info->gpio_data_size; k++) {
+       for (k = 0; k < pfc->info->pinmux_data_size; k++) {
                if (data[k] == mark) {
                        *enum_idp = data[k + 1];
                        return k + 1;
@@ -481,6 +477,24 @@ static const struct of_device_id sh_pfc_of_table[] = {
                .data = &r8a7791_pinmux_info,
        },
 #endif
+#ifdef CONFIG_PINCTRL_PFC_R8A7793
+       {
+               .compatible = "renesas,pfc-r8a7793",
+               .data = &r8a7793_pinmux_info,
+       },
+#endif
+#ifdef CONFIG_PINCTRL_PFC_R8A7794
+       {
+               .compatible = "renesas,pfc-r8a7794",
+               .data = &r8a7794_pinmux_info,
+       },
+#endif
+#ifdef CONFIG_PINCTRL_PFC_R8A7795
+       {
+               .compatible = "renesas,pfc-r8a7795",
+               .data = &r8a7795_pinmux_info,
+       },
+#endif
 #ifdef CONFIG_PINCTRL_PFC_SH73A0
        {
                .compatible = "renesas,pfc-sh73a0",
@@ -579,18 +593,6 @@ static int sh_pfc_remove(struct platform_device *pdev)
 }
 
 static const struct platform_device_id sh_pfc_id_table[] = {
-#ifdef CONFIG_PINCTRL_PFC_R8A73A4
-       { "pfc-r8a73a4", (kernel_ulong_t)&r8a73a4_pinmux_info },
-#endif
-#ifdef CONFIG_PINCTRL_PFC_R8A7740
-       { "pfc-r8a7740", (kernel_ulong_t)&r8a7740_pinmux_info },
-#endif
-#ifdef CONFIG_PINCTRL_PFC_R8A7778
-       { "pfc-r8a7778", (kernel_ulong_t)&r8a7778_pinmux_info },
-#endif
-#ifdef CONFIG_PINCTRL_PFC_R8A7779
-       { "pfc-r8a7779", (kernel_ulong_t)&r8a7779_pinmux_info },
-#endif
 #ifdef CONFIG_PINCTRL_PFC_SH7203
        { "pfc-sh7203", (kernel_ulong_t)&sh7203_pinmux_info },
 #endif
@@ -600,9 +602,6 @@ static const struct platform_device_id sh_pfc_id_table[] = {
 #ifdef CONFIG_PINCTRL_PFC_SH7269
        { "pfc-sh7269", (kernel_ulong_t)&sh7269_pinmux_info },
 #endif
-#ifdef CONFIG_PINCTRL_PFC_SH73A0
-       { "pfc-sh73a0", (kernel_ulong_t)&sh73a0_pinmux_info },
-#endif
 #ifdef CONFIG_PINCTRL_PFC_SH7720
        { "pfc-sh7720", (kernel_ulong_t)&sh7720_pinmux_info },
 #endif