diff options
-rw-r--r-- | arch/arm/mach-davinci/board-da850-evm.c | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 23e2024c3d9b..fd6f7800611a 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c | |||
@@ -148,10 +148,21 @@ static struct platform_device da850_evm_nandflash_device = { | |||
148 | static u32 ui_card_detected; | 148 | static u32 ui_card_detected; |
149 | static void da850_evm_setup_nor_nand(void); | 149 | static void da850_evm_setup_nor_nand(void); |
150 | 150 | ||
151 | #ifdef CONFIG_DA850_UI_RMII | ||
152 | static inline void da850_evm_setup_emac_rmii(int rmii_sel) | ||
153 | { | ||
154 | struct davinci_soc_info *soc_info = &davinci_soc_info; | ||
155 | |||
156 | soc_info->emac_pdata->rmii_en = 1; | ||
157 | gpio_set_value(rmii_sel, 0); | ||
158 | } | ||
159 | #else | ||
160 | static inline void da850_evm_setup_emac_rmii(int rmii_sel) { } | ||
161 | #endif | ||
162 | |||
151 | static int da850_evm_ui_expander_setup(struct i2c_client *client, unsigned gpio, | 163 | static int da850_evm_ui_expander_setup(struct i2c_client *client, unsigned gpio, |
152 | unsigned ngpio, void *c) | 164 | unsigned ngpio, void *c) |
153 | { | 165 | { |
154 | struct davinci_soc_info *soc_info = &davinci_soc_info; | ||
155 | int sel_a, sel_b, sel_c, ret; | 166 | int sel_a, sel_b, sel_c, ret; |
156 | 167 | ||
157 | sel_a = gpio + 7; | 168 | sel_a = gpio + 7; |
@@ -186,9 +197,7 @@ static int da850_evm_ui_expander_setup(struct i2c_client *client, unsigned gpio, | |||
186 | 197 | ||
187 | da850_evm_setup_nor_nand(); | 198 | da850_evm_setup_nor_nand(); |
188 | 199 | ||
189 | if (soc_info->emac_pdata->rmii_en) | 200 | da850_evm_setup_emac_rmii(sel_a); |
190 | /* enable RMII */ | ||
191 | gpio_set_value(sel_a, 0); | ||
192 | 201 | ||
193 | return 0; | 202 | return 0; |
194 | 203 | ||
@@ -513,11 +522,16 @@ static const short da850_evm_lcdc_pins[] = { | |||
513 | -1 | 522 | -1 |
514 | }; | 523 | }; |
515 | 524 | ||
516 | static int __init da850_evm_config_emac(u8 rmii_en) | 525 | static int __init da850_evm_config_emac(void) |
517 | { | 526 | { |
518 | void __iomem *cfg_chip3_base; | 527 | void __iomem *cfg_chip3_base; |
519 | int ret; | 528 | int ret; |
520 | u32 val; | 529 | u32 val; |
530 | struct davinci_soc_info *soc_info = &davinci_soc_info; | ||
531 | u8 rmii_en = soc_info->emac_pdata->rmii_en; | ||
532 | |||
533 | if (!machine_is_davinci_da850_evm()) | ||
534 | return 0; | ||
521 | 535 | ||
522 | cfg_chip3_base = DA8XX_SYSCFG_VIRT(DA8XX_CFGCHIP3_REG); | 536 | cfg_chip3_base = DA8XX_SYSCFG_VIRT(DA8XX_CFGCHIP3_REG); |
523 | 537 | ||
@@ -562,12 +576,20 @@ static int __init da850_evm_config_emac(u8 rmii_en) | |||
562 | " functional\n"); | 576 | " functional\n"); |
563 | } | 577 | } |
564 | 578 | ||
579 | soc_info->emac_pdata->phy_mask = DA850_EVM_PHY_MASK; | ||
580 | soc_info->emac_pdata->mdio_max_freq = DA850_EVM_MDIO_FREQUENCY; | ||
581 | |||
582 | ret = da8xx_register_emac(); | ||
583 | if (ret) | ||
584 | pr_warning("da850_evm_init: emac registration failed: %d\n", | ||
585 | ret); | ||
586 | |||
565 | return 0; | 587 | return 0; |
566 | } | 588 | } |
589 | device_initcall(da850_evm_config_emac); | ||
567 | 590 | ||
568 | static __init void da850_evm_init(void) | 591 | static __init void da850_evm_init(void) |
569 | { | 592 | { |
570 | struct davinci_soc_info *soc_info = &davinci_soc_info; | ||
571 | int ret; | 593 | int ret; |
572 | 594 | ||
573 | ret = pmic_tps65070_init(); | 595 | ret = pmic_tps65070_init(); |
@@ -590,22 +612,6 @@ static __init void da850_evm_init(void) | |||
590 | pr_warning("da850_evm_init: i2c0 registration failed: %d\n", | 612 | pr_warning("da850_evm_init: i2c0 registration failed: %d\n", |
591 | ret); | 613 | ret); |
592 | 614 | ||
593 | soc_info->emac_pdata->phy_mask = DA850_EVM_PHY_MASK; | ||
594 | soc_info->emac_pdata->mdio_max_freq = DA850_EVM_MDIO_FREQUENCY; | ||
595 | #ifdef CONFIG_DA850_UI_RMII | ||
596 | soc_info->emac_pdata->rmii_en = 1; | ||
597 | #else | ||
598 | soc_info->emac_pdata->rmii_en = 0; | ||
599 | #endif | ||
600 | |||
601 | ret = da850_evm_config_emac(soc_info->emac_pdata->rmii_en); | ||
602 | if (ret) | ||
603 | pr_warning("da850_evm_init: emac setup failed: %d\n", ret); | ||
604 | |||
605 | ret = da8xx_register_emac(); | ||
606 | if (ret) | ||
607 | pr_warning("da850_evm_init: emac registration failed: %d\n", | ||
608 | ret); | ||
609 | 615 | ||
610 | ret = da8xx_register_watchdog(); | 616 | ret = da8xx_register_watchdog(); |
611 | if (ret) | 617 | if (ret) |