On Mon, Oct 11, 2010 at 12:08 PM, Victor Rodriguez <[email protected]> wrote: > On Sat, Oct 9, 2010 at 7:38 AM, Sergei Shtylyov <[email protected]> wrote: >> Hello. >> >> On 09-10-2010 5:12, [email protected] wrote: >> >>> From: Victor Rodriguez<[email protected]> >> >>> This patch adds MMC/SD support for the Hawkboard-L138 system >>> It is under the machine name "omapl138_hawkboard". >>> This system is based on the da850 davinci CPU architecture. >> >>> Signed-off-by: Victor Rodriguez<[email protected]> >> >> [...] >> >>> diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c >>> b/arch/arm/mach-davinci/board-omapl138-hawk.c >>> index ba3718a..ae7f75c 100644 >>> --- a/arch/arm/mach-davinci/board-omapl138-hawk.c >>> +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c >> >> [...] >>> >>> @@ -180,6 +201,28 @@ static __init void omapl138_hawk_init(void) >>> "mcasp mux setup failed: %d\n", ret); >>> da8xx_register_mcasp(0,&omapl138_hawk_snd_data); >>> >>> + ret = davinci_cfg_reg_list(da850_mmcsd0_pins); >> >> No, you can't use the generic pin list. You should add to it the two GPIOs >> used as WP/CD inputs, and define the new list in the board file. > > > Ok but will have to also modify the more files > > The other patch could be (please omit the board-omapl138-hawk.c > modification that will be changed in just one patch it is just for > compare previous and possible code) > --- > arch/arm/mach-davinci/board-omapl138-hawk.c | 9 ++++++++- > arch/arm/mach-davinci/da850.c | 2 ++ > arch/arm/mach-davinci/include/mach/mux.h | 2 ++ > 3 files changed, 12 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c > b/arch/arm/mach-davinci/board-omapl138-hawk.c > index 4a39249..8a9f9c0 100644 > --- a/arch/arm/mach-davinci/board-omapl138-hawk.c > +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c > @@ -151,6 +151,13 @@ 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); > @@ -200,7 +207,7 @@ static __init void omapl138_hawk_init(void) > pr_warning("%s: mcasp mux setup failed: %d\n", __func__, ret); > > da8xx_regisv9/v2/0002-davinci-MMC-SD-pins-support-for-Omapl138-Hawkboar.patchter_mcasp(0, > &omapl138_hawk_snd_data); > > - ret = davinci_cfg_reg_list(da850_mmcsd0_pins); > + ret = davinci_cfg_reg_list(hawk_mmcsd0_pins); > if (ret) > pr_warning("%s: MMC/SD0 mux setup failed: %d\n", > __func__, ret); > diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c > index f033a0a..7787f5a 100644 > --- a/arch/arm/mach-davinci/da850.c > +++ b/arch/arm/mach-davinci/da850.c > @@ -548,6 +548,8 @@ static const struct mux_config da850_pins[] = { > MUX_CFG(DA850, GPIO2_15, 5, 0, 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, GPIO3_12, 7, 12, 15, 8, false) > + MUX_CFG(DA850, GPIO3_13, 7, 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..e043f11 100644 > --- a/arch/arm/mach-davinci/include/mach/mux.h > +++ b/arch/arm/mach-davinci/include/mach/mux.h > @@ -913,6 +913,8 @@ enum davinci_da850_index { > DA850_GPIO2_15, > DA850_GPIO4_0, > DA850_GPIO4_1, > + DA850_GPIO3_12, > + DA850_GPIO3_13, > DA850_RTC_ALARM, > }; > > -- > 1.6.0.5 > > I could make tow more pathces one for > arch/arm/mach-davinci/da850.c | 2 ++ > > and other for > > arch/arm/mach-davinci/include/mach/mux.h | 2 ++ > > > Is this Ok ? > > I have tested with these changes and it works perfect > > Thanks and regards > > Victor Rodriguez > > >>> + if (ret) >>> + pr_warning("omapl138_hawk_init: " >>> + "mmcsd0 mux setup failed: %d\n", ret); >> >> pr_warning("%s: MMC/SD0 mux setup failed: %d\n", >> __func__, ret); >> >>> + ret = gpio_request(DA850_HAWK_MMCSD_CD_PIN, "MMC CD\n"); >>> + if (ret) >>> + pr_warning("da850_hawk_init: can not open GPIO %d\n", >>> + DA850_HAWK_MMCSD_CD_PIN); >> >> pr_warning("%s: can not open GPIO %d\n", >> __func__, DA850_HAWK_MMCSD_CD_PIN); >> >>> + gpio_direction_input(DA850_HAWK_MMCSD_CD_PIN); >>> + >>> + ret = gpio_request(DA850_HAWK_MMCSD_WP_PIN, "MMC WP\n"); >>> + if (ret) >>> + pr_warning("da850_hawk_init: can not open GPIO %d\n", >>> + DA850_HAWK_MMCSD_WP_PIN); >> >> pr_warning("%s: can not open GPIO %d\n", >> __func__, DA850_HAWK_MMCSD_WP_PIN); >> >>> + gpio_direction_input(DA850_HAWK_MMCSD_WP_PIN); >>> + >>> + ret = da8xx_register_mmcsd0(&da850_mmc_config); >>> + if (ret) >>> + pr_warning("omapl138_hawk_init: " >>> + "mmcsd0 registration failed: %d\n", ret); >> >> pr_warning("%s: MMC/SD0 registration failed: %d\n", >> __func__, ret); >> >> WBR, Sergei >> >
Sergei the final patch could be Subject: [PATCH v2] davinci: MMC/SD pins support for Omapl138-Hawkboar This patch adds MMC/SD support for the Hawkboard-L138 system Signed-off-by: Victor Rodriguez <[email protected]> --- arch/arm/mach-davinci/da850.c | 2 ++ arch/arm/mach-davinci/include/mach/mux.h | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c index f033a0a..7787f5a 100644 --- a/arch/arm/mach-davinci/da850.c +++ b/arch/arm/mach-davinci/da850.c @@ -548,6 +548,8 @@ static const struct mux_config da850_pins[] = { MUX_CFG(DA850, GPIO2_15, 5, 0, 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, GPIO3_12, 7, 12, 15, 8, false) + MUX_CFG(DA850, GPIO3_13, 7, 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..e043f11 100644 --- a/arch/arm/mach-davinci/include/mach/mux.h +++ b/arch/arm/mach-davinci/include/mach/mux.h @@ -913,6 +913,8 @@ enum davinci_da850_index { DA850_GPIO2_15, DA850_GPIO4_0, DA850_GPIO4_1, + DA850_GPIO3_12, + DA850_GPIO3_13, DA850_RTC_ALARM, }; -- 1.6.0.5 And Subject: [PATCH v2] davinci: MMC/SD support for Omapl138-Hawkboar This patch adds MMC/SD support for the Hawkboard-L138 system It is under the machine name "omapl138_hawkboard". This system is based on the da850 davinci CPU architecture. Signed-off-by: Victor Rodriguez <[email protected]> --- arch/arm/mach-davinci/board-omapl138-hawk.c | 50 +++++++++++++++++++++++++++ 1 files changed, 50 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c index 182f097..8a9f9c0 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 DA850_EVM_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, @@ -149,6 +151,32 @@ 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 struct davinci_uart_config omapl138_hawk_uart_config __initdata = { .enabled_uarts = 0x7, }; @@ -179,6 +207,28 @@ 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); + ret = davinci_cfg_reg_list(hawk_mmcsd0_pins); + if (ret) + pr_warning("%s: MMC/SD0 mux setup failed: %d\n", + __func__, ret); + + ret = gpio_request(DA850_HAWK_MMCSD_CD_PIN, "MMC CD\n"); + if (ret) + pr_warning("%s: can not open GPIO %d\n", + __func__, DA850_HAWK_MMCSD_CD_PIN); + gpio_direction_input(DA850_HAWK_MMCSD_CD_PIN); + + ret = gpio_request(DA850_HAWK_MMCSD_WP_PIN, "MMC WP\n"); + if (ret) + pr_warning("%s: can not open GPIO %d\n", + __func__, DA850_HAWK_MMCSD_WP_PIN); + gpio_direction_input(DA850_HAWK_MMCSD_WP_PIN); + + ret = da8xx_register_mmcsd0(&da850_mmc_config); + if (ret) + pr_warning("%s: MMC/SD0 registration failed: %d\n", + __func__, ret); + ret = da8xx_register_watchdog(); if (ret) pr_warning("omapl138_hawk_init: " -- 1.6.0.5 Is this ok or should make the first two patches? Thanks for check the patches Sincerely yours Victor Rodriguez _______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
