davinci: EMAC support for Omapl138-Hawkboard
Subsystems (3)
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH v11 1/6 davinci: EMAC support for Omapl138-Hawkboard
From: Victor Rodriguez <[email protected]>
This patch adds EMAC support for the Hawkboard-L138 system
--- arch/arm/mach-davinci/board-omapl138-hawk.c | 43 +++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-)
arch/arm/mach-davinci/board-omapl138-hawk.c +43 -0
@@ -19,6 +19,47 @@#include <mach/cp_intc.h> #include <mach/da8xx.h> +#include <mach/mux.h> + +#define HAWKBOARD_PHY_ID "0:07" + +static short omapl138_hawk_mii_pins[]__initdata = { +DA850_MII_TXEN ,DA850_MII_TXCLK ,DA850_MII_COL ,DA850_MII_TXD_3 , +DA850_MII_TXD_2 ,DA850_MII_TXD_1 ,DA850_MII_TXD_0 ,DA850_MII_RXER , +DA850_MII_CRS ,DA850_MII_RXCLK ,DA850_MII_RXDV ,DA850_MII_RXD_3 , +DA850_MII_RXD_2 ,DA850_MII_RXD_1 ,DA850_MII_RXD_0 ,DA850_MDIO_CLK , +DA850_MDIO_D , +-1 +}; + +static __init void omapl138_hawk_config_emac (void ) +{ +void __iomem *cfgchip3 =DA8XX_SYSCFG0_VIRT (DA8XX_CFGCHIP3_REG ); +int ret; +u32 val; +struct davinci_soc_info *soc_info = &davinci_soc_info; + + val =__raw_readl (cfgchip3); + val &= ~BIT (8 ); + ret =davinci_cfg_reg_list (omapl138_hawk_mii_pins); +if (ret) { +pr_warning ("%s: cpgmac/mii mux setup failed: %d\n" , + __func__, ret); +return ; + } + +/* configure the CFGCHIP3 register for MII */ +__raw_writel (val, cfgchip3); +pr_info ("EMAC: MII PHY configured\n" ); + + soc_info->emac_pdata->phy_id =HAWKBOARD_PHY_ID ; + + ret =da8xx_register_emac (); +if (ret) +pr_warning ("%s: emac registration failed: %d\n" , + __func__, ret); +} +static struct davinci_uart_config omapl138_hawk_uart_config__initdata = { .enabled_uarts =0x7 ,
@@ -30,6 +71,8 @@ static __init void omapl138_hawk_init(void)davinci_serial_init (&omapl138_hawk_uart_config); +omapl138_hawk_config_emac (); + ret =da8xx_register_watchdog ();if (ret) pr_warning("omapl138_hawk_init: "
Signature · 1 line
1.7.1
PATCH v11 2/6 davinci: EDMA support for Omapl138-Hawkboard
In reply to a message not in the archiveFrom: Victor Rodriguez <[email protected]>
This patch adds EDMA support for the Hawkboard-L138 system
--- arch/arm/mach-davinci/board-omapl138-hawk.c | 54 +++++++++++++++++++++++++++ 1 files changed, 54 insertions(+), 0 deletions(-)
arch/arm/mach-davinci/board-omapl138-hawk.c +54 -0
@@ -60,6 +60,55 @@ static __init void omapl138_hawk_config_emac(void) __func__, ret); } +/* +* The following EDMA channels/slots are not being used by drivers (for +* example: Timer, GPIO, UART events etc) on da850/omap-l138 EVM/Hawkboard, +* hence they are being reserved for codecs on the DSP side. +*/ +static const s16 da850_dma0_rsv_chans[][2 ] = { +/* (offset, number) */ + {8 ,6 }, + {24 ,4 }, + {30 ,2 }, + {-1 ,-1 } +}; + +static const s16 da850_dma0_rsv_slots[][2 ] = { +/* (offset, number) */ + {8 ,6 }, + {24 ,4 }, + {30 ,50 }, + {-1 ,-1 } +}; + +static const s16 da850_dma1_rsv_chans[][2 ] = { +/* (offset, number) */ + {0 ,28 }, + {30 ,2 }, + {-1 ,-1 } +}; + +static const s16 da850_dma1_rsv_slots[][2 ] = { +/* (offset, number) */ + {0 ,28 }, + {30 ,90 }, + {-1 ,-1 } +}; + +static struct edma_rsv_info da850_edma_cc0_rsv = { + .rsv_chans = da850_dma0_rsv_chans, + .rsv_slots = da850_dma0_rsv_slots, +}; + +static struct edma_rsv_info da850_edma_cc1_rsv = { + .rsv_chans = da850_dma1_rsv_chans, + .rsv_slots = da850_dma1_rsv_slots, +}; + +static struct edma_rsv_info *da850_edma_rsv[2 ] = { + &da850_edma_cc0_rsv, + &da850_edma_cc1_rsv, +};static struct davinci_uart_config omapl138_hawk_uart_config__initdata = { .enabled_uarts =0x7 ,
@@ -73,6 +122,11 @@ static __init void omapl138_hawk_init(void)omapl138_hawk_config_emac (); + ret =da850_register_edma (da850_edma_rsv); +if (ret) +pr_warning ("%s: EDMA registration failed: %d\n" , + __func__, ret); + ret =da8xx_register_watchdog ();if (ret) pr_warning("omapl138_hawk_init: "
Signature · 1 line
1.7.1
PATCH v11 3/6 davinci: MMC/SD and USB-OHCI configuration for Omapl138-Hawkboard
In reply to a message not in the archiveFrom: Victor Rodriguez <[email protected]>
This patch defines Pin Mux configuration to enable MMC/SD and USB-OHCI on the Hawkboard-L138 system
--- arch/arm/mach-davinci/da850.c | 4 ++++ arch/arm/mach-davinci/include/mach/mux.h | 4 ++++ 2 files changed, 8 insertions(+), 0 deletions(-)
arch/arm/mach-davinci/da850.c +4 -0
@@ -543,11 +543,15 @@ 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_4, 6, 12, 15, 8, false) 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, GPIO3_12, 7, 12, 15, 8, false) + MUX_CFG(DA850, GPIO3_13, 7, 8, 15, 8, false) MUX_CFG(DA850, GPIO4_0, 10, 28, 15, 8, false) MUX_CFG(DA850, GPIO4_1, 10, 24, 15, 8, false) + MUX_CFG(DA850, GPIO6_13, 13, 8, 15, 8, false) MUX_CFG(DA850, RTC_ALARM, 0, 28, 15, 2, false)#endif };
arch/arm/mach-davinci/include/mach/mux.h +4 -0
@@ -908,11 +908,15 @@ enum davinci_da850_index {DA850_NEMA_CS_2 ,/* GPIO function */ +DA850_GPIO2_4 ,DA850_GPIO2_6 ,DA850_GPIO2_8 ,DA850_GPIO2_15 , +DA850_GPIO3_12 , +DA850_GPIO3_13 ,DA850_GPIO4_0 ,DA850_GPIO4_1 , +DA850_GPIO6_13 , DA850_RTC_ALARM, };
Signature · 1 line
1.7.1
PATCH v11 4/6 davinci: MMC/SD support for Omapl138-Hawkboard
In reply to a message not in the archiveFrom: Victor Rodriguez <[email protected]>
This patch adds MMC/SD support for the Hawkboard-L138 system
---
Notes:
This patch works with da8xx_omapl_defconfig
In order to test it select in menuconfig like insmodule
MMC/SD/SDIO card support --->
MMC block device driver
Use bounce buffer for simple hosts TI DAVINCI Multimedia Card Interface support
arch/arm/mach-davinci/board-omapl138-hawk.c | 72 +++++++++++++++++++++++++++ 1 files changed, 72 insertions(+), 0 deletions(-)
arch/arm/mach-davinci/board-omapl138-hawk.c +72 -0
@@ -22,6 +22,8 @@#include <mach/mux.h> #define HAWKBOARD_PHY_ID "0:07" +#define DA850_HAWK_MMCSD_CD_PIN GPIO_TO_PIN(3, 12) +#define DA850_HAWK_MMCSD_WP_PIN GPIO_TO_PIN(3, 13)static short omapl138_hawk_mii_pins[]__initdata = {DA850_MII_TXEN ,DA850_MII_TXCLK ,DA850_MII_COL ,DA850_MII_TXD_3 ,
@@ -110,6 +112,74 @@ static struct edma_rsv_info *da850_edma_rsv[2] = { &da850_edma_cc1_rsv, }; +static const short hawk_mmcsd0_pins[] = { +DA850_MMCSD0_DAT_0 ,DA850_MMCSD0_DAT_1 ,DA850_MMCSD0_DAT_2 , +DA850_MMCSD0_DAT_3 ,DA850_MMCSD0_CLK ,DA850_MMCSD0_CMD , +DA850_GPIO3_12 ,DA850_GPIO3_13 , +-1 +}; + +static int da850_hawk_mmc_get_ro (int index) +{ +return gpio_get_value (DA850_HAWK_MMCSD_WP_PIN ); +} + +static int da850_hawk_mmc_get_cd (int index) +{ +return !gpio_get_value (DA850_HAWK_MMCSD_CD_PIN ); +} + +static struct davinci_mmc_config da850_mmc_config = { + .get_ro = da850_hawk_mmc_get_ro, + .get_cd = da850_hawk_mmc_get_cd, + .wires =4 , + .max_freq =50000000 , + .caps =MMC_CAP_MMC_HIGHSPEED |MMC_CAP_SD_HIGHSPEED , + .version =MMC_CTLR_VERSION_2 , +}; + +static __init void omapl138_hawk_mmc_init (void ) +{ +int ret; + + ret =davinci_cfg_reg_list (hawk_mmcsd0_pins); +if (ret) { +pr_warning ("%s: MMC/SD0 mux setup failed: %d\n" , + __func__, ret); +return ; + } + + ret =gpio_request_one (DA850_HAWK_MMCSD_CD_PIN , +GPIOF_DIR_IN ,"MMC CD" ); +if (ret <0 ) { +pr_warning ("%s: can not open GPIO %d\n" , + __func__,DA850_HAWK_MMCSD_CD_PIN ); +return ; + } + + ret =gpio_request_one (DA850_HAWK_MMCSD_WP_PIN , +GPIOF_DIR_IN ,"MMC WP" ); +if (ret <0 ) { +pr_warning ("%s: can not open GPIO %d\n" , + __func__,DA850_HAWK_MMCSD_WP_PIN ); + goto mmc_setup_wp_fail; + } + + ret =da8xx_register_mmcsd0 (&da850_mmc_config); +if (ret) { +pr_warning ("%s: MMC/SD0 registration failed: %d\n" , + __func__, ret); + goto mmc_setup_mmcsd_fail; + } + +return ; + +mmc_setup_mmcsd_fail: +gpio_free (DA850_HAWK_MMCSD_WP_PIN ); +mmc_setup_wp_fail: +gpio_free (DA850_HAWK_MMCSD_CD_PIN ); +} +static struct davinci_uart_config omapl138_hawk_uart_config__initdata = { .enabled_uarts =0x7 , };
@@ -127,6 +197,8 @@ static __init void omapl138_hawk_init(void)pr_warning ("%s: EDMA registration failed: %d\n" , __func__, ret); +omapl138_hawk_mmc_init (); + ret =da8xx_register_watchdog ();if (ret) pr_warning("omapl138_hawk_init: "
Signature · 1 line
1.7.1
PATCH v11 5/6 davinci: USB clocks for Omapl138-Hawkboard
In reply to a message not in the archiveFrom: Victor Rodriguez <[email protected]>
This patch adds USB1.1 and USB2.0 clocks for the Hawkboard-L138 system
--- arch/arm/mach-davinci/da850.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)
arch/arm/mach-davinci/da850.c +16 -0
@@ -345,6 +345,20 @@ static struct clk aemif_clk = { .flags = ALWAYS_ENABLED, }; +static struct clk usb11_clk = { + .name ="usb11" , + .parent = &pll0_sysclk4, + .lpsc =DA8XX_LPSC1_USB11 , + .gpsc =1 , +}; + +static struct clk usb20_clk = { + .name ="usb20" , + .parent = &pll0_sysclk2, + .lpsc =DA8XX_LPSC1_USB20 , + .gpsc =1 , +}; +static struct clk_lookup da850_clks[] = {CLK (NULL ,"ref" , &ref_clk),CLK (NULL ,"pll0" , &pll0_clk),
@@ -387,6 +401,8 @@ static struct clk_lookup da850_clks[] = {CLK ("davinci_mmc.0" ,NULL , &mmcsd0_clk),CLK ("davinci_mmc.1" ,NULL , &mmcsd1_clk),CLK (NULL ,"aemif" , &aemif_clk), +CLK (NULL ,"usb11" , &usb11_clk), +CLK (NULL ,"usb20" , &usb20_clk), CLK(NULL, NULL, NULL), };
Signature · 1 line
1.7.1
PATCH v11 6/6 davinci: USB1.1 support for Omapl138-Hawkboard
In reply to a message not in the archiveFrom: Victor Rodriguez <[email protected]>
This patch adds USB1.1 support for the Hawkboard-L138 system
---
Notes:
This patch works with da8xx_omapl_defconfig
In order to test it select in menuconfig like insmodule
Device Drivers --->
SCSI device support --->
SCSI device support
legacy /proc/scsi/ support
SCSI disk support
SCSI low-level drivers
USB support --->
Support for Host-side USB OHCI HCD support (NEW)
USB Mass Storage support (NEW) USB Gadget Support --->
USB Gadget Drivers (Ethernet Gadget\
(with CDC Ethernet support)) --->
NOP USB Transceiver Driver
And you will be able to mount an USB pen drive
In order to connect a keyboard or a mouse on a USB-hub select in menuconfig like insmodule
HID Devices --->
Generic HID support
USB Human Interface Device (full HID) support
arch/arm/mach-davinci/board-omapl138-hawk.c | 115 +++++++++++++++++++++++++++ 1 files changed, 115 insertions(+), 0 deletions(-)
arch/arm/mach-davinci/board-omapl138-hawk.c +115 -0
@@ -25,6 +25,9 @@#define DA850_HAWK_MMCSD_CD_PIN GPIO_TO_PIN(3, 12)#define DA850_HAWK_MMCSD_WP_PIN GPIO_TO_PIN(3, 13) +#define DA850_USB1_VBUS_PIN GPIO_TO_PIN(2, 4) +#define DA850_USB1_OC_PIN GPIO_TO_PIN(6, 13) +static short omapl138_hawk_mii_pins[]__initdata = {DA850_MII_TXEN ,DA850_MII_TXCLK ,DA850_MII_COL ,DA850_MII_TXD_3 ,DA850_MII_TXD_2 ,DA850_MII_TXD_1 ,DA850_MII_TXD_0 ,DA850_MII_RXER ,
@@ -180,6 +183,116 @@ mmc_setup_wp_fail:gpio_free (DA850_HAWK_MMCSD_CD_PIN ); } +static irqreturn_t omapl138_hawk_usb_ocic_irq (int irq,void *dev_id); +static da8xx_ocic_handler_t hawk_usb_ocic_handler; + +static const short da850_hawk_usb11_pins[] = { +DA850_GPIO2_4 ,DA850_GPIO6_13 , +-1 +}; + +static int hawk_usb_set_power (unsigned port,int on) +{ +gpio_set_value (DA850_USB1_VBUS_PIN , on); +return 0 ; +} + +static int hawk_usb_get_power (unsigned port) +{ +return gpio_get_value (DA850_USB1_VBUS_PIN ); +} + +static int hawk_usb_get_oci (unsigned port) +{ +return !gpio_get_value (DA850_USB1_OC_PIN ); +} + +static int hawk_usb_ocic_notify (da8xx_ocic_handler_t handler) +{ +int irq =gpio_to_irq (DA850_USB1_OC_PIN ); +int error =0 ; + +if (handler !=NULL ) { + hawk_usb_ocic_handler = handler; + + error =request_irq (irq, omapl138_hawk_usb_ocic_irq, +IRQF_DISABLED |IRQF_TRIGGER_RISING | +IRQF_TRIGGER_FALLING , +"OHCI over-current indicator" ,NULL ); +if (error) +pr_err ("%s: could not request IRQ to watch " +"over-current indicator changes\n" , __func__); + }else { +free_irq (irq,NULL ); + } +return error; +} + +static struct da8xx_ohci_root_hub omapl138_hawk_usb11_pdata = { + .set_power = hawk_usb_set_power, + .get_power = hawk_usb_get_power, + .get_oci = hawk_usb_get_oci, + .ocic_notify = hawk_usb_ocic_notify, +/* TPS2087 switch @ 5V */ + .potpgt = (3 +1 ) /2 ,/* 3 ms max */ +}; + +static irqreturn_t omapl138_hawk_usb_ocic_irq (int irq,void *dev_id) +{ +hawk_usb_ocic_handler (&omapl138_hawk_usb11_pdata,1 ); +return IRQ_HANDLED ; +} + +static __init void omapl138_hawk_usb_init (void ) +{ +int ret; +u32 cfgchip2; + + ret =davinci_cfg_reg_list (da850_hawk_usb11_pins); +if (ret) { +pr_warning ("%s: USB 1.1 PinMux setup failed: %d\n" , + __func__, ret); +return ; + } + +/* Setup the Ref. clock frequency for the HAWK at 24 MHz. */ + + cfgchip2 =__raw_readl (DA8XX_SYSCFG0_VIRT (DA8XX_CFGCHIP2_REG )); + cfgchip2 &= ~CFGCHIP2_REFFREQ ; + cfgchip2 |=CFGCHIP2_REFFREQ_24MHZ ; +__raw_writel (cfgchip2,DA8XX_SYSCFG0_VIRT (DA8XX_CFGCHIP2_REG )); + + ret =gpio_request_one (DA850_USB1_VBUS_PIN , +GPIOF_DIR_OUT ,"USB1 VBUS" ); +if (ret <0 ) { +pr_err ("%s: failed to request GPIO for USB 1.1 port " +"power control: %d\n" , __func__, ret); +return ; + } + + ret =gpio_request_one (DA850_USB1_OC_PIN , +GPIOF_DIR_IN ,"USB1 OC" ); +if (ret <0 ) { +pr_err ("%s: failed to request GPIO for USB 1.1 port " +"over-current indicator: %d\n" , __func__, ret); + goto usb11_setup_oc_fail; + } + + ret =da8xx_register_usb11 (&omapl138_hawk_usb11_pdata); +if (ret) { +pr_warning ("%s: USB 1.1 registration failed: %d\n" , + __func__, ret); + goto usb11_setup_fail; + } + +return ; + +usb11_setup_fail: +gpio_free (DA850_USB1_OC_PIN ); +usb11_setup_oc_fail: +gpio_free (DA850_USB1_VBUS_PIN ); +} +static struct davinci_uart_config omapl138_hawk_uart_config__initdata = { .enabled_uarts =0x7 , };
@@ -199,6 +312,8 @@ static __init void omapl138_hawk_init(void)omapl138_hawk_mmc_init (); +omapl138_hawk_usb_init (); + ret =da8xx_register_watchdog ();if (ret) pr_warning("omapl138_hawk_init: "
Signature · 1 line
1.7.1
v11 cover Add Omapl138-Hawkboard support
In reply to a message not in the archiveHi Victor,
Quoted 7 lines · On Tue, Dec 28, 2010 at 04:13:07, vm.rod25 at gmail.com wrote:
From: Victor Rodriguez <[email protected]>
This patch adds
EMAC, EDMA, MMC/SD and USB OHCI
support for the Hawkboard-L138 system
It is under the machine name "omapl138_hawkboard". This system is based on the da850 davinci CPU architecture.
These 6 patches look good to me. Thanks for your work on this.
For all the 6 patches:
Thanks,
Sekhar
Quoted 19 lines
Victor Rodriguez (6):
davinci: EMAC support for Omapl138-Hawkboard
davinci: EDMA support for Omapl138-Hawkboard
davinci: MMC/SD and USB-OHCI configuration for Omapl138-Hawkboard
davinci: MMC/SD support for Omapl138-Hawkboard
davinci: USB clocks for Omapl138-Hawkboard
davinci: USB1.1 support for Omapl138-Hawkboardarch/arm/mach-davinci/board-omapl138-hawk.c | 284 +++++++++++++++++++++++++++ arch/arm/mach-davinci/da850.c | 20 ++ arch/arm/mach-davinci/include/mach/mux.h | 4 + 3 files changed, 308 insertions(+), 0 deletions(-)_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source at linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
v11 cover Add Omapl138-Hawkboard support
Quoted 11 lines · Sekhar
Hi Victor,
Quoted 7 lines · On Tue, Dec 28, 2010 at 04:13:07, vm.rod25 at gmail.com wrote:
From: Victor Rodriguez <[email protected]>
This patch adds
EMAC, EDMA, MMC/SD and USB OHCI
support for the Hawkboard-L138 system
It is under the machine name "omapl138_hawkboard". This system is based on the da850 davinci CPU architecture.
Quoted 6 lines
These 6 patches look good to me. Thanks for your work on this.
For all the 6 patches:
Acked-by Sekhar Nori <[email protected]>
OK, queuing these for the 2.6.39 merge window.
Kevin