From: Tony Lindgren <tony@atomide.com>
To: linux-arm-kernel@lists.infradead.org
Cc: Sriramakrishnan <srk@ti.com>, linux-omap@vger.kernel.org
Subject: [PATCH 11/18] AM35xx : Platform specific hookup for EMAC module
Date: Wed, 05 May 2010 12:33:06 -0700 [thread overview]
Message-ID: <20100505193306.21568.89158.stgit@baageli.muru.com> (raw)
In-Reply-To: <20100505192957.21568.19569.stgit@baageli.muru.com>
From: Sriram <srk@ti.com>
Modified AM35xx EVM init sequence to handle EMAC
initialization.
Signed-off-by: Sriramakrishnan <srk@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
arch/arm/mach-omap2/board-am3517evm.c | 98 +++++++++++++++++++++++++++++++++
1 files changed, 98 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c
index 6ca0075..02e2097 100644
--- a/arch/arm/mach-omap2/board-am3517evm.c
+++ b/arch/arm/mach-omap2/board-am3517evm.c
@@ -22,6 +22,7 @@
#include <linux/gpio.h>
#include <linux/i2c/pca953x.h>
#include <linux/can/platform/ti_hecc.h>
+#include <linux/davinci_emac.h>
#include <mach/hardware.h>
#include <mach/am35xx.h>
@@ -31,11 +32,106 @@
#include <plat/board.h>
#include <plat/common.h>
+#include <plat/control.h>
#include <plat/usb.h>
#include <plat/display.h>
#include "mux.h"
+#define AM35XX_EVM_PHY_MASK (0xF)
+#define AM35XX_EVM_MDIO_FREQUENCY (1000000)
+
+static struct emac_platform_data am3517_evm_emac_pdata = {
+ .phy_mask = AM35XX_EVM_PHY_MASK,
+ .mdio_max_freq = AM35XX_EVM_MDIO_FREQUENCY,
+ .rmii_en = 1,
+};
+
+static struct resource am3517_emac_resources[] = {
+ {
+ .start = AM35XX_IPSS_EMAC_BASE,
+ .end = AM35XX_IPSS_EMAC_BASE + 0x3FFFF,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = INT_35XX_EMAC_C0_RXTHRESH_IRQ,
+ .end = INT_35XX_EMAC_C0_RXTHRESH_IRQ,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = INT_35XX_EMAC_C0_RX_PULSE_IRQ,
+ .end = INT_35XX_EMAC_C0_RX_PULSE_IRQ,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = INT_35XX_EMAC_C0_TX_PULSE_IRQ,
+ .end = INT_35XX_EMAC_C0_TX_PULSE_IRQ,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = INT_35XX_EMAC_C0_MISC_PULSE_IRQ,
+ .end = INT_35XX_EMAC_C0_MISC_PULSE_IRQ,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device am3517_emac_device = {
+ .name = "davinci_emac",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(am3517_emac_resources),
+ .resource = am3517_emac_resources,
+};
+
+static void am3517_enable_ethernet_int(void)
+{
+ u32 regval;
+
+ regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+ regval = (regval | AM35XX_CPGMAC_C0_RX_PULSE_CLR |
+ AM35XX_CPGMAC_C0_TX_PULSE_CLR |
+ AM35XX_CPGMAC_C0_MISC_PULSE_CLR |
+ AM35XX_CPGMAC_C0_RX_THRESH_CLR);
+ omap_ctrl_writel(regval, AM35XX_CONTROL_LVL_INTR_CLEAR);
+ regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+}
+
+static void am3517_disable_ethernet_int(void)
+{
+ u32 regval;
+
+ regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+ regval = (regval | AM35XX_CPGMAC_C0_RX_PULSE_CLR |
+ AM35XX_CPGMAC_C0_TX_PULSE_CLR);
+ omap_ctrl_writel(regval, AM35XX_CONTROL_LVL_INTR_CLEAR);
+ regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+}
+
+void am3517_evm_ethernet_init(struct emac_platform_data *pdata)
+{
+ unsigned int regval;
+
+ pdata->ctrl_reg_offset = AM35XX_EMAC_CNTRL_OFFSET;
+ pdata->ctrl_mod_reg_offset = AM35XX_EMAC_CNTRL_MOD_OFFSET;
+ pdata->ctrl_ram_offset = AM35XX_EMAC_CNTRL_RAM_OFFSET;
+ pdata->mdio_reg_offset = AM35XX_EMAC_MDIO_OFFSET;
+ pdata->ctrl_ram_size = AM35XX_EMAC_CNTRL_RAM_SIZE;
+ pdata->version = EMAC_VERSION_2;
+ pdata->hw_ram_addr = AM35XX_EMAC_HW_RAM_ADDR;
+ pdata->interrupt_enable = am3517_enable_ethernet_int;
+ pdata->interrupt_disable = am3517_disable_ethernet_int;
+ am3517_emac_device.dev.platform_data = pdata;
+ platform_device_register(&am3517_emac_device);
+
+ regval = omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET);
+ regval = regval & (~(AM35XX_CPGMACSS_SW_RST));
+ omap_ctrl_writel(regval, AM35XX_CONTROL_IP_SW_RESET);
+ regval = omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET);
+
+ return ;
+}
+
+
+
#define LCD_PANEL_PWR 176
#define LCD_PANEL_BKLIGHT_PWR 182
#define LCD_PANEL_PWM 181
@@ -351,6 +447,8 @@ static void __init am3517_evm_init(void)
i2c_register_board_info(1, am3517evm_i2c_boardinfo,
ARRAY_SIZE(am3517evm_i2c_boardinfo));
+ /*Ethernet*/
+ am3517_evm_ethernet_init(&am3517_evm_emac_pdata);
}
static void __init am3517_evm_map_io(void)
WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 11/18] AM35xx : Platform specific hookup for EMAC module
Date: Wed, 05 May 2010 12:33:06 -0700 [thread overview]
Message-ID: <20100505193306.21568.89158.stgit@baageli.muru.com> (raw)
In-Reply-To: <20100505192957.21568.19569.stgit@baageli.muru.com>
From: Sriram <srk@ti.com>
Modified AM35xx EVM init sequence to handle EMAC
initialization.
Signed-off-by: Sriramakrishnan <srk@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
arch/arm/mach-omap2/board-am3517evm.c | 98 +++++++++++++++++++++++++++++++++
1 files changed, 98 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c
index 6ca0075..02e2097 100644
--- a/arch/arm/mach-omap2/board-am3517evm.c
+++ b/arch/arm/mach-omap2/board-am3517evm.c
@@ -22,6 +22,7 @@
#include <linux/gpio.h>
#include <linux/i2c/pca953x.h>
#include <linux/can/platform/ti_hecc.h>
+#include <linux/davinci_emac.h>
#include <mach/hardware.h>
#include <mach/am35xx.h>
@@ -31,11 +32,106 @@
#include <plat/board.h>
#include <plat/common.h>
+#include <plat/control.h>
#include <plat/usb.h>
#include <plat/display.h>
#include "mux.h"
+#define AM35XX_EVM_PHY_MASK (0xF)
+#define AM35XX_EVM_MDIO_FREQUENCY (1000000)
+
+static struct emac_platform_data am3517_evm_emac_pdata = {
+ .phy_mask = AM35XX_EVM_PHY_MASK,
+ .mdio_max_freq = AM35XX_EVM_MDIO_FREQUENCY,
+ .rmii_en = 1,
+};
+
+static struct resource am3517_emac_resources[] = {
+ {
+ .start = AM35XX_IPSS_EMAC_BASE,
+ .end = AM35XX_IPSS_EMAC_BASE + 0x3FFFF,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = INT_35XX_EMAC_C0_RXTHRESH_IRQ,
+ .end = INT_35XX_EMAC_C0_RXTHRESH_IRQ,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = INT_35XX_EMAC_C0_RX_PULSE_IRQ,
+ .end = INT_35XX_EMAC_C0_RX_PULSE_IRQ,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = INT_35XX_EMAC_C0_TX_PULSE_IRQ,
+ .end = INT_35XX_EMAC_C0_TX_PULSE_IRQ,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = INT_35XX_EMAC_C0_MISC_PULSE_IRQ,
+ .end = INT_35XX_EMAC_C0_MISC_PULSE_IRQ,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device am3517_emac_device = {
+ .name = "davinci_emac",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(am3517_emac_resources),
+ .resource = am3517_emac_resources,
+};
+
+static void am3517_enable_ethernet_int(void)
+{
+ u32 regval;
+
+ regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+ regval = (regval | AM35XX_CPGMAC_C0_RX_PULSE_CLR |
+ AM35XX_CPGMAC_C0_TX_PULSE_CLR |
+ AM35XX_CPGMAC_C0_MISC_PULSE_CLR |
+ AM35XX_CPGMAC_C0_RX_THRESH_CLR);
+ omap_ctrl_writel(regval, AM35XX_CONTROL_LVL_INTR_CLEAR);
+ regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+}
+
+static void am3517_disable_ethernet_int(void)
+{
+ u32 regval;
+
+ regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+ regval = (regval | AM35XX_CPGMAC_C0_RX_PULSE_CLR |
+ AM35XX_CPGMAC_C0_TX_PULSE_CLR);
+ omap_ctrl_writel(regval, AM35XX_CONTROL_LVL_INTR_CLEAR);
+ regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+}
+
+void am3517_evm_ethernet_init(struct emac_platform_data *pdata)
+{
+ unsigned int regval;
+
+ pdata->ctrl_reg_offset = AM35XX_EMAC_CNTRL_OFFSET;
+ pdata->ctrl_mod_reg_offset = AM35XX_EMAC_CNTRL_MOD_OFFSET;
+ pdata->ctrl_ram_offset = AM35XX_EMAC_CNTRL_RAM_OFFSET;
+ pdata->mdio_reg_offset = AM35XX_EMAC_MDIO_OFFSET;
+ pdata->ctrl_ram_size = AM35XX_EMAC_CNTRL_RAM_SIZE;
+ pdata->version = EMAC_VERSION_2;
+ pdata->hw_ram_addr = AM35XX_EMAC_HW_RAM_ADDR;
+ pdata->interrupt_enable = am3517_enable_ethernet_int;
+ pdata->interrupt_disable = am3517_disable_ethernet_int;
+ am3517_emac_device.dev.platform_data = pdata;
+ platform_device_register(&am3517_emac_device);
+
+ regval = omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET);
+ regval = regval & (~(AM35XX_CPGMACSS_SW_RST));
+ omap_ctrl_writel(regval, AM35XX_CONTROL_IP_SW_RESET);
+ regval = omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET);
+
+ return ;
+}
+
+
+
#define LCD_PANEL_PWR 176
#define LCD_PANEL_BKLIGHT_PWR 182
#define LCD_PANEL_PWM 181
@@ -351,6 +447,8 @@ static void __init am3517_evm_init(void)
i2c_register_board_info(1, am3517evm_i2c_boardinfo,
ARRAY_SIZE(am3517evm_i2c_boardinfo));
+ /*Ethernet*/
+ am3517_evm_ethernet_init(&am3517_evm_emac_pdata);
}
static void __init am3517_evm_map_io(void)
next prev parent reply other threads:[~2010-05-05 19:33 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-05 19:32 [PATCH 00/18] omap platform data and board updates for 2.6.35 merge window Tony Lindgren
2010-05-05 19:32 ` Tony Lindgren
2010-05-05 19:32 ` [PATCH 01/18] OMAP2/3: Add V4L2 DSS driver support in device.c Tony Lindgren
2010-05-05 19:32 ` Tony Lindgren
2010-05-05 19:32 ` [PATCH 02/18] omap1: amsdelta: defconfig updates Tony Lindgren
2010-05-05 19:32 ` Tony Lindgren
2010-05-05 19:32 ` [PATCH 03/18] omap2: Add I2C bus 1 initialisation for 2430sdp Tony Lindgren
2010-05-05 19:32 ` Tony Lindgren
2010-05-05 19:32 ` [PATCH 04/18] omap2: Add OHCI USB platform init for 2430 SDP Tony Lindgren
2010-05-05 19:32 ` Tony Lindgren
2010-05-05 19:32 ` [PATCH 05/18] omap2: select ARCH_OMAP_OTG for OMAP2430 SDP Tony Lindgren
2010-05-05 19:32 ` Tony Lindgren
2010-05-05 19:32 ` [PATCH 06/18] omap: Devkit8000: Add mux initialization Tony Lindgren
2010-05-05 19:32 ` Tony Lindgren
2010-05-05 19:32 ` [PATCH 07/18] omap: Devkit8000: Update default configuration Tony Lindgren
2010-05-05 19:32 ` Tony Lindgren
2010-05-05 19:32 ` [PATCH 08/18] can:ti_hecc: board specific hookup on AM3517EVM Tony Lindgren
2010-05-05 19:32 ` Tony Lindgren
2010-05-05 19:33 ` [PATCH 09/18] can:ti_hecc: Enable CAN support on AM3517 Tony Lindgren
2010-05-05 19:33 ` Tony Lindgren
2010-05-05 19:33 ` [PATCH 10/18] AM35xx EMAC : define submodule offsets Tony Lindgren
2010-05-05 19:33 ` Tony Lindgren
2010-05-05 19:33 ` Tony Lindgren [this message]
2010-05-05 19:33 ` [PATCH 11/18] AM35xx : Platform specific hookup for EMAC module Tony Lindgren
2010-05-05 19:33 ` [PATCH 12/18] OMAP3 : clock data: Update name string for EMAC clocks Tony Lindgren
2010-05-05 19:33 ` Tony Lindgren
2010-05-05 19:45 ` Russell King - ARM Linux
2010-05-05 19:45 ` Russell King - ARM Linux
2010-05-05 20:02 ` Tony Lindgren
2010-05-05 20:02 ` Tony Lindgren
2010-05-10 20:17 ` Tony Lindgren
2010-05-10 20:17 ` Tony Lindgren
2010-05-05 19:33 ` [PATCH 13/18] AM3517 defconfig update : enable EMAC support Tony Lindgren
2010-05-05 19:33 ` Tony Lindgren
2010-05-05 19:33 ` [PATCH 14/18] omap: Overo: Add support for second ethernet port Tony Lindgren
2010-05-05 19:33 ` Tony Lindgren
2010-05-18 13:41 ` Steve Sakoman
2010-05-18 13:41 ` Steve Sakoman
2010-05-19 18:27 ` Tony Lindgren
2010-05-19 18:27 ` Tony Lindgren
2010-05-21 20:15 ` [PATCH 14/18 FIX] " Steve Sakoman
2010-05-21 20:15 ` Steve Sakoman
2010-05-31 12:31 ` [APPLIED] [PATCH 14/18 FIX] omap: Overo: Add support for second ethernet Tony Lindgren
2010-05-05 19:33 ` [PATCH 15/18] omap: rx51: Change the TWL4030 VMMC2 voltage constraints andsupply name Tony Lindgren
2010-05-05 19:33 ` Tony Lindgren
2010-05-05 19:33 ` [PATCH 16/18] omap: rx51: Add i2c2 board_info with tlv320aic3x Tony Lindgren
2010-05-05 19:33 ` Tony Lindgren
2010-05-05 19:33 ` [PATCH 17/18] omap: rx51: Add supplies for the tlv320aic3x codec driver Tony Lindgren
2010-05-05 19:33 ` Tony Lindgren
2010-05-06 6:57 ` Eduardo Valentin
2010-05-06 6:57 ` Eduardo Valentin
2010-05-06 7:00 ` Eduardo Valentin
2010-05-06 7:00 ` Eduardo Valentin
2010-05-18 10:00 ` Jarkko Nikula
2010-05-18 10:00 ` Jarkko Nikula
2010-05-05 19:33 ` [PATCH 18/18] AM35x: fix UI card EHCI port and LCD dependency Tony Lindgren
2010-05-05 19:33 ` Tony Lindgren
2010-05-05 20:21 ` [PATCH 00/18] omap platform data and board updates for 2.6.35 merge window Koen Kooi
2010-05-05 21:09 ` Tony Lindgren
2010-05-06 7:27 ` Koen Kooi
2010-05-06 7:42 ` Tomi Valkeinen
2010-05-06 15:44 ` Tony Lindgren
2010-05-10 7:57 ` Tomi Valkeinen
2010-05-10 22:25 ` Tony Lindgren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100505193306.21568.89158.stgit@baageli.muru.com \
--to=tony@atomide.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=srk@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.