[alsa-devel] [PATCH v6 0/9] Add Omapl138-Hawkboard support
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch adds EMAC, EDMA, ASoC, SOUND, 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.
Victor Rodriguez (9): davinci: EMAC support for Omapl138-Hawkboard davinci: EDMA support for Omapl138-Hawkboard davinci: ASoC support for Omapl138-Hawkboard davinci: McASP configuration for Omapl138-Hawkboard davinci: Audio support for Omapl138-Hawkboard davinci: MMC/SD and USB-OHCI configuration for Omapl138-Hawkboard davinci: MMC/SD support for Omapl138-Hawkboar davinci: USB clocks for Omapl138-Hawkboard davinci: USB1.1 support for Omapl138-Hawkboard
arch/arm/mach-davinci/board-omapl138-hawk.c | 313 +++++++++++++++++++++++++++ arch/arm/mach-davinci/da850.c | 22 ++- arch/arm/mach-davinci/include/mach/mux.h | 4 + sound/soc/davinci/Kconfig | 5 +- sound/soc/davinci/davinci-evm.c | 6 +- 5 files changed, 345 insertions(+), 5 deletions(-)
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch adds EMAC support for the Hawkboard-L138 system
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com --- arch/arm/mach-davinci/board-omapl138-hawk.c | 43 +++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c index c472dd8..62d35f0 100644 --- a/arch/arm/mach-davinci/board-omapl138-hawk.c +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c @@ -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: "
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch adds EDMA support for the Hawkboard-L138 system
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com --- arch/arm/mach-davinci/board-omapl138-hawk.c | 54 +++++++++++++++++++++++++++ 1 files changed, 54 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c index 62d35f0..114fc9b 100644 --- a/arch/arm/mach-davinci/board-omapl138-hawk.c +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c @@ -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: "
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch adds ASoC support for the Hawkboard-L138 system
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com --- sound/soc/davinci/Kconfig | 5 +++-- sound/soc/davinci/davinci-evm.c | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/sound/soc/davinci/Kconfig b/sound/soc/davinci/Kconfig index 6bbf001..72c6752 100644 --- a/sound/soc/davinci/Kconfig +++ b/sound/soc/davinci/Kconfig @@ -76,8 +76,9 @@ config SND_DA830_SOC_EVM DA830/OMAP-L137 EVM
config SND_DA850_SOC_EVM - tristate "SoC Audio support for DA850/OMAP-L138 EVM" - depends on SND_DAVINCI_SOC && MACH_DAVINCI_DA850_EVM + tristate "SoC Audio support for DA850/OMAP-L138 EVM/Hawkboard" + depends on SND_DAVINCI_SOC && (MACH_DAVINCI_DA850_EVM || \ + MACH_OMAPL138_HAWKBOARD) select SND_DAVINCI_SOC_MCASP select SND_SOC_TLV320AIC3X help diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c index 97f74d6..73093eb 100644 --- a/sound/soc/davinci/davinci-evm.c +++ b/sound/soc/davinci/davinci-evm.c @@ -59,7 +59,8 @@ static int evm_hw_params(struct snd_pcm_substream *substream, sysclk = 12288000;
else if (machine_is_davinci_da830_evm() || - machine_is_davinci_da850_evm()) + machine_is_davinci_da850_evm() || + machine_is_omapl138_hawkboard()) sysclk = 24576000;
else @@ -311,7 +312,8 @@ static int __init evm_init(void) } else if (machine_is_davinci_da830_evm()) { evm_snd_dev_data = &da830_evm_snd_devdata; index = 1; - } else if (machine_is_davinci_da850_evm()) { + } else if (machine_is_davinci_da850_evm() || + machine_is_omapl138_hawkboard()) { evm_snd_dev_data = &da850_evm_snd_devdata; index = 0; } else
On Fri, Oct 29, 2010 at 10:10:39AM -0500, vm.rod25@gmail.com wrote:
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch adds ASoC support for the Hawkboard-L138 system
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com
Acked-by: Mark Brown broonie@opensource.wolfsonmicro.com
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch defines Pin Mux configuration for MacASP used on the Hawkboard-L138 system in order to add Audio support
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com --- arch/arm/mach-davinci/da850.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c index 63916b9..f033a0a 100644 --- a/arch/arm/mach-davinci/da850.c +++ b/arch/arm/mach-davinci/da850.c @@ -591,7 +591,7 @@ const short da850_cpgmac_pins[] __initdata = { const short da850_mcasp_pins[] __initdata = { DA850_AHCLKX, DA850_ACLKX, DA850_AFSX, DA850_AHCLKR, DA850_ACLKR, DA850_AFSR, DA850_AMUTE, - DA850_AXR_11, DA850_AXR_12, + DA850_AXR_11, DA850_AXR_12, DA850_AXR_13, DA850_AXR_14, -1 };
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch adds sound support for the Hawkboard-L138 system
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com --- Notes:
This patch works with da8xx_omapl_defconfig
In order to test ALSA utils select in menuconfig like insmodule:
Sound card support ---> Advanced Linux Sound Architecture ---> ALSA for SoC audio support ---> SoC Audio for the TI DAVINCI chip SoC Audio support for DA850/OMAP-L138 EVM/Hawkboard
arch/arm/mach-davinci/board-omapl138-hawk.c | 46 +++++++++++++++++++++++++++ 1 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c index 114fc9b..115dac0 100644 --- a/arch/arm/mach-davinci/board-omapl138-hawk.c +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c @@ -13,6 +13,7 @@ #include <linux/init.h> #include <linux/console.h> #include <linux/gpio.h> +#include <linux/i2c.h>
#include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -110,6 +111,38 @@ static struct edma_rsv_info *da850_edma_rsv[2] = { &da850_edma_cc1_rsv, };
+static struct i2c_board_info __initdata omapl138_hawk_i2c_devices[] = { + { + I2C_BOARD_INFO("tlv320aic3x", 0x18), + }, +}; + +static struct davinci_i2c_platform_data omapl138_hawk_i2c_0_pdata = { + .bus_freq = 100, /* kHz */ + .bus_delay = 0, /* usec */ +}; + +/* davinci Hawkboard audio machine driver */ +static u8 da850_iis_serializer_direction[] = { + INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, + INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, + INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, + INACTIVE_MODE, TX_MODE, RX_MODE, INACTIVE_MODE, +}; + +static struct snd_platform_data omapl138_hawk_snd_data = { + .tx_dma_offset = 0x2000, + .rx_dma_offset = 0x2000, + .op_mode = DAVINCI_MCASP_IIS_MODE, + .num_serializer = ARRAY_SIZE(da850_iis_serializer_direction), + .tdm_slots = 2, + .serial_dir = da850_iis_serializer_direction, + .asp_chan_q = EVENTQ_1, + .version = MCASP_VERSION_2, + .txnumevt = 1, + .rxnumevt = 1, +}; + static struct davinci_uart_config omapl138_hawk_uart_config __initdata = { .enabled_uarts = 0x7, }; @@ -127,6 +160,19 @@ static __init void omapl138_hawk_init(void) pr_warning("%s: EDMA registration failed: %d\n", __func__, ret);
+ i2c_register_board_info(1, omapl138_hawk_i2c_devices, + ARRAY_SIZE(omapl138_hawk_i2c_devices)); + + ret = da8xx_register_i2c(0, &omapl138_hawk_i2c_0_pdata); + if (ret) + pr_warning("%s: i2c0 registration failed: %d\n", + __func__, ret); + + ret = davinci_cfg_reg_list(da850_mcasp_pins); + if (ret) + pr_warning("%s: mcasp mux setup failed: %d\n", __func__, ret); + da8xx_register_mcasp(0, &omapl138_hawk_snd_data); + ret = da8xx_register_watchdog(); if (ret) pr_warning("omapl138_hawk_init: "
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch defines Pin Mux configuration to enable MMC/SD and USB-OHCI on the Hawkboard-L138 system
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com --- arch/arm/mach-davinci/da850.c | 4 ++++ arch/arm/mach-davinci/include/mach/mux.h | 4 ++++ 2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c index f033a0a..4458bff 100644 --- a/arch/arm/mach-davinci/da850.c +++ b/arch/arm/mach-davinci/da850.c @@ -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 }; diff --git a/arch/arm/mach-davinci/include/mach/mux.h b/arch/arm/mach-davinci/include/mach/mux.h index de11aac..5d4e0fe 100644 --- a/arch/arm/mach-davinci/include/mach/mux.h +++ b/arch/arm/mach-davinci/include/mach/mux.h @@ -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, };
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch adds MMC/SD support for the Hawkboard-L138 system
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com --- 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 | 63 +++++++++++++++++++++++++++ 1 files changed, 63 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c index 115dac0..02e54fa 100644 --- a/arch/arm/mach-davinci/board-omapl138-hawk.c +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c @@ -23,6 +23,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, @@ -143,6 +145,65 @@ static struct snd_platform_data omapl138_hawk_snd_data = { .rxnumevt = 1, };
+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); + return; + } + + ret = da8xx_register_mmcsd0(&da850_mmc_config); + if (ret) + pr_warning("%s: MMC/SD0 registration failed: %d\n", + __func__, ret); +} + static struct davinci_uart_config omapl138_hawk_uart_config __initdata = { .enabled_uarts = 0x7, }; @@ -173,6 +234,8 @@ static __init void omapl138_hawk_init(void) pr_warning("%s: mcasp mux setup failed: %d\n", __func__, ret); da8xx_register_mcasp(0, &omapl138_hawk_snd_data);
+ omapl138_hawk_mmc_init(); + ret = da8xx_register_watchdog(); if (ret) pr_warning("omapl138_hawk_init: "
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch adds USB1.1 and USB2.0 clocks for the Hawkboard-L138 system
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com --- arch/arm/mach-davinci/da850.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c index 4458bff..b3b1adb 100644 --- a/arch/arm/mach-davinci/da850.c +++ b/arch/arm/mach-davinci/da850.c @@ -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), };
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch adds USB1.1 support for the Hawkboard-L138 system
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com --- 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 US 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 and 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 | 107 +++++++++++++++++++++++++++ 1 files changed, 107 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c index 02e54fa..5c8202b 100644 --- a/arch/arm/mach-davinci/board-omapl138-hawk.c +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c @@ -26,6 +26,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, @@ -204,6 +207,108 @@ static __init void omapl138_hawk_mmc_init(void) __func__, ret); }
+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(KERN_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(KERN_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(KERN_ERR "%s: failed to request GPIO for USB 1.1 port " + "over-current indicator: %d\n", __func__, ret); + return; + } + + ret = da8xx_register_usb11(&omapl138_hawk_usb11_pdata); + if (ret) + pr_warning("%s: USB 1.1 registration failed: %d\n", + __func__, ret); +} + static struct davinci_uart_config omapl138_hawk_uart_config __initdata = { .enabled_uarts = 0x7, }; @@ -236,6 +341,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: "
Hi Victor,
On Fri, Oct 29, 2010 at 20:40:45, vm.rod25@gmail.com wrote:
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch adds USB1.1 support for the Hawkboard-L138 system
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com
+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(KERN_ERR "%s: could not request IRQ to watch "
"over-current indicator changes\n", __func__);
} else
free_irq(irq, NULL);
Per Documentation/CodingStyle, else should have braces too.
+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 */
Do we have this part on the hawkboard as well?
[...]
+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.
*/
No need of multi-line comment style here.
Sorry about the piecemeal review (you really generated new versions quickly). That is all I have on this series.
Also, you are CCing a whole lot of folks on each patch. Instead, you can automate CCing the relevant folks using --cc-cmd=<command> option of git-send-email
Use --cc-cmd="scripts/get_maintainer.pl --pattern-depth=2 -s" to generate list of relevant CCs.
Example:
scripts/get_maintainer.pl -f arch/arm/mach-davinci/board-omapl138-hawk.c --pattern-depth=2 -s
gives:
Kevin Hilman khilman@deeprootsystems.com Russell King linux@arm.linux.org.uk davinci-linux-open-source@linux.davincidsp.com linux-arm-kernel@lists.infradead.org
Recently Kevin requested all patches to CC Linux ARM Kernel mailing list so this should be OK.
scripts/get_maintainer.pl -f sound/soc/davinci/davinci-evm.c --pattern-depth=2 -s
gives:
Liam Girdwood lrg@slimlogic.co.uk Mark Brown broonie@opensource.wolfsonmicro.com alsa-devel@alsa-project.org
This is as per what Liam and Mark have been asking for.
Also, use --dry-run with git-send-email before sending actual emails to make sure the To and CC lists look good.
Thanks, Sekhar
On Tue, Nov 2, 2010 at 12:20 PM, Nori, Sekhar nsekhar@ti.com wrote:
Hi Victor,
On Fri, Oct 29, 2010 at 20:40:45, vm.rod25@gmail.com wrote:
From: Victor Rodriguez victor.rodriguez@sasken.com
This patch adds USB1.1 support for the Hawkboard-L138 system
Signed-off-by: Victor Rodriguez victor.rodriguez@sasken.com
+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(KERN_ERR "%s: could not request IRQ to watch "
- "over-current indicator changes\n", __func__);
- } else
- free_irq(irq, NULL);
Per Documentation/CodingStyle, else should have braces too.
Ok thanks
+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 */
Do we have this part on the hawkboard as well?
Yes the TPS2087 is the USB POWER MANAGER that we have on the board AFAIK this is the same and besides it is working, I have tested by my self by plugging different kind of USB devices, mas storage , Mouses and keyboards.
[...]
+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.
- */
No need of multi-line comment style here.
Ok changed to
/* Setup the Ref. clock frequency for the HAWK at 24 MHz. */
Sorry about the piecemeal review (you really generated new versions quickly).
Sorry about it I will take much more time for comments.
That is all I have on this series.
Also, you are CCing a whole lot of folks on each patch. Instead, you can automate CCing the relevant folks using --cc-cmd=<command> option of git-send-email
Use --cc-cmd="scripts/get_maintainer.pl --pattern-depth=2 -s" to generate list of relevant CCs.
Example:
scripts/get_maintainer.pl -f arch/arm/mach-davinci/board-omapl138-hawk.c --pattern-depth=2 -s
gives:
Kevin Hilman khilman@deeprootsystems.com Russell King linux@arm.linux.org.uk davinci-linux-open-source@linux.davincidsp.com linux-arm-kernel@lists.infradead.org
Recently Kevin requested all patches to CC Linux ARM Kernel mailing list so this should be OK.
scripts/get_maintainer.pl -f sound/soc/davinci/davinci-evm.c --pattern-depth=2 -s
gives:
Liam Girdwood lrg@slimlogic.co.uk Mark Brown broonie@opensource.wolfsonmicro.com alsa-devel@alsa-project.org
This is as per what Liam and Mark have been asking for.
Also, use --dry-run with git-send-email before sending actual emails to make sure the To and CC lists look good.
Ok I have done this
git send-email --dry-run --from "vm.rod25@gmail.com" --to "vm.rod25@gmail.com" --cc-cmd =scripts/get_maintainer.pl patches/sendedv6/*
I just have one question on the --to i think I should put the davinci mailing list as minimum right ? because the cover letter just will be send to me
From: vm.rod25@gmail.com To: vm.rod25@gmail.com Cc: Victor Rodriguez victor.rodriguez@sasken.com Subject: [PATCH v6 0/9] Add Omapl138-Hawkboard support Date: Tue, 2 Nov 2010 17:48:03 -0600 Message-Id: 1288741692-20096-1-git-send-email-vm.rod25@gmail.com X-Mailer: git-send-email 1.7.0.4
Thanks for the help
Sincerely yours
Victor Rodriguez
Thanks, Sekhar
On Wed, Nov 03, 2010 at 05:30:43, Victor Rodriguez wrote:
+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 */
Do we have this part on the hawkboard as well?
Yes the TPS2087 is the USB POWER MANAGER that we have on the board AFAIK this is the same and besides it is working, I have tested by my self by plugging different kind of USB devices, mas storage , Mouses and keyboards.
Just wanted to make sure we are not simply copying comments over from EVM code. If you have verified this, no action required.
Also, you are CCing a whole lot of folks on each patch. Instead, you can automate CCing the relevant folks using --cc-cmd=<command> option of git-send-email
Use --cc-cmd="scripts/get_maintainer.pl --pattern-depth=2 -s" to generate list of relevant CCs.
Example:
scripts/get_maintainer.pl -f arch/arm/mach-davinci/board-omapl138-hawk.c --pattern-depth=2 -s
gives:
Kevin Hilman khilman@deeprootsystems.com Russell King linux@arm.linux.org.uk davinci-linux-open-source@linux.davincidsp.com linux-arm-kernel@lists.infradead.org
Recently Kevin requested all patches to CC Linux ARM Kernel mailing list so this should be OK.
scripts/get_maintainer.pl -f sound/soc/davinci/davinci-evm.c --pattern-depth=2 -s
gives:
Liam Girdwood lrg@slimlogic.co.uk Mark Brown broonie@opensource.wolfsonmicro.com alsa-devel@alsa-project.org
This is as per what Liam and Mark have been asking for.
Also, use --dry-run with git-send-email before sending actual emails to make sure the To and CC lists look good.
Ok I have done this
git send-email --dry-run --from "vm.rod25@gmail.com" --to "vm.rod25@gmail.com" --cc-cmd =scripts/get_maintainer.pl patches/sendedv6/*
You should just try:
git send-email --dry-run --from="vm.rod25@gmail.com" --to=davinci-linux-open-source@linux.davincidsp.com --cc-cmd="scripts/get_maintainer.pl --pattern-depth=2 -s"
I just have one question on the --to i think I should put the davinci mailing list as minimum right ? because the cover letter just will be send to me
Yes. --to= should be davinci-linux-open-source@linux.davincidsp.com. You should automatically be CCed by git-send-email because of your sign-offs. If needed you can add an explicit --cc="vm.rod25@gmail.com"
Thanks, Sekhar
participants (4)
-
Mark Brown
-
Nori, Sekhar
-
Victor Rodriguez
-
vm.rod25@gmail.com