[PATCH] ARM: SAMSUNG: Consolidate common function to set SDHCI plat data
Kukjin Kim
kgene.kim at samsung.com
Fri Aug 19 01:24:09 EDT 2011
Banajit Goswami wrote:
>
> Moves similar functions to set SDHCI platform data for all Samsung
> boards to a common location, thereby saves a few lines.
>
> Signed-off-by: Banajit Goswami <banajit.g at samsung.com>
> ---
> arch/arm/plat-samsung/dev-hsmmc.c | 19 +------------------
> arch/arm/plat-samsung/dev-hsmmc1.c | 19 +------------------
> arch/arm/plat-samsung/dev-hsmmc2.c | 19 +------------------
> arch/arm/plat-samsung/dev-hsmmc3.c | 19 +------------------
> arch/arm/plat-samsung/include/plat/sdhci.h | 7 +++++++
> arch/arm/plat-samsung/platformdata.c | 22
> ++++++++++++++++++++++
> 6 files changed, 33 insertions(+), 72 deletions(-)
>
> diff --git a/arch/arm/plat-samsung/dev-hsmmc.c
b/arch/arm/plat-samsung/dev-
> hsmmc.c
> index db7a65c..06825c4 100644
> --- a/arch/arm/plat-samsung/dev-hsmmc.c
> +++ b/arch/arm/plat-samsung/dev-hsmmc.c
> @@ -58,22 +58,5 @@ struct platform_device s3c_device_hsmmc0 = {
>
> void s3c_sdhci0_set_platdata(struct s3c_sdhci_platdata *pd)
> {
> - struct s3c_sdhci_platdata *set = &s3c_hsmmc0_def_platdata;
> -
> - set->cd_type = pd->cd_type;
> - set->ext_cd_init = pd->ext_cd_init;
> - set->ext_cd_cleanup = pd->ext_cd_cleanup;
> - set->ext_cd_gpio = pd->ext_cd_gpio;
> - set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
> -
> - if (pd->max_width)
> - set->max_width = pd->max_width;
> - if (pd->cfg_gpio)
> - set->cfg_gpio = pd->cfg_gpio;
> - if (pd->cfg_card)
> - set->cfg_card = pd->cfg_card;
> - if (pd->host_caps)
> - set->host_caps |= pd->host_caps;
> - if (pd->clk_type)
> - set->clk_type = pd->clk_type;
> + s3c_sdhci_set_platdata(pd, &s3c_hsmmc0_def_platdata);
> }
> diff --git a/arch/arm/plat-samsung/dev-hsmmc1.c
b/arch/arm/plat-samsung/dev-
> hsmmc1.c
> index 2497321..4524ef4 100644
> --- a/arch/arm/plat-samsung/dev-hsmmc1.c
> +++ b/arch/arm/plat-samsung/dev-hsmmc1.c
> @@ -58,22 +58,5 @@ struct platform_device s3c_device_hsmmc1 = {
>
> void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd)
> {
> - struct s3c_sdhci_platdata *set = &s3c_hsmmc1_def_platdata;
> -
> - set->cd_type = pd->cd_type;
> - set->ext_cd_init = pd->ext_cd_init;
> - set->ext_cd_cleanup = pd->ext_cd_cleanup;
> - set->ext_cd_gpio = pd->ext_cd_gpio;
> - set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
> -
> - if (pd->max_width)
> - set->max_width = pd->max_width;
> - if (pd->cfg_gpio)
> - set->cfg_gpio = pd->cfg_gpio;
> - if (pd->cfg_card)
> - set->cfg_card = pd->cfg_card;
> - if (pd->host_caps)
> - set->host_caps |= pd->host_caps;
> - if (pd->clk_type)
> - set->clk_type = pd->clk_type;
> + s3c_sdhci_set_platdata(pd, &s3c_hsmmc1_def_platdata);
> }
> diff --git a/arch/arm/plat-samsung/dev-hsmmc2.c
b/arch/arm/plat-samsung/dev-
> hsmmc2.c
> index f60aedb..9cede96 100644
> --- a/arch/arm/plat-samsung/dev-hsmmc2.c
> +++ b/arch/arm/plat-samsung/dev-hsmmc2.c
> @@ -59,22 +59,5 @@ struct platform_device s3c_device_hsmmc2 = {
>
> void s3c_sdhci2_set_platdata(struct s3c_sdhci_platdata *pd)
> {
> - struct s3c_sdhci_platdata *set = &s3c_hsmmc2_def_platdata;
> -
> - set->cd_type = pd->cd_type;
> - set->ext_cd_init = pd->ext_cd_init;
> - set->ext_cd_cleanup = pd->ext_cd_cleanup;
> - set->ext_cd_gpio = pd->ext_cd_gpio;
> - set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
> -
> - if (pd->max_width)
> - set->max_width = pd->max_width;
> - if (pd->cfg_gpio)
> - set->cfg_gpio = pd->cfg_gpio;
> - if (pd->cfg_card)
> - set->cfg_card = pd->cfg_card;
> - if (pd->host_caps)
> - set->host_caps |= pd->host_caps;
> - if (pd->clk_type)
> - set->clk_type = pd->clk_type;
> + s3c_sdhci_set_platdata(pd, &s3c_hsmmc2_def_platdata);
> }
> diff --git a/arch/arm/plat-samsung/dev-hsmmc3.c
b/arch/arm/plat-samsung/dev-
> hsmmc3.c
> index ede776f..0358ef4 100644
> --- a/arch/arm/plat-samsung/dev-hsmmc3.c
> +++ b/arch/arm/plat-samsung/dev-hsmmc3.c
> @@ -62,22 +62,5 @@ struct platform_device s3c_device_hsmmc3 = {
>
> void s3c_sdhci3_set_platdata(struct s3c_sdhci_platdata *pd)
> {
> - struct s3c_sdhci_platdata *set = &s3c_hsmmc3_def_platdata;
> -
> - set->cd_type = pd->cd_type;
> - set->ext_cd_init = pd->ext_cd_init;
> - set->ext_cd_cleanup = pd->ext_cd_cleanup;
> - set->ext_cd_gpio = pd->ext_cd_gpio;
> - set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
> -
> - if (pd->max_width)
> - set->max_width = pd->max_width;
> - if (pd->cfg_gpio)
> - set->cfg_gpio = pd->cfg_gpio;
> - if (pd->cfg_card)
> - set->cfg_card = pd->cfg_card;
> - if (pd->host_caps)
> - set->host_caps |= pd->host_caps;
> - if (pd->clk_type)
> - set->clk_type = pd->clk_type;
> + s3c_sdhci_set_platdata(pd, &s3c_hsmmc3_def_platdata);
> }
> diff --git a/arch/arm/plat-samsung/include/plat/sdhci.h b/arch/arm/plat-
> samsung/include/plat/sdhci.h
> index 058e096..20dc81c 100644
> --- a/arch/arm/plat-samsung/include/plat/sdhci.h
> +++ b/arch/arm/plat-samsung/include/plat/sdhci.h
> @@ -86,6 +86,13 @@ struct s3c_sdhci_platdata {
> struct mmc_card *card);
> };
>
> +/* s3c_sdhci_set_platdata() - common helper for setting SDHCI platform
data
> + * @pd: The default platform data for this device.
> + * @set: Pointer to the platform data to fill in.
> + */
> +extern void s3c_sdhci_set_platdata(struct s3c_sdhci_platdata *pd,
> + struct s3c_sdhci_platdata *set);
> +
> /**
> * s3c_sdhci0_set_platdata - Set platform data for S3C SDHCI device.
> * @pd: Platform data to register to device.
> diff --git a/arch/arm/plat-samsung/platformdata.c b/arch/arm/plat-
> samsung/platformdata.c
> index 7cf2e1e..27bec0a 100644
> --- a/arch/arm/plat-samsung/platformdata.c
> +++ b/arch/arm/plat-samsung/platformdata.c
> @@ -14,6 +14,7 @@
> #include <linux/platform_device.h>
>
> #include <plat/devs.h>
> +#include <plat/sdhci.h>
>
> void __init *s3c_set_platdata(void *pd, size_t pdsize,
> struct platform_device *pdev)
> @@ -35,3 +36,24 @@ void __init *s3c_set_platdata(void *pd, size_t pdsize,
> pdev->dev.platform_data = npd;
> return npd;
> }
> +
> +void s3c_sdhci_set_platdata(struct s3c_sdhci_platdata *pd,
> + struct s3c_sdhci_platdata *set)
> +{
> + set->cd_type = pd->cd_type;
> + set->ext_cd_init = pd->ext_cd_init;
> + set->ext_cd_cleanup = pd->ext_cd_cleanup;
> + set->ext_cd_gpio = pd->ext_cd_gpio;
> + set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
> +
> + if (pd->max_width)
> + set->max_width = pd->max_width;
> + if (pd->cfg_gpio)
> + set->cfg_gpio = pd->cfg_gpio;
> + if (pd->cfg_card)
> + set->cfg_card = pd->cfg_card;
> + if (pd->host_caps)
> + set->host_caps |= pd->host_caps;
> + if (pd->clk_type)
> + set->clk_type = pd->clk_type;
> +}
> --
> 1.7.2.3
Banajit, OK, applied.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim at samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
More information about the linux-arm-kernel
mailing list