[PATCH 4/4] mmc: sdhci-esdhc-imx: extend card_detect and write_protect support
Arnaud Patard (Rtp)
arnaud.patard at rtp-net.org
Sat Jun 11 15:21:47 EDT 2011
Shawn Guo <shawn.guo at freescale.com> writes:
> On Sat, Jun 11, 2011 at 01:59:54PM +0200, Arnaud Patard wrote:
>> Shawn Guo <shawn.guo at freescale.com> writes:
>>
>> > On Sat, Jun 11, 2011 at 11:30:42AM +0200, Arnaud Patard wrote:
>> >> Shawn Guo <shawn.guo at linaro.org> writes:
>> >>
>> >> Hi,
>> >>
>> >> > The patch extends card_detect and write_protect support to get mx5
>> >> > family and more scenarios supported. The changes include:
>> >> >
>> >> > * Turn platform_data from optional to mandatory
>> >> > * Add cd_types and wp_types into platform_data to cover more use
>> >> > cases
>> >> > * Remove the use of flag ESDHC_FLAG_GPIO_FOR_CD
>> >> > * Adjust machine codes to adopt the platform_data changes
>> >>
>> >> Before I go and test theses patches, I'd like to get some
>> >> clarification. From what I see, you've modified all over the place the
>> >> code to provide a platform_data, setting wp/cd type to type "NONE", as
>> >> if it was the default you choose. Why this default and not considerer
>> >> the "SIGNAL" type being the default ? Is this choice the safest one when
>> >> one doesn't know what type to choose or can it have some bad side
>> >> effects ?
>> >
>> > The mx51_babbage is the only board support I'm concerned about in
>> > this patch. For other boards, I chose to translate the NULL pdata
>> > into "NONE" for both wp/cd types as the safest one, because I do not
>> > have (or care to check) the board schematics telling how wp/cd are
>> > routed on those boards. The patch ensures there is no regression
>> > for those boards, and let people who have schematics to set up wp/cd
>> > types later.
>>
>> ok. Thanks for making things clear. I see some changes for
>> loco/imx53qsb. Do you need testers for it too or you've tested it ?
>>
> I do not see changes for loco except NULL pdata -> "NONE" types. But
> testing are always welcomed and appreciated.
oops, sorry. I mixed with the other patches sent today
(http://lists.infradead.org/pipermail/linux-arm-kernel/2011-June/052705.html)
>
>> >
>> >> Also, why didn't you modify the imx*_add_sdhci_esdhc_imx() functions to
>> >> provide the default platform_data by themselves that if the 2nd argument
>> >> was NULL instead of modifying all theses machines files ?
>> >>
>> > As I said above, the wp/cd "NONE" types translated from NULL pdata
>> > will be set up properly later by people who have schematics.
>>
>> You're not answering my question about moving the NULL-> "NONE" type
>> from *all* modified machine file into the imx*add_sdhci_esdhc_imx(). If
>> it's the default, why all machines file have to be modified to set it ?
>> Moreover, *nothing* AFAICS is preventing to call theses functions will
>> NULL. What will happen ? An oops ? To me, a default is the value set
>> when nothing is set, and clearly modifying all functions call site due
>> to having to provide the default seems imho wrong.
>>
> Ah, good point. Please review changes below. If it looks good to
> you, I will incorporate it in the next version of the patch.
>
> diff --git a/arch/arm/plat-mxc/devices/platform-sdhci-esdhc-imx.c b/arch/arm/plat-mxc/devices/platform-sdhci-esdhc-imx.c
> index 6b2940b..a880f73 100644
> --- a/arch/arm/plat-mxc/devices/platform-sdhci-esdhc-imx.c
> +++ b/arch/arm/plat-mxc/devices/platform-sdhci-esdhc-imx.c
> @@ -65,6 +65,11 @@ imx53_sdhci_esdhc_imx_data[] __initconst = {
> };
> #endif /* ifdef CONFIG_SOC_IMX53 */
>
> +static const struct esdhc_platform_data default_esdhc_pdata __initconst = {
> + .wp_type = ESDHC_WP_NONE,
> + .cd_type = ESDHC_CD_NONE,
> +};
> +
> struct platform_device *__init imx_add_sdhci_esdhc_imx(
> const struct imx_sdhci_esdhc_imx_data *data,
> const struct esdhc_platform_data *pdata)
> @@ -81,6 +86,13 @@ struct platform_device *__init imx_add_sdhci_esdhc_imx(
> },
> };
>
> + /*
> + * If machine does not provide a pdata, use the default one
> + * which means none WP/CD support
> + */
> + if (!pdata)
> + pdata = &default_esdhc_pdata;
> +
> return imx_add_platform_device("sdhci-esdhc-imx", data->id, res,
> ARRAY_SIZE(res), pdata, sizeof(*pdata));
> }
Great. I've still not tested it but it's exactly what I was thinking.
Thanks,
Arnaud
More information about the linux-arm-kernel
mailing list