[PATCH 15/17] ARM: at91: remove old setup
Alexandre Belloni
alexandre.belloni at free-electrons.com
Wed Jan 21 12:40:00 PST 2015
On 21/01/2015 at 17:29:42 +0100, Nicolas Ferre wrote :
> Le 15/01/2015 22:58, Alexandre Belloni a écrit :
> > The old initialization is not used anymore, remove it.
> > Also remove now unused cpu.h and at91_dbgu.h
> >
> > Signed-off-by: Alexandre Belloni <alexandre.belloni at free-electrons.com>
> > ---
> > arch/arm/mach-at91/generic.h | 4 -
> > arch/arm/mach-at91/include/mach/at91_dbgu.h | 63 ------
> > arch/arm/mach-at91/include/mach/at91_ramc.h | 6 -
> > arch/arm/mach-at91/include/mach/at91sam9_smc.h | 2 -
> > arch/arm/mach-at91/include/mach/cpu.h | 240 --------------------
>
> BTW, both at91_dbgu.h and cpu.h are needed for the uncompress.h AT91
> file. I need to re-integrate both of them until this feature is
> completely generalized with multi-platform. Are you okay with this
> modification?
>
Ok, then remove it along with uncompress.h later. I rebased that branch
too many times, sorry about that.
> > arch/arm/mach-at91/pm.c | 5 +-
> > arch/arm/mach-at91/setup.c | 301 -------------------------
>
> I'm perfectly fine with removing the old setup code as we have the full
> DT initialization in place.
> This setup code didn't prove it had added any benefit in comparison with
> the usual DT initialization process. Code is much more simpler and clearer.
>
> Acked-by: Nicolas Ferre <nicolas.ferre at atmel.com>
>
> I plan to queue these patches really soon on top of my
> at91-3.20-cleanup branch.
>
> Thanks, bye.
>
>
> > 7 files changed, 4 insertions(+), 617 deletions(-)
> > delete mode 100644 arch/arm/mach-at91/include/mach/at91_dbgu.h
> > delete mode 100644 arch/arm/mach-at91/include/mach/cpu.h
> >
> > diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h
> > index 1e60faec2eba..881e73a27fab 100644
> > --- a/arch/arm/mach-at91/generic.h
> > +++ b/arch/arm/mach-at91/generic.h
> > @@ -14,10 +14,6 @@
> > #include <linux/of.h>
> > #include <linux/reboot.h>
> >
> > - /* Map io */
> > -extern void __init at91_map_io(void);
> > -extern void __init at91_alt_map_io(void);
> > -
> > /* Processors */
> > extern void __init at91_dt_initialize(void);
> >
> > diff --git a/arch/arm/mach-at91/include/mach/at91_dbgu.h b/arch/arm/mach-at91/include/mach/at91_dbgu.h
> > deleted file mode 100644
> > index 42925e8f78e4..000000000000
> > --- a/arch/arm/mach-at91/include/mach/at91_dbgu.h
> > +++ /dev/null
> > @@ -1,63 +0,0 @@
> > -/*
> > - * arch/arm/mach-at91/include/mach/at91_dbgu.h
> > - *
> > - * Copyright (C) 2005 Ivan Kokshaysky
> > - * Copyright (C) SAN People
> > - *
> > - * Debug Unit (DBGU) - System peripherals registers.
> > - * Based on AT91RM9200 datasheet revision E.
> > - *
> > - * This program is free software; you can redistribute it and/or modify
> > - * it under the terms of the GNU General Public License as published by
> > - * the Free Software Foundation; either version 2 of the License, or
> > - * (at your option) any later version.
> > - */
> > -
> > -#ifndef AT91_DBGU_H
> > -#define AT91_DBGU_H
> > -
> > -#define AT91_DBGU_CR (0x00) /* Control Register */
> > -#define AT91_DBGU_MR (0x04) /* Mode Register */
> > -#define AT91_DBGU_IER (0x08) /* Interrupt Enable Register */
> > -#define AT91_DBGU_TXRDY (1 << 1) /* Transmitter Ready */
> > -#define AT91_DBGU_TXEMPTY (1 << 9) /* Transmitter Empty */
> > -#define AT91_DBGU_IDR (0x0c) /* Interrupt Disable Register */
> > -#define AT91_DBGU_IMR (0x10) /* Interrupt Mask Register */
> > -#define AT91_DBGU_SR (0x14) /* Status Register */
> > -#define AT91_DBGU_RHR (0x18) /* Receiver Holding Register */
> > -#define AT91_DBGU_THR (0x1c) /* Transmitter Holding Register */
> > -#define AT91_DBGU_BRGR (0x20) /* Baud Rate Generator Register */
> > -
> > -#define AT91_DBGU_CIDR (0x40) /* Chip ID Register */
> > -#define AT91_DBGU_EXID (0x44) /* Chip ID Extension Register */
> > -#define AT91_DBGU_FNR (0x48) /* Force NTRST Register [SAM9 only] */
> > -#define AT91_DBGU_FNTRST (1 << 0) /* Force NTRST */
> > -
> > -/*
> > - * Some AT91 parts that don't have full DEBUG units still support the ID
> > - * and extensions register.
> > - */
> > -#define AT91_CIDR_VERSION (0x1f << 0) /* Version of the Device */
> > -#define AT91_CIDR_EPROC (7 << 5) /* Embedded Processor */
> > -#define AT91_CIDR_NVPSIZ (0xf << 8) /* Nonvolatile Program Memory Size */
> > -#define AT91_CIDR_NVPSIZ2 (0xf << 12) /* Second Nonvolatile Program Memory Size */
> > -#define AT91_CIDR_SRAMSIZ (0xf << 16) /* Internal SRAM Size */
> > -#define AT91_CIDR_SRAMSIZ_1K (1 << 16)
> > -#define AT91_CIDR_SRAMSIZ_2K (2 << 16)
> > -#define AT91_CIDR_SRAMSIZ_112K (4 << 16)
> > -#define AT91_CIDR_SRAMSIZ_4K (5 << 16)
> > -#define AT91_CIDR_SRAMSIZ_80K (6 << 16)
> > -#define AT91_CIDR_SRAMSIZ_160K (7 << 16)
> > -#define AT91_CIDR_SRAMSIZ_8K (8 << 16)
> > -#define AT91_CIDR_SRAMSIZ_16K (9 << 16)
> > -#define AT91_CIDR_SRAMSIZ_32K (10 << 16)
> > -#define AT91_CIDR_SRAMSIZ_64K (11 << 16)
> > -#define AT91_CIDR_SRAMSIZ_128K (12 << 16)
> > -#define AT91_CIDR_SRAMSIZ_256K (13 << 16)
> > -#define AT91_CIDR_SRAMSIZ_96K (14 << 16)
> > -#define AT91_CIDR_SRAMSIZ_512K (15 << 16)
> > -#define AT91_CIDR_ARCH (0xff << 20) /* Architecture Identifier */
> > -#define AT91_CIDR_NVPTYP (7 << 28) /* Nonvolatile Program Memory Type */
> > -#define AT91_CIDR_EXT (1 << 31) /* Extension Flag */
> > -
> > -#endif
> > diff --git a/arch/arm/mach-at91/include/mach/at91_ramc.h b/arch/arm/mach-at91/include/mach/at91_ramc.h
> > index e4492b151fee..80431ece8a54 100644
> > --- a/arch/arm/mach-at91/include/mach/at91_ramc.h
> > +++ b/arch/arm/mach-at91/include/mach/at91_ramc.h
> > @@ -9,17 +9,11 @@
> > #ifndef __AT91_RAMC_H__
> > #define __AT91_RAMC_H__
> >
> > -#ifndef __ASSEMBLY__
> > -extern void __iomem *at91_ramc_base[];
> > -
> > #define at91_ramc_read(id, field) \
> > __raw_readl(at91_ramc_base[id] + field)
> >
> > #define at91_ramc_write(id, field, value) \
> > __raw_writel(value, at91_ramc_base[id] + field)
> > -#else
> > -.extern at91_ramc_base
> > -#endif
> >
> > #define AT91_MEMCTRL_MC 0
> > #define AT91_MEMCTRL_SDRAMC 1
> > diff --git a/arch/arm/mach-at91/include/mach/at91sam9_smc.h b/arch/arm/mach-at91/include/mach/at91sam9_smc.h
> > index 175e1fdd9fe8..ff54a0ce90e3 100644
> > --- a/arch/arm/mach-at91/include/mach/at91sam9_smc.h
> > +++ b/arch/arm/mach-at91/include/mach/at91sam9_smc.h
> > @@ -16,8 +16,6 @@
> > #ifndef AT91SAM9_SMC_H
> > #define AT91SAM9_SMC_H
> >
> > -#include <mach/cpu.h>
> > -
> > #ifndef __ASSEMBLY__
> > struct sam9_smc_config {
> > /* Setup register */
> > diff --git a/arch/arm/mach-at91/include/mach/cpu.h b/arch/arm/mach-at91/include/mach/cpu.h
> > deleted file mode 100644
> > index 61914fb35f5d..000000000000
> > --- a/arch/arm/mach-at91/include/mach/cpu.h
> > +++ /dev/null
> > @@ -1,240 +0,0 @@
> > -/*
> > - * arch/arm/mach-at91/include/mach/cpu.h
> > - *
> > - * Copyright (C) 2006 SAN People
> > - * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> > - *
> > - * This program is free software; you can redistribute it and/or modify
> > - * it under the terms of the GNU General Public License as published by
> > - * the Free Software Foundation; either version 2 of the License, or
> > - * (at your option) any later version.
> > - *
> > - */
> > -
> > -#ifndef __MACH_CPU_H__
> > -#define __MACH_CPU_H__
> > -
> > -#define ARCH_ID_AT91RM9200 0x09290780
> > -#define ARCH_ID_AT91SAM9260 0x019803a0
> > -#define ARCH_ID_AT91SAM9261 0x019703a0
> > -#define ARCH_ID_AT91SAM9263 0x019607a0
> > -#define ARCH_ID_AT91SAM9G10 0x019903a0
> > -#define ARCH_ID_AT91SAM9G20 0x019905a0
> > -#define ARCH_ID_AT91SAM9RL64 0x019b03a0
> > -#define ARCH_ID_AT91SAM9G45 0x819b05a0
> > -#define ARCH_ID_AT91SAM9G45MRL 0x819b05a2 /* aka 9G45-ES2 & non ES lots */
> > -#define ARCH_ID_AT91SAM9G45ES 0x819b05a1 /* 9G45-ES (Engineering Sample) */
> > -#define ARCH_ID_AT91SAM9X5 0x819a05a0
> > -#define ARCH_ID_AT91SAM9N12 0x819a07a0
> > -
> > -#define ARCH_ID_AT91SAM9XE128 0x329973a0
> > -#define ARCH_ID_AT91SAM9XE256 0x329a93a0
> > -#define ARCH_ID_AT91SAM9XE512 0x329aa3a0
> > -
> > -#define ARCH_ID_AT91M40800 0x14080044
> > -#define ARCH_ID_AT91R40807 0x44080746
> > -#define ARCH_ID_AT91M40807 0x14080745
> > -#define ARCH_ID_AT91R40008 0x44000840
> > -
> > -#define ARCH_ID_SAMA5 0x8A5C07C0
> > -
> > -#define ARCH_EXID_AT91SAM9M11 0x00000001
> > -#define ARCH_EXID_AT91SAM9M10 0x00000002
> > -#define ARCH_EXID_AT91SAM9G46 0x00000003
> > -#define ARCH_EXID_AT91SAM9G45 0x00000004
> > -
> > -#define ARCH_EXID_AT91SAM9G15 0x00000000
> > -#define ARCH_EXID_AT91SAM9G35 0x00000001
> > -#define ARCH_EXID_AT91SAM9X35 0x00000002
> > -#define ARCH_EXID_AT91SAM9G25 0x00000003
> > -#define ARCH_EXID_AT91SAM9X25 0x00000004
> > -
> > -#define ARCH_EXID_SAMA5D3 0x00004300
> > -#define ARCH_EXID_SAMA5D31 0x00444300
> > -#define ARCH_EXID_SAMA5D33 0x00414300
> > -#define ARCH_EXID_SAMA5D34 0x00414301
> > -#define ARCH_EXID_SAMA5D35 0x00584300
> > -#define ARCH_EXID_SAMA5D36 0x00004301
> > -
> > -#define ARCH_EXID_SAMA5D4 0x00000007
> > -#define ARCH_EXID_SAMA5D41 0x00000001
> > -#define ARCH_EXID_SAMA5D42 0x00000002
> > -#define ARCH_EXID_SAMA5D43 0x00000003
> > -#define ARCH_EXID_SAMA5D44 0x00000004
> > -
> > -#define ARCH_FAMILY_AT91SAM9 0x01900000
> > -#define ARCH_FAMILY_AT91SAM9XE 0x02900000
> > -
> > -/* RM9200 type */
> > -#define ARCH_REVISON_9200_BGA (0 << 0)
> > -#define ARCH_REVISON_9200_PQFP (1 << 0)
> > -
> > -#ifndef __ASSEMBLY__
> > -enum at91_soc_type {
> > - /* 920T */
> > - AT91_SOC_RM9200,
> > -
> > - /* SAM92xx */
> > - AT91_SOC_SAM9260, AT91_SOC_SAM9261, AT91_SOC_SAM9263,
> > -
> > - /* SAM9Gxx */
> > - AT91_SOC_SAM9G10, AT91_SOC_SAM9G20, AT91_SOC_SAM9G45,
> > -
> > - /* SAM9RL */
> > - AT91_SOC_SAM9RL,
> > -
> > - /* SAM9X5 */
> > - AT91_SOC_SAM9X5,
> > -
> > - /* SAM9N12 */
> > - AT91_SOC_SAM9N12,
> > -
> > - /* SAMA5D3 */
> > - AT91_SOC_SAMA5D3,
> > -
> > - /* SAMA5D4 */
> > - AT91_SOC_SAMA5D4,
> > -
> > - /* Unknown type */
> > - AT91_SOC_UNKNOWN,
> > -};
> > -
> > -enum at91_soc_subtype {
> > - /* RM9200 */
> > - AT91_SOC_RM9200_BGA, AT91_SOC_RM9200_PQFP,
> > -
> > - /* SAM9260 */
> > - AT91_SOC_SAM9XE,
> > -
> > - /* SAM9G45 */
> > - AT91_SOC_SAM9G45ES, AT91_SOC_SAM9M10, AT91_SOC_SAM9G46, AT91_SOC_SAM9M11,
> > -
> > - /* SAM9X5 */
> > - AT91_SOC_SAM9G15, AT91_SOC_SAM9G35, AT91_SOC_SAM9X35,
> > - AT91_SOC_SAM9G25, AT91_SOC_SAM9X25,
> > -
> > - /* SAMA5D3 */
> > - AT91_SOC_SAMA5D31, AT91_SOC_SAMA5D33, AT91_SOC_SAMA5D34,
> > - AT91_SOC_SAMA5D35, AT91_SOC_SAMA5D36,
> > -
> > - /* SAMA5D4 */
> > - AT91_SOC_SAMA5D41, AT91_SOC_SAMA5D42, AT91_SOC_SAMA5D43,
> > - AT91_SOC_SAMA5D44,
> > -
> > - /* No subtype for this SoC */
> > - AT91_SOC_SUBTYPE_NONE,
> > -
> > - /* Unknown subtype */
> > - AT91_SOC_SUBTYPE_UNKNOWN,
> > -};
> > -
> > -struct at91_socinfo {
> > - unsigned int type, subtype;
> > - unsigned int cidr, exid;
> > -};
> > -
> > -extern struct at91_socinfo at91_soc_initdata;
> > -const char *at91_get_soc_type(struct at91_socinfo *c);
> > -const char *at91_get_soc_subtype(struct at91_socinfo *c);
> > -
> > -static inline int at91_soc_is_detected(void)
> > -{
> > - return at91_soc_initdata.type != AT91_SOC_UNKNOWN;
> > -}
> > -
> > -#ifdef CONFIG_SOC_AT91RM9200
> > -#define cpu_is_at91rm9200() (at91_soc_initdata.type == AT91_SOC_RM9200)
> > -#define cpu_is_at91rm9200_bga() (at91_soc_initdata.subtype == AT91_SOC_RM9200_BGA)
> > -#define cpu_is_at91rm9200_pqfp() (at91_soc_initdata.subtype == AT91_SOC_RM9200_PQFP)
> > -#else
> > -#define cpu_is_at91rm9200() (0)
> > -#define cpu_is_at91rm9200_bga() (0)
> > -#define cpu_is_at91rm9200_pqfp() (0)
> > -#endif
> > -
> > -#ifdef CONFIG_SOC_AT91SAM9260
> > -#define cpu_is_at91sam9xe() (at91_soc_initdata.subtype == AT91_SOC_SAM9XE)
> > -#define cpu_is_at91sam9260() (at91_soc_initdata.type == AT91_SOC_SAM9260)
> > -#define cpu_is_at91sam9g20() (at91_soc_initdata.type == AT91_SOC_SAM9G20)
> > -#else
> > -#define cpu_is_at91sam9xe() (0)
> > -#define cpu_is_at91sam9260() (0)
> > -#define cpu_is_at91sam9g20() (0)
> > -#endif
> > -
> > -#ifdef CONFIG_SOC_AT91SAM9261
> > -#define cpu_is_at91sam9261() (at91_soc_initdata.type == AT91_SOC_SAM9261)
> > -#define cpu_is_at91sam9g10() (at91_soc_initdata.type == AT91_SOC_SAM9G10)
> > -#else
> > -#define cpu_is_at91sam9261() (0)
> > -#define cpu_is_at91sam9g10() (0)
> > -#endif
> > -
> > -#ifdef CONFIG_SOC_AT91SAM9263
> > -#define cpu_is_at91sam9263() (at91_soc_initdata.type == AT91_SOC_SAM9263)
> > -#else
> > -#define cpu_is_at91sam9263() (0)
> > -#endif
> > -
> > -#ifdef CONFIG_SOC_AT91SAM9RL
> > -#define cpu_is_at91sam9rl() (at91_soc_initdata.type == AT91_SOC_SAM9RL)
> > -#else
> > -#define cpu_is_at91sam9rl() (0)
> > -#endif
> > -
> > -#ifdef CONFIG_SOC_AT91SAM9G45
> > -#define cpu_is_at91sam9g45() (at91_soc_initdata.type == AT91_SOC_SAM9G45)
> > -#define cpu_is_at91sam9g45es() (at91_soc_initdata.subtype == AT91_SOC_SAM9G45ES)
> > -#define cpu_is_at91sam9m10() (at91_soc_initdata.subtype == AT91_SOC_SAM9M10)
> > -#define cpu_is_at91sam9g46() (at91_soc_initdata.subtype == AT91_SOC_SAM9G46)
> > -#define cpu_is_at91sam9m11() (at91_soc_initdata.subtype == AT91_SOC_SAM9M11)
> > -#else
> > -#define cpu_is_at91sam9g45() (0)
> > -#define cpu_is_at91sam9g45es() (0)
> > -#define cpu_is_at91sam9m10() (0)
> > -#define cpu_is_at91sam9g46() (0)
> > -#define cpu_is_at91sam9m11() (0)
> > -#endif
> > -
> > -#ifdef CONFIG_SOC_AT91SAM9X5
> > -#define cpu_is_at91sam9x5() (at91_soc_initdata.type == AT91_SOC_SAM9X5)
> > -#define cpu_is_at91sam9g15() (at91_soc_initdata.subtype == AT91_SOC_SAM9G15)
> > -#define cpu_is_at91sam9g35() (at91_soc_initdata.subtype == AT91_SOC_SAM9G35)
> > -#define cpu_is_at91sam9x35() (at91_soc_initdata.subtype == AT91_SOC_SAM9X35)
> > -#define cpu_is_at91sam9g25() (at91_soc_initdata.subtype == AT91_SOC_SAM9G25)
> > -#define cpu_is_at91sam9x25() (at91_soc_initdata.subtype == AT91_SOC_SAM9X25)
> > -#else
> > -#define cpu_is_at91sam9x5() (0)
> > -#define cpu_is_at91sam9g15() (0)
> > -#define cpu_is_at91sam9g35() (0)
> > -#define cpu_is_at91sam9x35() (0)
> > -#define cpu_is_at91sam9g25() (0)
> > -#define cpu_is_at91sam9x25() (0)
> > -#endif
> > -
> > -#ifdef CONFIG_SOC_AT91SAM9N12
> > -#define cpu_is_at91sam9n12() (at91_soc_initdata.type == AT91_SOC_SAM9N12)
> > -#else
> > -#define cpu_is_at91sam9n12() (0)
> > -#endif
> > -
> > -#ifdef CONFIG_SOC_SAMA5D3
> > -#define cpu_is_sama5d3() (at91_soc_initdata.type == AT91_SOC_SAMA5D3)
> > -#else
> > -#define cpu_is_sama5d3() (0)
> > -#endif
> > -
> > -#ifdef CONFIG_SOC_SAMA5D4
> > -#define cpu_is_sama5d4() (at91_soc_initdata.type == AT91_SOC_SAMA5D4)
> > -#else
> > -#define cpu_is_sama5d4() (0)
> > -#endif
> > -
> > -/*
> > - * Since this is ARM, we will never run on any AVR32 CPU. But these
> > - * definitions may reduce clutter in common drivers.
> > - */
> > -#define cpu_is_at32ap7000() (0)
> > -#endif /* __ASSEMBLY__ */
> > -
> > -#endif /* __MACH_CPU_H__ */
> > diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
> > index 778f11132b31..11bf992838af 100644
> > --- a/arch/arm/mach-at91/pm.c
> > +++ b/arch/arm/mach-at91/pm.c
> > @@ -19,6 +19,7 @@
> > #include <linux/sysfs.h>
> > #include <linux/module.h>
> > #include <linux/of.h>
> > +#include <linux/of_address.h>
> > #include <linux/of_platform.h>
> > #include <linux/platform_device.h>
> > #include <linux/io.h>
> > @@ -29,10 +30,12 @@
> > #include <asm/mach/time.h>
> > #include <asm/mach/irq.h>
> >
> > -#include <mach/cpu.h>
> > #include <mach/hardware.h>
> >
> > #include "generic.h"
> > +
> > +static void __iomem *at91_ramc_base[2];
> > +
> > #include "pm.h"
> >
> > static struct {
> > diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c
> > index 42ebe8d41433..4036e3e0ff96 100644
> > --- a/arch/arm/mach-at91/setup.c
> > +++ b/arch/arm/mach-at91/setup.c
> > @@ -7,321 +7,20 @@
> >
> > #define pr_fmt(fmt) "AT91: " fmt
> >
> > -#include <linux/module.h>
> > #include <linux/io.h>
> > -#include <linux/mm.h>
> > #include <linux/pm.h>
> > #include <linux/of_address.h>
> > -#include <linux/pinctrl/machine.h>
> > -#include <linux/clk/at91_pmc.h>
> >
> > #include <asm/system_misc.h>
> > -#include <asm/mach/map.h>
> >
> > #include <mach/hardware.h>
> > -#include <mach/cpu.h>
> > -#include <mach/at91_dbgu.h>
> >
> > #include "generic.h"
> > #include "pm.h"
> >
> > -struct at91_socinfo at91_soc_initdata;
> > -EXPORT_SYMBOL(at91_soc_initdata);
> > -
> > void __iomem *at91_ramc_base[2];
> > EXPORT_SYMBOL_GPL(at91_ramc_base);
> >
> > -static struct map_desc at91_io_desc __initdata __maybe_unused = {
> > - .virtual = (unsigned long)AT91_VA_BASE_SYS,
> > - .pfn = __phys_to_pfn(AT91_BASE_SYS),
> > - .length = SZ_16K,
> > - .type = MT_DEVICE,
> > -};
> > -
> > -static struct map_desc at91_alt_io_desc __initdata __maybe_unused = {
> > - .virtual = (unsigned long)AT91_ALT_VA_BASE_SYS,
> > - .pfn = __phys_to_pfn(AT91_ALT_BASE_SYS),
> > - .length = 24 * SZ_1K,
> > - .type = MT_DEVICE,
> > -};
> > -
> > -static void __init soc_detect(u32 dbgu_base)
> > -{
> > - u32 cidr, socid;
> > -
> > - cidr = __raw_readl(AT91_IO_P2V(dbgu_base) + AT91_DBGU_CIDR);
> > - socid = cidr & ~AT91_CIDR_VERSION;
> > -
> > - switch (socid) {
> > - case ARCH_ID_AT91RM9200:
> > - at91_soc_initdata.type = AT91_SOC_RM9200;
> > - if (at91_soc_initdata.subtype == AT91_SOC_SUBTYPE_UNKNOWN)
> > - at91_soc_initdata.subtype = AT91_SOC_RM9200_BGA;
> > - break;
> > -
> > - case ARCH_ID_AT91SAM9260:
> > - at91_soc_initdata.type = AT91_SOC_SAM9260;
> > - at91_soc_initdata.subtype = AT91_SOC_SUBTYPE_NONE;
> > - break;
> > -
> > - case ARCH_ID_AT91SAM9261:
> > - at91_soc_initdata.type = AT91_SOC_SAM9261;
> > - at91_soc_initdata.subtype = AT91_SOC_SUBTYPE_NONE;
> > - break;
> > -
> > - case ARCH_ID_AT91SAM9263:
> > - at91_soc_initdata.type = AT91_SOC_SAM9263;
> > - at91_soc_initdata.subtype = AT91_SOC_SUBTYPE_NONE;
> > - break;
> > -
> > - case ARCH_ID_AT91SAM9G20:
> > - at91_soc_initdata.type = AT91_SOC_SAM9G20;
> > - at91_soc_initdata.subtype = AT91_SOC_SUBTYPE_NONE;
> > - break;
> > -
> > - case ARCH_ID_AT91SAM9G45:
> > - at91_soc_initdata.type = AT91_SOC_SAM9G45;
> > - if (cidr == ARCH_ID_AT91SAM9G45ES)
> > - at91_soc_initdata.subtype = AT91_SOC_SAM9G45ES;
> > - break;
> > -
> > - case ARCH_ID_AT91SAM9RL64:
> > - at91_soc_initdata.type = AT91_SOC_SAM9RL;
> > - at91_soc_initdata.subtype = AT91_SOC_SUBTYPE_NONE;
> > - break;
> > -
> > - case ARCH_ID_AT91SAM9X5:
> > - at91_soc_initdata.type = AT91_SOC_SAM9X5;
> > - break;
> > -
> > - case ARCH_ID_AT91SAM9N12:
> > - at91_soc_initdata.type = AT91_SOC_SAM9N12;
> > - break;
> > -
> > - case ARCH_ID_SAMA5:
> > - at91_soc_initdata.exid = __raw_readl(AT91_IO_P2V(dbgu_base) + AT91_DBGU_EXID);
> > - if (at91_soc_initdata.exid & ARCH_EXID_SAMA5D3) {
> > - at91_soc_initdata.type = AT91_SOC_SAMA5D3;
> > - }
> > - break;
> > - }
> > -
> > - /* at91sam9g10 */
> > - if ((socid & ~AT91_CIDR_EXT) == ARCH_ID_AT91SAM9G10) {
> > - at91_soc_initdata.type = AT91_SOC_SAM9G10;
> > - at91_soc_initdata.subtype = AT91_SOC_SUBTYPE_NONE;
> > - }
> > - /* at91sam9xe */
> > - else if ((cidr & AT91_CIDR_ARCH) == ARCH_FAMILY_AT91SAM9XE) {
> > - at91_soc_initdata.type = AT91_SOC_SAM9260;
> > - at91_soc_initdata.subtype = AT91_SOC_SAM9XE;
> > - }
> > -
> > - if (!at91_soc_is_detected())
> > - return;
> > -
> > - at91_soc_initdata.cidr = cidr;
> > -
> > - /* sub version of soc */
> > - if (!at91_soc_initdata.exid)
> > - at91_soc_initdata.exid = __raw_readl(AT91_IO_P2V(dbgu_base) + AT91_DBGU_EXID);
> > -
> > - if (at91_soc_initdata.type == AT91_SOC_SAM9G45) {
> > - switch (at91_soc_initdata.exid) {
> > - case ARCH_EXID_AT91SAM9M10:
> > - at91_soc_initdata.subtype = AT91_SOC_SAM9M10;
> > - break;
> > - case ARCH_EXID_AT91SAM9G46:
> > - at91_soc_initdata.subtype = AT91_SOC_SAM9G46;
> > - break;
> > - case ARCH_EXID_AT91SAM9M11:
> > - at91_soc_initdata.subtype = AT91_SOC_SAM9M11;
> > - break;
> > - }
> > - }
> > -
> > - if (at91_soc_initdata.type == AT91_SOC_SAM9X5) {
> > - switch (at91_soc_initdata.exid) {
> > - case ARCH_EXID_AT91SAM9G15:
> > - at91_soc_initdata.subtype = AT91_SOC_SAM9G15;
> > - break;
> > - case ARCH_EXID_AT91SAM9G35:
> > - at91_soc_initdata.subtype = AT91_SOC_SAM9G35;
> > - break;
> > - case ARCH_EXID_AT91SAM9X35:
> > - at91_soc_initdata.subtype = AT91_SOC_SAM9X35;
> > - break;
> > - case ARCH_EXID_AT91SAM9G25:
> > - at91_soc_initdata.subtype = AT91_SOC_SAM9G25;
> > - break;
> > - case ARCH_EXID_AT91SAM9X25:
> > - at91_soc_initdata.subtype = AT91_SOC_SAM9X25;
> > - break;
> > - }
> > - }
> > -
> > - if (at91_soc_initdata.type == AT91_SOC_SAMA5D3) {
> > - switch (at91_soc_initdata.exid) {
> > - case ARCH_EXID_SAMA5D31:
> > - at91_soc_initdata.subtype = AT91_SOC_SAMA5D31;
> > - break;
> > - case ARCH_EXID_SAMA5D33:
> > - at91_soc_initdata.subtype = AT91_SOC_SAMA5D33;
> > - break;
> > - case ARCH_EXID_SAMA5D34:
> > - at91_soc_initdata.subtype = AT91_SOC_SAMA5D34;
> > - break;
> > - case ARCH_EXID_SAMA5D35:
> > - at91_soc_initdata.subtype = AT91_SOC_SAMA5D35;
> > - break;
> > - case ARCH_EXID_SAMA5D36:
> > - at91_soc_initdata.subtype = AT91_SOC_SAMA5D36;
> > - break;
> > - }
> > - }
> > -}
> > -
> > -static void __init alt_soc_detect(u32 dbgu_base)
> > -{
> > - u32 cidr, socid;
> > -
> > - /* SoC ID */
> > - cidr = __raw_readl(AT91_ALT_IO_P2V(dbgu_base) + AT91_DBGU_CIDR);
> > - socid = cidr & ~AT91_CIDR_VERSION;
> > -
> > - switch (socid) {
> > - case ARCH_ID_SAMA5:
> > - at91_soc_initdata.exid = __raw_readl(AT91_ALT_IO_P2V(dbgu_base) + AT91_DBGU_EXID);
> > - if (at91_soc_initdata.exid & ARCH_EXID_SAMA5D3) {
> > - at91_soc_initdata.type = AT91_SOC_SAMA5D3;
> > - } else if (at91_soc_initdata.exid & ARCH_EXID_SAMA5D4) {
> > - at91_soc_initdata.type = AT91_SOC_SAMA5D4;
> > - }
> > - break;
> > - }
> > -
> > - if (!at91_soc_is_detected())
> > - return;
> > -
> > - at91_soc_initdata.cidr = cidr;
> > -
> > - /* sub version of soc */
> > - if (!at91_soc_initdata.exid)
> > - at91_soc_initdata.exid = __raw_readl(AT91_ALT_IO_P2V(dbgu_base) + AT91_DBGU_EXID);
> > -
> > - if (at91_soc_initdata.type == AT91_SOC_SAMA5D4) {
> > - switch (at91_soc_initdata.exid) {
> > - case ARCH_EXID_SAMA5D41:
> > - at91_soc_initdata.subtype = AT91_SOC_SAMA5D41;
> > - break;
> > - case ARCH_EXID_SAMA5D42:
> > - at91_soc_initdata.subtype = AT91_SOC_SAMA5D42;
> > - break;
> > - case ARCH_EXID_SAMA5D43:
> > - at91_soc_initdata.subtype = AT91_SOC_SAMA5D43;
> > - break;
> > - case ARCH_EXID_SAMA5D44:
> > - at91_soc_initdata.subtype = AT91_SOC_SAMA5D44;
> > - break;
> > - }
> > - }
> > -}
> > -
> > -static const char *soc_name[] = {
> > - [AT91_SOC_RM9200] = "at91rm9200",
> > - [AT91_SOC_SAM9260] = "at91sam9260",
> > - [AT91_SOC_SAM9261] = "at91sam9261",
> > - [AT91_SOC_SAM9263] = "at91sam9263",
> > - [AT91_SOC_SAM9G10] = "at91sam9g10",
> > - [AT91_SOC_SAM9G20] = "at91sam9g20",
> > - [AT91_SOC_SAM9G45] = "at91sam9g45",
> > - [AT91_SOC_SAM9RL] = "at91sam9rl",
> > - [AT91_SOC_SAM9X5] = "at91sam9x5",
> > - [AT91_SOC_SAM9N12] = "at91sam9n12",
> > - [AT91_SOC_SAMA5D3] = "sama5d3",
> > - [AT91_SOC_SAMA5D4] = "sama5d4",
> > - [AT91_SOC_UNKNOWN] = "Unknown",
> > -};
> > -
> > -const char *at91_get_soc_type(struct at91_socinfo *c)
> > -{
> > - return soc_name[c->type];
> > -}
> > -EXPORT_SYMBOL(at91_get_soc_type);
> > -
> > -static const char *soc_subtype_name[] = {
> > - [AT91_SOC_RM9200_BGA] = "at91rm9200 BGA",
> > - [AT91_SOC_RM9200_PQFP] = "at91rm9200 PQFP",
> > - [AT91_SOC_SAM9XE] = "at91sam9xe",
> > - [AT91_SOC_SAM9G45ES] = "at91sam9g45es",
> > - [AT91_SOC_SAM9M10] = "at91sam9m10",
> > - [AT91_SOC_SAM9G46] = "at91sam9g46",
> > - [AT91_SOC_SAM9M11] = "at91sam9m11",
> > - [AT91_SOC_SAM9G15] = "at91sam9g15",
> > - [AT91_SOC_SAM9G35] = "at91sam9g35",
> > - [AT91_SOC_SAM9X35] = "at91sam9x35",
> > - [AT91_SOC_SAM9G25] = "at91sam9g25",
> > - [AT91_SOC_SAM9X25] = "at91sam9x25",
> > - [AT91_SOC_SAMA5D31] = "sama5d31",
> > - [AT91_SOC_SAMA5D33] = "sama5d33",
> > - [AT91_SOC_SAMA5D34] = "sama5d34",
> > - [AT91_SOC_SAMA5D35] = "sama5d35",
> > - [AT91_SOC_SAMA5D36] = "sama5d36",
> > - [AT91_SOC_SAMA5D41] = "sama5d41",
> > - [AT91_SOC_SAMA5D42] = "sama5d42",
> > - [AT91_SOC_SAMA5D43] = "sama5d43",
> > - [AT91_SOC_SAMA5D44] = "sama5d44",
> > - [AT91_SOC_SUBTYPE_NONE] = "None",
> > - [AT91_SOC_SUBTYPE_UNKNOWN] = "Unknown",
> > -};
> > -
> > -const char *at91_get_soc_subtype(struct at91_socinfo *c)
> > -{
> > - return soc_subtype_name[c->subtype];
> > -}
> > -EXPORT_SYMBOL(at91_get_soc_subtype);
> > -
> > -void __init at91_map_io(void)
> > -{
> > - /* Map peripherals */
> > - iotable_init(&at91_io_desc, 1);
> > -
> > - at91_soc_initdata.type = AT91_SOC_UNKNOWN;
> > - at91_soc_initdata.subtype = AT91_SOC_SUBTYPE_UNKNOWN;
> > -
> > - soc_detect(AT91_BASE_DBGU0);
> > - if (!at91_soc_is_detected())
> > - soc_detect(AT91_BASE_DBGU1);
> > -
> > - if (!at91_soc_is_detected())
> > - panic(pr_fmt("Impossible to detect the SOC type"));
> > -
> > - pr_info("Detected soc type: %s\n",
> > - at91_get_soc_type(&at91_soc_initdata));
> > - if (at91_soc_initdata.subtype != AT91_SOC_SUBTYPE_NONE)
> > - pr_info("Detected soc subtype: %s\n",
> > - at91_get_soc_subtype(&at91_soc_initdata));
> > -}
> > -
> > -void __init at91_alt_map_io(void)
> > -{
> > - /* Map peripherals */
> > - iotable_init(&at91_alt_io_desc, 1);
> > -
> > - at91_soc_initdata.type = AT91_SOC_UNKNOWN;
> > - at91_soc_initdata.subtype = AT91_SOC_SUBTYPE_UNKNOWN;
> > -
> > - alt_soc_detect(AT91_BASE_DBGU2);
> > - if (!at91_soc_is_detected())
> > - panic("AT91: Impossible to detect the SOC type");
> > -
> > - pr_info("AT91: Detected soc type: %s\n",
> > - at91_get_soc_type(&at91_soc_initdata));
> > - if (at91_soc_initdata.subtype != AT91_SOC_SUBTYPE_NONE)
> > - pr_info("AT91: Detected soc subtype: %s\n",
> > - at91_get_soc_subtype(&at91_soc_initdata));
> > -}
> > -
> > static struct of_device_id ramc_ids[] = {
> > { .compatible = "atmel,at91rm9200-sdramc", .data = at91rm9200_standby },
> > { .compatible = "atmel,at91sam9260-sdramc", .data = at91sam9_sdram_standby },
> >
>
>
> --
> Nicolas Ferre
--
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
More information about the linux-arm-kernel
mailing list