[PATCH 3/3] [ARM] pxa: Add support for Fast Ethernet driver.

Eric Miao eric.y.miao at gmail.com
Tue Aug 3 07:13:17 EDT 2010


On Tue, Aug 3, 2010 at 11:37 PM, Sachin Sanap <ssanap at marvell.com> wrote:
> In order to make this patch compile, even if the PXA168 ethernet driver
> with it's header defining the platform data isn't merged yet, ifdefs
> have been added. Its effect is that the function results in a no-op
> function if the driver hasn't been activated.
>
> These ifdefs can be removed after the Ethernet driver has been merged.
>

I'd rather this be posted after the ethernet driver is merged, which
is going to happen in netdev mailing list. What's the status of that
driver being upstream by the way?

> Signed-off-by: Sachin Sanap <ssanap at marvell.com>
> ---
>  arch/arm/mach-mmp/aspenite.c               |   34 ++++++++++++++++++++++++++++
>  arch/arm/mach-mmp/include/mach/devices.h   |    1 +
>  arch/arm/mach-mmp/include/mach/pxa168.h    |    9 +++++++
>  arch/arm/mach-mmp/include/mach/regs-apmu.h |    1 +
>  arch/arm/mach-mmp/pxa168.c                 |    3 ++
>  5 files changed, 48 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
> index a235551..40f88ba 100644
> --- a/arch/arm/mach-mmp/aspenite.c
> +++ b/arch/arm/mach-mmp/aspenite.c
> @@ -24,10 +24,15 @@
>  #include <mach/pxa168.h>
>  #include <mach/gpio.h>
>  #include <linux/i2c/pca953x.h>
> +#if defined(CONFIG_PXA168_ETH) || defined(CONFIG_PXA168_ETH_MODULE)
> +#include <mach/pxa168_eth.h>
> +#endif
>
>  #include "common.h"
>
>  #define GPIO_EXT1(x)   (128 + 16 + (x))
> +#define ENET_RESET_N   GPIO_EXT1(9)
> +#define ENET_COMA_N    GPIO_EXT1(10)
>
>  static unsigned long common_pin_config[] __initdata = {
>        /* Data Flash Interface */
> @@ -177,7 +182,33 @@ static struct i2c_board_info aspenite_i2c_info[] __initdata = {
>        },
>  #endif
>  };
> +#if defined(CONFIG_PXA168_ETH) || defined(CONFIG_PXA168_ETH_MODULE)
> +static int pxa168_eth_init(void)
> +{
> +       if (gpio_request(ENET_RESET_N, "ENET_RESET_N")) {
> +               printk(KERN_ERR "Request GPIO failed,"
> +                               "gpio: %d\n", ENET_RESET_N);
> +               return -EIO;
> +       }
> +       if (gpio_request(ENET_COMA_N, "ENET_COMA_N")) {
> +               gpio_free(ENET_RESET_N);
> +               printk(KERN_ERR "Request GPIO failed,"
> +                               "gpio: %d\n", ENET_COMA_N);
> +               return -EIO;
> +       }
> +       gpio_direction_output(ENET_RESET_N, 1);
> +       gpio_direction_output(ENET_COMA_N, 1);
> +       gpio_free(ENET_RESET_N);
> +       gpio_free(ENET_COMA_N);
> +       return 0;
> +}
>
> +static struct pxa168_eth_platform_data pxa168_eth_data = {
> +       .phy_addr = 0,          /* phy addr depends on boards */
> +       .port_number = 0,
> +       .init   = pxa168_eth_init,
> +};
> +#endif
>  static void __init common_init(void)
>  {
>        mfp_config(ARRAY_AND_SIZE(common_pin_config));
> @@ -188,6 +219,9 @@ static void __init common_init(void)
>        pxa168_add_twsi(1, NULL, ARRAY_AND_SIZE(aspenite_pwri2c_info));
>        pxa168_add_ssp(1);
>        pxa168_add_nand(&aspenite_nand_info);
> +#if defined(CONFIG_PXA168_ETH) || defined(CONFIG_PXA168_ETH_MODULE)
> +       pxa168_add_mfu(&pxa168_eth_data);
> +#endif
>
>        /* off-chip devices */
>        platform_device_register(&smc91x_device);
> diff --git a/arch/arm/mach-mmp/include/mach/devices.h b/arch/arm/mach-mmp/include/mach/devices.h
> index 1fa0a49..0cc0333 100644
> --- a/arch/arm/mach-mmp/include/mach/devices.h
> +++ b/arch/arm/mach-mmp/include/mach/devices.h
> @@ -46,4 +46,5 @@ struct pxa_device_desc mmp2_device_##_name __initdata = {             \
>        .dma            = { _dma },                                     \
>  }
>
> +extern struct pxa_device_desc pxa168_device_mfu;
>  extern int pxa_register_device(struct pxa_device_desc *, void *, size_t);
> diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h b/arch/arm/mach-mmp/include/mach/pxa168.h
> index 3b2bd5d..0e2ff24 100644
> --- a/arch/arm/mach-mmp/include/mach/pxa168.h
> +++ b/arch/arm/mach-mmp/include/mach/pxa168.h
> @@ -5,6 +5,9 @@
>  #include <mach/devices.h>
>  #include <plat/i2c.h>
>  #include <plat/pxa3xx_nand.h>
> +#if defined(CONFIG_PXA168_ETH) || defined(CONFIG_PXA168_ETH_MODULE)
> +#include <mach/pxa168_eth.h>
> +#endif
>
>  extern struct pxa_device_desc pxa168_device_uart1;
>  extern struct pxa_device_desc pxa168_device_uart2;
> @@ -92,4 +95,10 @@ static inline int pxa168_add_nand(struct pxa3xx_nand_platform_data *info)
>  {
>        return pxa_register_device(&pxa168_device_nand, info, sizeof(*info));
>  }
> +#if defined(CONFIG_PXA168_ETH) || defined(CONFIG_PXA168_ETH_MODULE)
> +static inline int pxa168_add_mfu(struct pxa168_eth_platform_data *data)
> +{
> +       return pxa_register_device(&pxa168_device_mfu, data, sizeof(*data));
> +}
> +#endif
>  #endif /* __ASM_MACH_PXA168_H */
> diff --git a/arch/arm/mach-mmp/include/mach/regs-apmu.h b/arch/arm/mach-mmp/include/mach/regs-apmu.h
> index 9190305..47b2ea6 100644
> --- a/arch/arm/mach-mmp/include/mach/regs-apmu.h
> +++ b/arch/arm/mach-mmp/include/mach/regs-apmu.h
> @@ -27,6 +27,7 @@
>  #define APMU_DMA       APMU_REG(0x064)
>  #define APMU_GEU       APMU_REG(0x068)
>  #define APMU_BUS       APMU_REG(0x06c)
> +#define APMU_MFU       APMU_REG(0x0fc)
>
>  #define APMU_FNCLK_EN  (1 << 4)
>  #define APMU_AXICLK_EN (1 << 3)
> diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c
> index 652ae66..f7d1158 100644
> --- a/arch/arm/mach-mmp/pxa168.c
> +++ b/arch/arm/mach-mmp/pxa168.c
> @@ -79,6 +79,7 @@ static APBC_CLK(ssp4, PXA168_SSP4, 4, 0);
>  static APBC_CLK(ssp5, PXA168_SSP5, 4, 0);
>
>  static APMU_CLK(nand, NAND, 0x01db, 208000000);
> +static APMU_CLK(mfu, MFU, 0x9, 0);
>
>  /* device and clock bindings */
>  static struct clk_lookup pxa168_clkregs[] = {
> @@ -96,6 +97,7 @@ static struct clk_lookup pxa168_clkregs[] = {
>        INIT_CLKREG(&clk_ssp4, "pxa168-ssp.3", NULL),
>        INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL),
>        INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
> +       INIT_CLKREG(&clk_mfu, "pxa168-mfu", "MFUCLK"),
>  };
>
>  static int __init pxa168_init(void)
> @@ -147,3 +149,4 @@ PXA168_DEVICE(ssp2, "pxa168-ssp", 1, SSP2, 0xd401c000, 0x40, 54, 55);
>  PXA168_DEVICE(ssp3, "pxa168-ssp", 2, SSP3, 0xd401f000, 0x40, 56, 57);
>  PXA168_DEVICE(ssp4, "pxa168-ssp", 3, SSP4, 0xd4020000, 0x40, 58, 59);
>  PXA168_DEVICE(ssp5, "pxa168-ssp", 4, SSP5, 0xd4021000, 0x40, 60, 61);
> +PXA168_DEVICE(mfu, "pxa168-mfu", -1, MFU, 0xc0800000, 0x0fff);
> --
> 1.6.2.5
>
>



More information about the linux-arm-kernel mailing list