Cyril Chemparathy <[email protected]> writes:

> This patch replaces the jtag id base info in davinci_soc_info with a physical
> address which is then ioremap()ed within common code.
>
> This patch (in combination with a similar change for PSC) will allow us to
> eliminate the SYSCFG nastiness in DA8xx code.
>
> Signed-off-by: Cyril Chemparathy <[email protected]>
> ---
> v2: fixed return value on ioremap failure

This one was failing on da8xx...

>  arch/arm/mach-davinci/common.c              |   49 +++++++++++++++-----------
>  arch/arm/mach-davinci/da830.c               |    3 +-
>  arch/arm/mach-davinci/da850.c               |    3 +-
>  arch/arm/mach-davinci/dm355.c               |    2 +-
>  arch/arm/mach-davinci/dm365.c               |    2 +-
>  arch/arm/mach-davinci/dm644x.c              |    2 +-
>  arch/arm/mach-davinci/dm646x.c              |    2 +-
>  arch/arm/mach-davinci/include/mach/common.h |    2 +-
>  8 files changed, 35 insertions(+), 30 deletions(-)
>
> diff --git a/arch/arm/mach-davinci/common.c b/arch/arm/mach-davinci/common.c
> index f8221c5..ddbd57b 100644
> --- a/arch/arm/mach-davinci/common.c
> +++ b/arch/arm/mach-davinci/common.c
> @@ -37,26 +37,42 @@ void davinci_get_mac_addr(struct memory_accessor 
> *mem_acc, void *context)
>               pr_info("Read MAC addr from EEPROM: %pM\n", mac_addr);
>  }
>  
> -static struct davinci_id * __init davinci_get_id(u32 jtag_id)
> +static int __init davinci_init_id(struct davinci_soc_info *soc_info)
>  {
> -     int i;
> -     struct davinci_id *dip;
> -     u8 variant = (jtag_id & 0xf0000000) >> 28;
> -     u16 part_no = (jtag_id & 0x0ffff000) >> 12;
> +     int                     i;
> +     struct davinci_id       *dip;
> +     u8                      variant;
> +     u16                     part_no;
> +     void __iomem            *base;
> +
> +     base = ioremap(davinci_soc_info.jtag_id_reg, SZ_4K);

...because here you're assuming this value is an absolute physical address...

[...]

> diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c
> index 4f5727f..115f791 100644
> --- a/arch/arm/mach-davinci/da830.c
> +++ b/arch/arm/mach-davinci/da830.c
> @@ -1188,6 +1188,7 @@ static struct davinci_timer_info da830_timer_info = {
>  static struct davinci_soc_info davinci_soc_info_da830 = {
>       .io_desc                = da830_io_desc,
>       .io_desc_num            = ARRAY_SIZE(da830_io_desc),
> +     .jtag_id_reg            = DA8XX_JTAG_ID_REG,

and here it is set as just the offset.

>       .ids                    = da830_ids,
>       .ids_num                = ARRAY_SIZE(da830_ids),
>       .cpu_clks               = da830_clks,
> @@ -1215,8 +1216,6 @@ void __init da830_init(void)
>       if (WARN(!da8xx_syscfg0_base, "Unable to map syscfg0 module"))
>               return;
>  
> -     davinci_soc_info_da830.jtag_id_base =
> -                                     DA8XX_SYSCFG0_VIRT(DA8XX_JTAG_ID_REG);
>       davinci_soc_info_da830.pinmux_base = DA8XX_SYSCFG0_VIRT(0x120);
>  
>       davinci_common_init(&davinci_soc_info_da830);
> diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
> index cb7f663..7c0ce45 100644
> --- a/arch/arm/mach-davinci/da850.c
> +++ b/arch/arm/mach-davinci/da850.c
> @@ -1073,6 +1073,7 @@ no_ddrpll_mem:
>  static struct davinci_soc_info davinci_soc_info_da850 = {
>       .io_desc                = da850_io_desc,
>       .io_desc_num            = ARRAY_SIZE(da850_io_desc),
> +     .jtag_id_reg            = DA8XX_JTAG_ID_REG,

Here too.


Fold the patch below into this patch and it boots on da8xx.


Kevin


diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c
index 6804a59..3a7a96f 100644
--- a/arch/arm/mach-davinci/da830.c
+++ b/arch/arm/mach-davinci/da830.c
@@ -1185,7 +1185,7 @@ static struct davinci_timer_info da830_timer_info = {
 static struct davinci_soc_info davinci_soc_info_da830 = {
        .io_desc                = da830_io_desc,
        .io_desc_num            = ARRAY_SIZE(da830_io_desc),
-       .jtag_id_reg            = DA8XX_JTAG_ID_REG,
+       .jtag_id_reg            = DA8XX_SYSCFG0_BASE + DA8XX_JTAG_ID_REG,
        .ids                    = da830_ids,
        .ids_num                = ARRAY_SIZE(da830_ids),
        .cpu_clks               = da830_clks,
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index a08cb91..6b8331b 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -1070,7 +1070,7 @@ no_ddrpll_mem:
 static struct davinci_soc_info davinci_soc_info_da850 = {
        .io_desc                = da850_io_desc,
        .io_desc_num            = ARRAY_SIZE(da850_io_desc),
-       .jtag_id_reg            = DA8XX_JTAG_ID_REG,
+       .jtag_id_reg            = DA8XX_SYSCFG0_BASE + DA8XX_JTAG_ID_REG,
        .ids                    = da850_ids,
        .ids_num                = ARRAY_SIZE(da850_ids),
        .cpu_clks               = da850_clks,
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to