Skip to content

Commit

Permalink
ARM i.MX53: enable fec driver on EVK board
Browse files Browse the repository at this point in the history
1. Adjust FEC base address name to fit macro definition
2. Add platform data and reset function for FEC

Signed-off-by: Yong Shen <yong.shen@freescale.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
  • Loading branch information
Yong Shen authored and Sascha Hauer committed Jan 7, 2011
1 parent 14c6500 commit 6390476
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 2 deletions.
27 changes: 27 additions & 0 deletions arch/arm/mach-mx5/board-mx53_evk.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@

#include <linux/init.h>
#include <linux/clk.h>
#include <linux/fec.h>
#include <linux/delay.h>
#include <linux/gpio.h>
#include <mach/common.h>
#include <mach/hardware.h>
#include <asm/mach-types.h>
Expand All @@ -29,6 +32,8 @@
#include <mach/imx-uart.h>
#include <mach/iomux-mx53.h>

#define SMD_FEC_PHY_RST IMX_GPIO_NR(7, 6)

#include "crm_regs.h"
#include "devices-imx53.h"

Expand Down Expand Up @@ -60,11 +65,33 @@ static inline void mx53_evk_init_uart(void)
imx53_add_imx_uart(2, &mx53_evk_uart_pdata);
}

static inline void mx53_evk_fec_reset(void)
{
int ret;

/* reset FEC PHY */
ret = gpio_request(SMD_FEC_PHY_RST, "fec-phy-reset");
if (ret) {
printk(KERN_ERR"failed to get GPIO_FEC_PHY_RESET: %d\n", ret);
return;
}
gpio_direction_output(SMD_FEC_PHY_RST, 0);
gpio_set_value(SMD_FEC_PHY_RST, 0);
msleep(1);
gpio_set_value(SMD_FEC_PHY_RST, 1);
}

static struct fec_platform_data mx53_evk_fec_pdata = {
.phy = PHY_INTERFACE_MODE_RMII,
};

static void __init mx53_evk_board_init(void)
{
mxc_iomux_v3_setup_multiple_pads(mx53_evk_pads,
ARRAY_SIZE(mx53_evk_pads));
mx53_evk_init_uart();
mx53_evk_fec_reset();
imx53_add_fec(&mx53_evk_fec_pdata);
}

static void __init mx53_evk_timer_init(void)
Expand Down
4 changes: 4 additions & 0 deletions arch/arm/mach-mx5/devices-imx53.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
#include <mach/mx53.h>
#include <mach/devices-common.h>

extern const struct imx_fec_data imx53_fec_data __initconst;
#define imx53_add_fec(pdata) \
imx_add_fec(&imx53_fec_data, pdata)

extern const struct imx_imx_uart_1irq_data imx53_imx_uart_data[] __initconst;
#define imx53_add_imx_uart(id, pdata) \
imx_add_imx_uart_1irq(&imx53_imx_uart_data[id], pdata)
2 changes: 1 addition & 1 deletion arch/arm/plat-mxc/devices/Kconfig
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
config IMX_HAVE_PLATFORM_FEC
bool
default y if ARCH_MX25 || SOC_IMX27 || SOC_IMX35 || SOC_IMX51
default y if ARCH_MX25 || SOC_IMX27 || SOC_IMX35 || SOC_IMX51 || SOC_IMX53

config IMX_HAVE_PLATFORM_FLEXCAN
select HAVE_CAN_FLEXCAN if CAN
Expand Down
5 changes: 5 additions & 0 deletions arch/arm/plat-mxc/devices/platform-fec.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ const struct imx_fec_data imx51_fec_data __initconst =
imx_fec_data_entry_single(MX51);
#endif

#ifdef CONFIG_SOC_IMX53
const struct imx_fec_data imx53_fec_data __initconst =
imx_fec_data_entry_single(MX53);
#endif

struct platform_device *__init imx_add_fec(
const struct imx_fec_data *data,
const struct fec_platform_data *pdata)
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/plat-mxc/include/mach/mx53.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
#define MX53_MIPI_HSC_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000DC000)
#define MX53_MLB_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000E4000)
#define MX53_SSI3_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000E8000)
#define MX53_MXC_FEC_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000EC000)
#define MX53_FEC_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000EC000)
#define MX53_TVE_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000F0000)
#define MX53_VPU_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000F4000)
#define MX53_SAHARA_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000F8000)
Expand Down

0 comments on commit 6390476

Please sign in to comment.