diff mbox

[v2,5/7] ARM: davinci: da8xx: gpio device creation

Message ID 1371202532-14628-6-git-send-email-avinashphilip@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

avinash philip June 14, 2013, 9:35 a.m. UTC
Create davinci gpio device and remove references in davinci_soc_info
structure. Also rearrange header file inclusion in group basis.

Signed-off-by: Philip Avinash <avinashphilip@ti.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
---
 arch/arm/mach-davinci/board-da830-evm.c     |   19 +++++++++++++++----
 arch/arm/mach-davinci/board-da850-evm.c     |   11 +++++++++++
 arch/arm/mach-davinci/board-omapl138-hawk.c |    2 ++
 arch/arm/mach-davinci/da830.c               |    4 ----
 arch/arm/mach-davinci/da850.c               |    4 ----
 5 files changed, 28 insertions(+), 12 deletions(-)

Comments

Sekhar Nori June 20, 2013, 8:40 a.m. UTC | #1
On 6/14/2013 3:05 PM, Philip Avinash wrote:
> Create davinci gpio device and remove references in davinci_soc_info
> structure. Also rearrange header file inclusion in group basis.
> 
> Signed-off-by: Philip Avinash <avinashphilip@ti.com>
> Acked-by: Linus Walleij <linus.walleij@linaro.org>
> Signed-off-by: Sekhar Nori <nsekhar@ti.com>
> ---
>  arch/arm/mach-davinci/board-da830-evm.c     |   19 +++++++++++++++----
>  arch/arm/mach-davinci/board-da850-evm.c     |   11 +++++++++++
>  arch/arm/mach-davinci/board-omapl138-hawk.c |    2 ++
>  arch/arm/mach-davinci/da830.c               |    4 ----
>  arch/arm/mach-davinci/da850.c               |    4 ----
>  5 files changed, 28 insertions(+), 12 deletions(-)
> 
> diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
> index 1332de8..4e8bcc1 100644
> --- a/arch/arm/mach-davinci/board-da830-evm.c
> +++ b/arch/arm/mach-davinci/board-da830-evm.c
> @@ -22,17 +22,19 @@
>  #include <linux/mtd/partitions.h>
>  #include <linux/spi/spi.h>
>  #include <linux/spi/flash.h>
> +#include <linux/platform_data/mtd-davinci.h>
> +#include <linux/platform_data/gpio-davinci.h>
> +#include <linux/platform_data/usb-davinci.h>
> +#include <linux/platform_data/mtd-davinci-aemif.h>
> +#include <linux/platform_data/spi-davinci.h>

While doing this, its better to keep the header files you are adding in
sorted order.

>  
>  #include <asm/mach-types.h>
>  #include <asm/mach/arch.h>
>  
>  #include <mach/cp_intc.h>
>  #include <mach/mux.h>
> -#include <linux/platform_data/mtd-davinci.h>
> +#include <mach/common.h>

You dont need to include this file here.

>  #include <mach/da8xx.h>
> -#include <linux/platform_data/usb-davinci.h>
> -#include <linux/platform_data/mtd-davinci-aemif.h>
> -#include <linux/platform_data/spi-davinci.h>
>  
>  #define DA830_EVM_PHY_ID		""
>  /*
> @@ -590,11 +592,20 @@ static struct spi_board_info da830evm_spi_info[] = {
>  	},
>  };
>  
> +static struct davinci_gpio_platform_data da830_gpio_platform_data = {
> +	.ngpio = 128,
> +	.intc_irq_num = DA830_N_CP_INTC_IRQ,
> +};
> +
>  static __init void da830_evm_init(void)
>  {
>  	struct davinci_soc_info *soc_info = &davinci_soc_info;
>  	int ret;
>  
> +	ret = da8xx_register_gpio(&da830_gpio_platform_data);
> +	if (ret)
> +		pr_warn("da830_evm_init: GPIO init failed: %d\n", ret);
> +
>  	ret = da830_register_edma(da830_edma_rsv);
>  	if (ret)
>  		pr_warning("da830_evm_init: edma registration failed: %d\n",
> diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
> index 8a24b6c..d5dd010 100644
> --- a/arch/arm/mach-davinci/board-da850-evm.c
> +++ b/arch/arm/mach-davinci/board-da850-evm.c
> @@ -28,6 +28,7 @@
>  #include <linux/mtd/partitions.h>
>  #include <linux/mtd/physmap.h>
>  #include <linux/platform_device.h>
> +#include <linux/platform_data/gpio-davinci.h>
>  #include <linux/platform_data/mtd-davinci.h>
>  #include <linux/platform_data/mtd-davinci-aemif.h>
>  #include <linux/platform_data/spi-davinci.h>
> @@ -42,6 +43,7 @@
>  #include <mach/da8xx.h>
>  #include <mach/mux.h>
>  #include <mach/sram.h>
> +#include <mach/common.h>

No need of this file, as before.

>  
>  #include <asm/mach-types.h>
>  #include <asm/mach/arch.h>
> @@ -1138,6 +1140,11 @@ static struct edma_rsv_info *da850_edma_rsv[2] = {
>  	&da850_edma_cc1_rsv,
>  };
>  
> +static struct davinci_gpio_platform_data da850_gpio_platform_data = {
> +	.ngpio = 144,
> +	.intc_irq_num = DA850_N_CP_INTC_IRQ,
> +};
> +
>  #ifdef CONFIG_CPU_FREQ
>  static __init int da850_evm_init_cpufreq(void)
>  {
> @@ -1444,6 +1451,10 @@ static __init void da850_evm_init(void)
>  {
>  	int ret;
>  
> +	ret = da8xx_register_gpio(&da850_gpio_platform_data);
> +	if (ret)
> +		pr_warn("da850_evm_init: GPIO init failed: %d\n", ret);
> +
>  	ret = pmic_tps65070_init();
>  	if (ret)
>  		pr_warn("%s: TPS65070 PMIC init failed: %d\n", __func__, ret);
> diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c
> index b8c20de..1f44a1b 100644
> --- a/arch/arm/mach-davinci/board-omapl138-hawk.c
> +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c
> @@ -13,6 +13,7 @@
>  #include <linux/init.h>
>  #include <linux/console.h>
>  #include <linux/gpio.h>
> +#include <linux/platform_data/gpio-davinci.h>
>  
>  #include <asm/mach-types.h>
>  #include <asm/mach/arch.h>
> @@ -20,6 +21,7 @@
>  #include <mach/cp_intc.h>
>  #include <mach/da8xx.h>
>  #include <mach/mux.h>
> +#include <mach/common.h>

No need of this again.

>  
>  #define HAWKBOARD_PHY_ID		"davinci_mdio-0:07"
>  #define DA850_HAWK_MMCSD_CD_PIN		GPIO_TO_PIN(3, 12)

You don't actually register GPIO for hawkboard?

> diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c
> index abbaf02..e7b79ee 100644
> --- a/arch/arm/mach-davinci/da830.c
> +++ b/arch/arm/mach-davinci/da830.c
> @@ -1195,10 +1195,6 @@ static struct davinci_soc_info davinci_soc_info_da830 = {
>  	.intc_irq_prios		= da830_default_priorities,
>  	.intc_irq_num		= DA830_N_CP_INTC_IRQ,
>  	.timer_info		= &da830_timer_info,
> -	.gpio_type		= GPIO_TYPE_DAVINCI,
> -	.gpio_base		= DA8XX_GPIO_BASE,
> -	.gpio_num		= 128,
> -	.gpio_irq		= IRQ_DA8XX_GPIO0,
>  	.serial_dev		= &da8xx_serial_device,
>  	.emac_pdata		= &da8xx_emac_pdata,
>  };
> diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
> index 93bcf06..de8753d 100644
> --- a/arch/arm/mach-davinci/da850.c
> +++ b/arch/arm/mach-davinci/da850.c
> @@ -1298,10 +1298,6 @@ static struct davinci_soc_info davinci_soc_info_da850 = {
>  	.intc_irq_prios		= da850_default_priorities,
>  	.intc_irq_num		= DA850_N_CP_INTC_IRQ,
>  	.timer_info		= &da850_timer_info,
> -	.gpio_type		= GPIO_TYPE_DAVINCI,
> -	.gpio_base		= DA8XX_GPIO_BASE,
> -	.gpio_num		= 144,
> -	.gpio_irq		= IRQ_DA8XX_GPIO0,
>  	.serial_dev		= &da8xx_serial_device,
>  	.emac_pdata		= &da8xx_emac_pdata,
>  	.sram_dma		= DA8XX_SHARED_RAM_BASE,

This the SoC changes can be done in 3/7 itself. I have done that in my
v3.11/gpio branch. Can you fix the issues I pointed out and reply to
this mail with an updated 5/7?

Thanks,
Sekhar
Sekhar Nori June 20, 2013, 9:07 a.m. UTC | #2
On 6/20/2013 2:10 PM, Sekhar Nori wrote:
> On 6/14/2013 3:05 PM, Philip Avinash wrote:
>> Create davinci gpio device and remove references in davinci_soc_info
>> structure. Also rearrange header file inclusion in group basis.
>>
>> Signed-off-by: Philip Avinash <avinashphilip@ti.com>
>> Acked-by: Linus Walleij <linus.walleij@linaro.org>
>> Signed-off-by: Sekhar Nori <nsekhar@ti.com>
>> ---
>>  arch/arm/mach-davinci/board-da830-evm.c     |   19 +++++++++++++++----
>>  arch/arm/mach-davinci/board-da850-evm.c     |   11 +++++++++++
>>  arch/arm/mach-davinci/board-omapl138-hawk.c |    2 ++
>>  arch/arm/mach-davinci/da830.c               |    4 ----
>>  arch/arm/mach-davinci/da850.c               |    4 ----
>>  5 files changed, 28 insertions(+), 12 deletions(-)
>>
>> diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
>> index 1332de8..4e8bcc1 100644
>> --- a/arch/arm/mach-davinci/board-da830-evm.c
>> +++ b/arch/arm/mach-davinci/board-da830-evm.c
>> @@ -22,17 +22,19 @@
>>  #include <linux/mtd/partitions.h>
>>  #include <linux/spi/spi.h>
>>  #include <linux/spi/flash.h>
>> +#include <linux/platform_data/mtd-davinci.h>
>> +#include <linux/platform_data/gpio-davinci.h>
>> +#include <linux/platform_data/usb-davinci.h>
>> +#include <linux/platform_data/mtd-davinci-aemif.h>
>> +#include <linux/platform_data/spi-davinci.h>
> 
> While doing this, its better to keep the header files you are adding in
> sorted order.
> 
>>  
>>  #include <asm/mach-types.h>
>>  #include <asm/mach/arch.h>
>>  
>>  #include <mach/cp_intc.h>
>>  #include <mach/mux.h>
>> -#include <linux/platform_data/mtd-davinci.h>
>> +#include <mach/common.h>
> 
> You dont need to include this file here.
> 
>>  #include <mach/da8xx.h>
>> -#include <linux/platform_data/usb-davinci.h>
>> -#include <linux/platform_data/mtd-davinci-aemif.h>
>> -#include <linux/platform_data/spi-davinci.h>
>>  
>>  #define DA830_EVM_PHY_ID		""
>>  /*
>> @@ -590,11 +592,20 @@ static struct spi_board_info da830evm_spi_info[] = {
>>  	},
>>  };
>>  
>> +static struct davinci_gpio_platform_data da830_gpio_platform_data = {
>> +	.ngpio = 128,
>> +	.intc_irq_num = DA830_N_CP_INTC_IRQ,
>> +};
>> +
>>  static __init void da830_evm_init(void)
>>  {
>>  	struct davinci_soc_info *soc_info = &davinci_soc_info;
>>  	int ret;
>>  
>> +	ret = da8xx_register_gpio(&da830_gpio_platform_data);
>> +	if (ret)
>> +		pr_warn("da830_evm_init: GPIO init failed: %d\n", ret);
>> +
>>  	ret = da830_register_edma(da830_edma_rsv);
>>  	if (ret)
>>  		pr_warning("da830_evm_init: edma registration failed: %d\n",
>> diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
>> index 8a24b6c..d5dd010 100644
>> --- a/arch/arm/mach-davinci/board-da850-evm.c
>> +++ b/arch/arm/mach-davinci/board-da850-evm.c
>> @@ -28,6 +28,7 @@
>>  #include <linux/mtd/partitions.h>
>>  #include <linux/mtd/physmap.h>
>>  #include <linux/platform_device.h>
>> +#include <linux/platform_data/gpio-davinci.h>
>>  #include <linux/platform_data/mtd-davinci.h>
>>  #include <linux/platform_data/mtd-davinci-aemif.h>
>>  #include <linux/platform_data/spi-davinci.h>
>> @@ -42,6 +43,7 @@
>>  #include <mach/da8xx.h>
>>  #include <mach/mux.h>
>>  #include <mach/sram.h>
>> +#include <mach/common.h>
> 
> No need of this file, as before.
> 
>>  
>>  #include <asm/mach-types.h>
>>  #include <asm/mach/arch.h>
>> @@ -1138,6 +1140,11 @@ static struct edma_rsv_info *da850_edma_rsv[2] = {
>>  	&da850_edma_cc1_rsv,
>>  };
>>  
>> +static struct davinci_gpio_platform_data da850_gpio_platform_data = {
>> +	.ngpio = 144,
>> +	.intc_irq_num = DA850_N_CP_INTC_IRQ,
>> +};

I did not notice this before, but this is a wrong place for this. This
should be in SoC file since it does not change with each board. And this
explains why you left hawk board broken - you would end up replicating
this there.

You need to fix patches 3-6 and repost again. I have some fixes what I
made while reviewing and committed to my v3.11/gpio branch. You can to
take that branch as starting point and complete the fixes.

Thanks,
Sekhar
diff mbox

Patch

diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
index 1332de8..4e8bcc1 100644
--- a/arch/arm/mach-davinci/board-da830-evm.c
+++ b/arch/arm/mach-davinci/board-da830-evm.c
@@ -22,17 +22,19 @@ 
 #include <linux/mtd/partitions.h>
 #include <linux/spi/spi.h>
 #include <linux/spi/flash.h>
+#include <linux/platform_data/mtd-davinci.h>
+#include <linux/platform_data/gpio-davinci.h>
+#include <linux/platform_data/usb-davinci.h>
+#include <linux/platform_data/mtd-davinci-aemif.h>
+#include <linux/platform_data/spi-davinci.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 
 #include <mach/cp_intc.h>
 #include <mach/mux.h>
-#include <linux/platform_data/mtd-davinci.h>
+#include <mach/common.h>
 #include <mach/da8xx.h>
-#include <linux/platform_data/usb-davinci.h>
-#include <linux/platform_data/mtd-davinci-aemif.h>
-#include <linux/platform_data/spi-davinci.h>
 
 #define DA830_EVM_PHY_ID		""
 /*
@@ -590,11 +592,20 @@  static struct spi_board_info da830evm_spi_info[] = {
 	},
 };
 
+static struct davinci_gpio_platform_data da830_gpio_platform_data = {
+	.ngpio = 128,
+	.intc_irq_num = DA830_N_CP_INTC_IRQ,
+};
+
 static __init void da830_evm_init(void)
 {
 	struct davinci_soc_info *soc_info = &davinci_soc_info;
 	int ret;
 
+	ret = da8xx_register_gpio(&da830_gpio_platform_data);
+	if (ret)
+		pr_warn("da830_evm_init: GPIO init failed: %d\n", ret);
+
 	ret = da830_register_edma(da830_edma_rsv);
 	if (ret)
 		pr_warning("da830_evm_init: edma registration failed: %d\n",
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index 8a24b6c..d5dd010 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -28,6 +28,7 @@ 
 #include <linux/mtd/partitions.h>
 #include <linux/mtd/physmap.h>
 #include <linux/platform_device.h>
+#include <linux/platform_data/gpio-davinci.h>
 #include <linux/platform_data/mtd-davinci.h>
 #include <linux/platform_data/mtd-davinci-aemif.h>
 #include <linux/platform_data/spi-davinci.h>
@@ -42,6 +43,7 @@ 
 #include <mach/da8xx.h>
 #include <mach/mux.h>
 #include <mach/sram.h>
+#include <mach/common.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -1138,6 +1140,11 @@  static struct edma_rsv_info *da850_edma_rsv[2] = {
 	&da850_edma_cc1_rsv,
 };
 
+static struct davinci_gpio_platform_data da850_gpio_platform_data = {
+	.ngpio = 144,
+	.intc_irq_num = DA850_N_CP_INTC_IRQ,
+};
+
 #ifdef CONFIG_CPU_FREQ
 static __init int da850_evm_init_cpufreq(void)
 {
@@ -1444,6 +1451,10 @@  static __init void da850_evm_init(void)
 {
 	int ret;
 
+	ret = da8xx_register_gpio(&da850_gpio_platform_data);
+	if (ret)
+		pr_warn("da850_evm_init: GPIO init failed: %d\n", ret);
+
 	ret = pmic_tps65070_init();
 	if (ret)
 		pr_warn("%s: TPS65070 PMIC init failed: %d\n", __func__, ret);
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c
index b8c20de..1f44a1b 100644
--- a/arch/arm/mach-davinci/board-omapl138-hawk.c
+++ b/arch/arm/mach-davinci/board-omapl138-hawk.c
@@ -13,6 +13,7 @@ 
 #include <linux/init.h>
 #include <linux/console.h>
 #include <linux/gpio.h>
+#include <linux/platform_data/gpio-davinci.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -20,6 +21,7 @@ 
 #include <mach/cp_intc.h>
 #include <mach/da8xx.h>
 #include <mach/mux.h>
+#include <mach/common.h>
 
 #define HAWKBOARD_PHY_ID		"davinci_mdio-0:07"
 #define DA850_HAWK_MMCSD_CD_PIN		GPIO_TO_PIN(3, 12)
diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c
index abbaf02..e7b79ee 100644
--- a/arch/arm/mach-davinci/da830.c
+++ b/arch/arm/mach-davinci/da830.c
@@ -1195,10 +1195,6 @@  static struct davinci_soc_info davinci_soc_info_da830 = {
 	.intc_irq_prios		= da830_default_priorities,
 	.intc_irq_num		= DA830_N_CP_INTC_IRQ,
 	.timer_info		= &da830_timer_info,
-	.gpio_type		= GPIO_TYPE_DAVINCI,
-	.gpio_base		= DA8XX_GPIO_BASE,
-	.gpio_num		= 128,
-	.gpio_irq		= IRQ_DA8XX_GPIO0,
 	.serial_dev		= &da8xx_serial_device,
 	.emac_pdata		= &da8xx_emac_pdata,
 };
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index 93bcf06..de8753d 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -1298,10 +1298,6 @@  static struct davinci_soc_info davinci_soc_info_da850 = {
 	.intc_irq_prios		= da850_default_priorities,
 	.intc_irq_num		= DA850_N_CP_INTC_IRQ,
 	.timer_info		= &da850_timer_info,
-	.gpio_type		= GPIO_TYPE_DAVINCI,
-	.gpio_base		= DA8XX_GPIO_BASE,
-	.gpio_num		= 144,
-	.gpio_irq		= IRQ_DA8XX_GPIO0,
 	.serial_dev		= &da8xx_serial_device,
 	.emac_pdata		= &da8xx_emac_pdata,
 	.sram_dma		= DA8XX_SHARED_RAM_BASE,