"Mark A. Greer" <[email protected]> writes:

> From: Mark A. Greer <[email protected]>
>
> Currently the davinci code assumes that the pinmux base register
> address is the same for all davinci SoCs.  This is no longer true
> so set the pinmux base register address based on the SoC type.
>
> Signed-off-by: Mark A. Greer <[email protected]>

In addition to Dave's comment, minor formatting nitpick below...

> ---
>  arch/arm/mach-davinci/dm355.c               |    2 ++
>  arch/arm/mach-davinci/dm644x.c              |    2 ++
>  arch/arm/mach-davinci/dm646x.c              |    2 ++
>  arch/arm/mach-davinci/include/mach/common.h |    1 +
>  arch/arm/mach-davinci/mux.c                 |   11 +++++++----
>  5 files changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
> index d6086d5..1e446ee 100644
> --- a/arch/arm/mach-davinci/dm355.c
> +++ b/arch/arm/mach-davinci/dm355.c
> @@ -13,6 +13,7 @@
>  #include <linux/clk.h>
>  #include <linux/platform_device.h>
>  #include <linux/dma-mapping.h>
> +#include <linux/io.h>
>  
>  #include <linux/spi/spi.h>
>  
> @@ -471,4 +472,5 @@ DAVINCI_SOC_START(dm355)
>       .cpu_clks       = dm355_clks,
>       .mux_pins       = dm355_pins,
>       .mux_pins_num   = ARRAY_SIZE(dm355_pins),
> +     .mux_base       = IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE),
>  DAVINCI_SOC_END
> diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
> index 889c675..92cda29 100644
> --- a/arch/arm/mach-davinci/dm644x.c
> +++ b/arch/arm/mach-davinci/dm644x.c
> @@ -11,6 +11,7 @@
>  #include <linux/kernel.h>
>  #include <linux/init.h>
>  #include <linux/clk.h>
> +#include <linux/io.h>
>  
>  #include <mach/dm644x.h>
>  #include <mach/clock.h>
> @@ -363,4 +364,5 @@ DAVINCI_SOC_START(dm644x)
>       .cpu_clks       = dm644x_clks,
>       .mux_pins       = dm644x_pins,
>       .mux_pins_num   = ARRAY_SIZE(dm644x_pins),
> +     .mux_base       = IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE),
>  DAVINCI_SOC_END
> diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
> index b840128..0b0f9dd 100644
> --- a/arch/arm/mach-davinci/dm646x.c
> +++ b/arch/arm/mach-davinci/dm646x.c
> @@ -11,6 +11,7 @@
>  #include <linux/kernel.h>
>  #include <linux/init.h>
>  #include <linux/clk.h>
> +#include <linux/io.h>
>  
>  #include <mach/dm646x.h>
>  #include <mach/clock.h>
> @@ -274,4 +275,5 @@ DAVINCI_SOC_START(dm646x)
>       .cpu_clks       = dm646x_clks,
>       .mux_pins       = dm646x_pins,
>       .mux_pins_num   = ARRAY_SIZE(dm646x_pins),
> +     .mux_base       = IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE),
>  DAVINCI_SOC_END
> diff --git a/arch/arm/mach-davinci/include/mach/common.h 
> b/arch/arm/mach-davinci/include/mach/common.h
> index 7bdf526..741968a 100644
> --- a/arch/arm/mach-davinci/include/mach/common.h
> +++ b/arch/arm/mach-davinci/include/mach/common.h
> @@ -31,6 +31,7 @@ struct davinci_soc_info {
>       struct clk **cpu_clks;
>       const struct mux_config *mux_pins;
>       unsigned long mux_pins_num;
> +     void __iomem *mux_base;
>  };
>  
>  #define DAVINCI_SOC_START(_name)                                     \
> diff --git a/arch/arm/mach-davinci/mux.c b/arch/arm/mach-davinci/mux.c
> index 9e3e31b..9bff545 100644
> --- a/arch/arm/mach-davinci/mux.c
> +++ b/arch/arm/mach-davinci/mux.c
> @@ -21,6 +21,7 @@
>  
>  #include <mach/hardware.h>
>  #include <mach/mux.h>
> +#include <mach/common.h>
>  
>  static const struct mux_config *mux_table;
>  static unsigned long pin_table_sz;
> @@ -40,7 +41,6 @@ int __init davinci_mux_register(const struct mux_config 
> *pins,
>  int __init_or_module davinci_cfg_reg(const unsigned long index)
>  {
>       static DEFINE_SPINLOCK(mux_spin_lock);
> -     void __iomem *base = IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE);

Minor formatting nitpick...  how about leaving the base here, but doing

        void __iomem *base = davinci_soc_info->mux_base;

That way you don't have to line-wrap the read/write statements below.

>       unsigned long flags;
>       const struct mux_config *cfg;
>       unsigned int reg_orig = 0, reg = 0;
> @@ -68,7 +68,8 @@ int __init_or_module davinci_cfg_reg(const unsigned long 
> index)
>               unsigned        tmp1, tmp2;
>  
>               spin_lock_irqsave(&mux_spin_lock, flags);
> -             reg_orig = __raw_readl(base + cfg->mux_reg);
> +             reg_orig = __raw_readl(davinci_soc_info->mux_base
> +                             + cfg->mux_reg);
>  
>               mask = (cfg->mask << cfg->mask_offset);
>               tmp1 = reg_orig & mask;
> @@ -80,7 +81,7 @@ int __init_or_module davinci_cfg_reg(const unsigned long 
> index)
>               if (tmp1 != tmp2)
>                       warn = 1;
>  
> -             __raw_writel(reg, base + cfg->mux_reg);
> +             __raw_writel(reg, davinci_soc_info->mux_base + cfg->mux_reg);
>               spin_unlock_irqrestore(&mux_spin_lock, flags);
>       }
>  
> @@ -94,7 +95,9 @@ int __init_or_module davinci_cfg_reg(const unsigned long 
> index)
>       if (cfg->debug || warn) {
>               printk(KERN_WARNING "MUX: Setting register %s\n", cfg->name);
>               printk(KERN_WARNING "      %s (0x%08x) = 0x%08x -> 0x%08x\n",
> -                    cfg->mux_reg_name, cfg->mux_reg, reg_orig, reg);
> +                    cfg->mux_reg_name,
> +                    davinci_soc_info->mux_base + cfg->mux_reg,
> +                    reg_orig, reg);
>       }
>  #endif
>  
> -- 
> 1.6.0.3
>
>
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to