Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 173337
b: refs/heads/master
c: 2206771
h: refs/heads/master
i:
  173335: a8847c6
v: v3
  • Loading branch information
Chaithrika U S authored and Kevin Hilman committed Nov 25, 2009
1 parent ed4c22c commit 1da26f9
Show file tree
Hide file tree
Showing 6 changed files with 124 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 75e2ea643fe43d5aa836475acee5bd97cd9ea4bf
refs/heads/master: 2206771c4359e236308122ad3fed7f5d91586fd7
31 changes: 31 additions & 0 deletions trunk/arch/arm/mach-davinci/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,37 @@ config MACH_DAVINCI_DA850_EVM
help
Say Y here to select the TI DA850/OMAP-L138 Evaluation Module.

config DA850_UI_EXP
bool "DA850/OMAP-L138 UI (User Interface) board expander configuration"
depends on MACH_DAVINCI_DA850_EVM
select GPIO_PCA953X
help
Say Y here if you have the DA850/OMAP-L138 UI
(User Interface) board installed and you want to
enable the peripherals located on User Interface
board contorlled by TCA6416 expander.

choice
prompt "Select peripherals connected to expander on UI board"
depends on DA850_UI_EXP

config DA850_UI_NONE
bool "No peripheral is enabled"
help
Say Y if you do not want to enable any of the peripherals connected
to TCA6416 expander on DA850/OMAP-L138 EVM UI card

config DA850_UI_RMII
bool "RMII Ethernet PHY"
help
Say Y if you want to use the RMII PHY on the DA850/OMAP-L138 EVM.
This PHY is found on the UI daughter card that is supplied with
the EVM.
NOTE: Please take care while choosing this option, MII PHY will
not be functional if RMII mode is selected.

endchoice

config DAVINCI_MUX
bool "DAVINCI multiplexing support"
depends on ARCH_DAVINCI
Expand Down
68 changes: 65 additions & 3 deletions trunk/arch/arm/mach-davinci/board-da850-evm.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
#define DA850_MMCSD_CD_PIN GPIO_TO_PIN(4, 0)
#define DA850_MMCSD_WP_PIN GPIO_TO_PIN(4, 1)

#define DA850_MII_MDIO_CLKEN_PIN GPIO_TO_PIN(2, 6)

static struct mtd_partition da850_evm_norflash_partition[] = {
{
.name = "NOR filesystem",
Expand Down Expand Up @@ -152,6 +154,7 @@ static void da850_evm_setup_nor_nand(void);
static int da850_evm_ui_expander_setup(struct i2c_client *client, unsigned gpio,
unsigned ngpio, void *c)
{
struct davinci_soc_info *soc_info = &davinci_soc_info;
int sel_a, sel_b, sel_c, ret;

sel_a = gpio + 7;
Expand Down Expand Up @@ -186,6 +189,10 @@ static int da850_evm_ui_expander_setup(struct i2c_client *client, unsigned gpio,

da850_evm_setup_nor_nand();

if (soc_info->emac_pdata->rmii_en)
/* enable RMII */
gpio_set_value(sel_a, 0);

return 0;

exp_setup_selc_fail:
Expand Down Expand Up @@ -509,6 +516,58 @@ static const short da850_evm_lcdc_pins[] = {
-1
};

static int __init da850_evm_config_emac(u8 rmii_en)
{
void __iomem *cfg_chip3_base;
int ret;
u32 val;

cfg_chip3_base = DA8XX_SYSCFG_VIRT(DA8XX_CFGCHIP3_REG);

/* configure the CFGCHIP3 register for RMII or MII */
val = __raw_readl(cfg_chip3_base);
if (rmii_en)
val |= BIT(8);
else
val &= ~BIT(8);

__raw_writel(val, cfg_chip3_base);

if (!rmii_en)
ret = da8xx_pinmux_setup(da850_cpgmac_pins);
else
ret = da8xx_pinmux_setup(da850_rmii_pins);
if (ret)
pr_warning("da850_evm_init: cpgmac/rmii mux setup failed: %d\n",
ret);

ret = davinci_cfg_reg(DA850_GPIO2_6);
if (ret)
pr_warning("da850_evm_init:GPIO(2,6) mux setup "
"failed\n");

ret = gpio_request(DA850_MII_MDIO_CLKEN_PIN, "mdio_clk_en");
if (ret) {
pr_warning("Cannot open GPIO %d\n",
DA850_MII_MDIO_CLKEN_PIN);
return ret;
}

if (rmii_en) {
/* Disable MII MDIO clock */
gpio_direction_output(DA850_MII_MDIO_CLKEN_PIN, 1);
pr_info("EMAC: RMII PHY configured, MII PHY will not be"
" functional\n");
} else {
/* Enable MII MDIO clock */
gpio_direction_output(DA850_MII_MDIO_CLKEN_PIN, 0);
pr_info("EMAC: MII PHY configured, RMII PHY will not be"
" functional\n");
}

return 0;
}

static __init void da850_evm_init(void)
{
struct davinci_soc_info *soc_info = &davinci_soc_info;
Expand Down Expand Up @@ -536,12 +595,15 @@ static __init void da850_evm_init(void)

soc_info->emac_pdata->phy_mask = DA850_EVM_PHY_MASK;
soc_info->emac_pdata->mdio_max_freq = DA850_EVM_MDIO_FREQUENCY;
#ifdef CONFIG_DA850_UI_RMII
soc_info->emac_pdata->rmii_en = 1;
#else
soc_info->emac_pdata->rmii_en = 0;
#endif

ret = da8xx_pinmux_setup(da850_cpgmac_pins);
ret = da850_evm_config_emac(soc_info->emac_pdata->rmii_en);
if (ret)
pr_warning("da850_evm_init: cpgmac mux setup failed: %d\n",
ret);
pr_warning("da850_evm_init: emac setup failed: %d\n", ret);

ret = da8xx_register_emac();
if (ret)
Expand Down
17 changes: 17 additions & 0 deletions trunk/arch/arm/mach-davinci/da850.c
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,14 @@ static const struct mux_config da850_pins[] = {
MUX_CFG(DA850, MII_RXD_0, 3, 28, 15, 8, false)
MUX_CFG(DA850, MDIO_CLK, 4, 0, 15, 8, false)
MUX_CFG(DA850, MDIO_D, 4, 4, 15, 8, false)
MUX_CFG(DA850, RMII_TXD_0, 14, 12, 15, 8, false)
MUX_CFG(DA850, RMII_TXD_1, 14, 8, 15, 8, false)
MUX_CFG(DA850, RMII_TXEN, 14, 16, 15, 8, false)
MUX_CFG(DA850, RMII_CRS_DV, 15, 4, 15, 8, false)
MUX_CFG(DA850, RMII_RXD_0, 14, 24, 15, 8, false)
MUX_CFG(DA850, RMII_RXD_1, 14, 20, 15, 8, false)
MUX_CFG(DA850, RMII_RXER, 14, 28, 15, 8, false)
MUX_CFG(DA850, RMII_MHZ_50_CLK, 15, 0, 15, 0, false)
/* McASP function */
MUX_CFG(DA850, ACLKR, 0, 0, 15, 1, false)
MUX_CFG(DA850, ACLKX, 0, 4, 15, 1, false)
Expand Down Expand Up @@ -524,6 +532,7 @@ static const struct mux_config da850_pins[] = {
MUX_CFG(DA850, EMA_WAIT_1, 6, 24, 15, 1, false)
MUX_CFG(DA850, NEMA_CS_2, 7, 0, 15, 1, false)
/* GPIO function */
MUX_CFG(DA850, GPIO2_6, 6, 4, 15, 8, false)
MUX_CFG(DA850, GPIO2_8, 5, 28, 15, 8, false)
MUX_CFG(DA850, GPIO2_15, 5, 0, 15, 8, false)
MUX_CFG(DA850, GPIO4_0, 10, 28, 15, 8, false)
Expand Down Expand Up @@ -565,6 +574,14 @@ const short da850_cpgmac_pins[] __initdata = {
-1
};

const short da850_rmii_pins[] __initdata = {
DA850_RMII_TXD_0, DA850_RMII_TXD_1, DA850_RMII_TXEN,
DA850_RMII_CRS_DV, DA850_RMII_RXD_0, DA850_RMII_RXD_1,
DA850_RMII_RXER, DA850_RMII_MHZ_50_CLK, DA850_MDIO_CLK,
DA850_MDIO_D,
-1
};

const short da850_mcasp_pins[] __initdata = {
DA850_AHCLKX, DA850_ACLKX, DA850_AFSX,
DA850_AHCLKR, DA850_ACLKR, DA850_AFSR, DA850_AMUTE,
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-davinci/include/mach/da8xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ extern const short da850_uart2_pins[];
extern const short da850_i2c0_pins[];
extern const short da850_i2c1_pins[];
extern const short da850_cpgmac_pins[];
extern const short da850_rmii_pins[];
extern const short da850_mcasp_pins[];
extern const short da850_lcdcntl_pins[];
extern const short da850_mmcsd0_pins[];
Expand Down
9 changes: 9 additions & 0 deletions trunk/arch/arm/mach-davinci/include/mach/mux.h
Original file line number Diff line number Diff line change
Expand Up @@ -774,6 +774,14 @@ enum davinci_da850_index {
DA850_MII_RXD_0,
DA850_MDIO_CLK,
DA850_MDIO_D,
DA850_RMII_TXD_0,
DA850_RMII_TXD_1,
DA850_RMII_TXEN,
DA850_RMII_CRS_DV,
DA850_RMII_RXD_0,
DA850_RMII_RXD_1,
DA850_RMII_RXER,
DA850_RMII_MHZ_50_CLK,

/* McASP function */
DA850_ACLKR,
Expand Down Expand Up @@ -881,6 +889,7 @@ enum davinci_da850_index {
DA850_NEMA_CS_2,

/* GPIO function */
DA850_GPIO2_6,
DA850_GPIO2_8,
DA850_GPIO2_15,
DA850_GPIO4_0,
Expand Down

0 comments on commit 1da26f9

Please sign in to comment.