brcm63xx: add preliminary support for 3.13
[openwrt.git] / target / linux / brcm63xx / patches-3.13 / 317-MIPS-BCM63XX-remove-RUNTIME_DETECT-code-for-bcmcpu_g.patch
1 From 78c3d2e796a28ad55f6c2310a11ab22e91bb52fc Mon Sep 17 00:00:00 2001
2 From: Jonas Gorski <jogo@openwrt.org>
3 Date: Mon, 2 Dec 2013 12:30:44 +0100
4 Subject: [PATCH 8/8] MIPS: BCM63XX: remove !RUNTIME_DETECT code for
5  bcmcpu_get_id
6
7 Use the same pattern as with get_*_cpu_type() to allow the compiler
8 to remove code for non enabled devices.
9
10 Signed-off-by: Jonas Gorski <jogo@openwrt.org>
11 ---
12  arch/mips/bcm63xx/cpu.c                          |  11 +--
13  arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h | 120 +++++++----------------
14  2 files changed, 38 insertions(+), 93 deletions(-)
15
16 --- a/arch/mips/bcm63xx/cpu.c
17 +++ b/arch/mips/bcm63xx/cpu.c
18 @@ -24,7 +24,9 @@ EXPORT_SYMBOL(bcm63xx_regs_base);
19  const int *bcm63xx_irqs;
20  EXPORT_SYMBOL(bcm63xx_irqs);
21  
22 -static u16 bcm63xx_cpu_id;
23 +u16 bcm63xx_cpu_id __read_mostly;
24 +EXPORT_SYMBOL(bcm63xx_cpu_id);
25 +
26  static u8 bcm63xx_cpu_rev;
27  static unsigned int bcm63xx_cpu_freq;
28  static unsigned int bcm63xx_memory_size;
29 @@ -97,13 +99,6 @@ static const int bcm6368_irqs[] = {
30  
31  };
32  
33 -u16 __bcm63xx_get_cpu_id(void)
34 -{
35 -       return bcm63xx_cpu_id;
36 -}
37 -
38 -EXPORT_SYMBOL(__bcm63xx_get_cpu_id);
39 -
40  u8 bcm63xx_get_cpu_rev(void)
41  {
42         return bcm63xx_cpu_rev;
43 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h
44 +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h
45 @@ -19,118 +19,68 @@
46  #define BCM6368_CPU_ID         0x6368
47  
48  void __init bcm63xx_cpu_init(void);
49 -u16 __bcm63xx_get_cpu_id(void);
50  u8 bcm63xx_get_cpu_rev(void);
51  unsigned int bcm63xx_get_cpu_freq(void);
52  
53 +static inline u16 __pure __bcm63xx_get_cpu_id(const u16 cpu_id)
54 +{
55 +       switch (cpu_id) {
56  #ifdef CONFIG_BCM63XX_CPU_3368
57 -# ifdef bcm63xx_get_cpu_id
58 -#  undef bcm63xx_get_cpu_id
59 -#  define bcm63xx_get_cpu_id() __bcm63xx_get_cpu_id()
60 -#  define BCMCPU_RUNTIME_DETECT
61 -# else
62 -#  define bcm63xx_get_cpu_id() BCM3368_CPU_ID
63 -# endif
64 -# define BCMCPU_IS_3368()      (bcm63xx_get_cpu_id() == BCM3368_CPU_ID)
65 -#else
66 -# define BCMCPU_IS_3368()      (0)
67 +               case BCM3368_CPU_ID:
68  #endif
69  
70  #ifdef CONFIG_BCM63XX_CPU_6328
71 -# ifdef bcm63xx_get_cpu_id
72 -#  undef bcm63xx_get_cpu_id
73 -#  define bcm63xx_get_cpu_id() __bcm63xx_get_cpu_id()
74 -#  define BCMCPU_RUNTIME_DETECT
75 -# else
76 -#  define bcm63xx_get_cpu_id() BCM6328_CPU_ID
77 -# endif
78 -# define BCMCPU_IS_6328()      (bcm63xx_get_cpu_id() == BCM6328_CPU_ID)
79 -#else
80 -# define BCMCPU_IS_6328()      (0)
81 +               case BCM6328_CPU_ID:
82  #endif
83  
84  #ifdef CONFIG_BCM63XX_CPU_6338
85 -# ifdef bcm63xx_get_cpu_id
86 -#  undef bcm63xx_get_cpu_id
87 -#  define bcm63xx_get_cpu_id() __bcm63xx_get_cpu_id()
88 -#  define BCMCPU_RUNTIME_DETECT
89 -# else
90 -#  define bcm63xx_get_cpu_id() BCM6338_CPU_ID
91 -# endif
92 -# define BCMCPU_IS_6338()      (bcm63xx_get_cpu_id() == BCM6338_CPU_ID)
93 -#else
94 -# define BCMCPU_IS_6338()      (0)
95 +               case BCM6338_CPU_ID:
96  #endif
97  
98  #ifdef CONFIG_BCM63XX_CPU_6345
99 -# ifdef bcm63xx_get_cpu_id
100 -#  undef bcm63xx_get_cpu_id
101 -#  define bcm63xx_get_cpu_id() __bcm63xx_get_cpu_id()
102 -#  define BCMCPU_RUNTIME_DETECT
103 -# else
104 -#  define bcm63xx_get_cpu_id() BCM6345_CPU_ID
105 -# endif
106 -# define BCMCPU_IS_6345()      (bcm63xx_get_cpu_id() == BCM6345_CPU_ID)
107 -#else
108 -# define BCMCPU_IS_6345()      (0)
109 +               case BCM6345_CPU_ID:
110  #endif
111  
112  #ifdef CONFIG_BCM63XX_CPU_6348
113 -# ifdef bcm63xx_get_cpu_id
114 -#  undef bcm63xx_get_cpu_id
115 -#  define bcm63xx_get_cpu_id() __bcm63xx_get_cpu_id()
116 -#  define BCMCPU_RUNTIME_DETECT
117 -# else
118 -#  define bcm63xx_get_cpu_id() BCM6348_CPU_ID
119 -# endif
120 -# define BCMCPU_IS_6348()      (bcm63xx_get_cpu_id() == BCM6348_CPU_ID)
121 -#else
122 -# define BCMCPU_IS_6348()      (0)
123 +               case BCM6348_CPU_ID:
124  #endif
125  
126  #ifdef CONFIG_BCM63XX_CPU_6358
127 -# ifdef bcm63xx_get_cpu_id
128 -#  undef bcm63xx_get_cpu_id
129 -#  define bcm63xx_get_cpu_id() __bcm63xx_get_cpu_id()
130 -#  define BCMCPU_RUNTIME_DETECT
131 -# else
132 -#  define bcm63xx_get_cpu_id() BCM6358_CPU_ID
133 -# endif
134 -# define BCMCPU_IS_6358()      (bcm63xx_get_cpu_id() == BCM6358_CPU_ID)
135 -#else
136 -# define BCMCPU_IS_6358()      (0)
137 +               case BCM6358_CPU_ID:
138  #endif
139  
140  #ifdef CONFIG_BCM63XX_CPU_6362
141 -# ifdef bcm63xx_get_cpu_id
142 -#  undef bcm63xx_get_cpu_id
143 -#  define bcm63xx_get_cpu_id() __bcm63xx_get_cpu_id()
144 -#  define BCMCPU_RUNTIME_DETECT
145 -# else
146 -#  define bcm63xx_get_cpu_id() BCM6362_CPU_ID
147 -# endif
148 -# define BCMCPU_IS_6362()      (bcm63xx_get_cpu_id() == BCM6362_CPU_ID)
149 -#else
150 -# define BCMCPU_IS_6362()      (0)
151 +               case BCM6362_CPU_ID:
152  #endif
153  
154 -
155  #ifdef CONFIG_BCM63XX_CPU_6368
156 -# ifdef bcm63xx_get_cpu_id
157 -#  undef bcm63xx_get_cpu_id
158 -#  define bcm63xx_get_cpu_id() __bcm63xx_get_cpu_id()
159 -#  define BCMCPU_RUNTIME_DETECT
160 -# else
161 -#  define bcm63xx_get_cpu_id() BCM6368_CPU_ID
162 -# endif
163 -# define BCMCPU_IS_6368()      (bcm63xx_get_cpu_id() == BCM6368_CPU_ID)
164 -#else
165 -# define BCMCPU_IS_6368()      (0)
166 -#endif
167 -
168 -#ifndef bcm63xx_get_cpu_id
169 -#error "No CPU support configured"
170 +               case BCM6368_CPU_ID:
171  #endif
172 +               break;
173 +       default:
174 +               unreachable();
175 +       }
176 +
177 +       return cpu_id;
178 +}
179 +
180 +extern u16 bcm63xx_cpu_id;
181 +
182 +static inline u16 __pure bcm63xx_get_cpu_id(void)
183 +{
184 +       const u16 cpu_id = bcm63xx_cpu_id;
185 +
186 +       return __bcm63xx_get_cpu_id(cpu_id);
187 +}
188 +
189 +#define BCMCPU_IS_3368()       (bcm63xx_get_cpu_id() == BCM3368_CPU_ID)
190 +#define BCMCPU_IS_6328()       (bcm63xx_get_cpu_id() == BCM6328_CPU_ID)
191 +#define BCMCPU_IS_6338()       (bcm63xx_get_cpu_id() == BCM6338_CPU_ID)
192 +#define BCMCPU_IS_6345()       (bcm63xx_get_cpu_id() == BCM6345_CPU_ID)
193 +#define BCMCPU_IS_6348()       (bcm63xx_get_cpu_id() == BCM6348_CPU_ID)
194 +#define BCMCPU_IS_6358()       (bcm63xx_get_cpu_id() == BCM6358_CPU_ID)
195 +#define BCMCPU_IS_6362()       (bcm63xx_get_cpu_id() == BCM6362_CPU_ID)
196 +#define BCMCPU_IS_6368()       (bcm63xx_get_cpu_id() == BCM6368_CPU_ID)
197  
198  /*
199   * While registers sets are (mostly) the same across 63xx CPU, base