Commit dc5bc8f1 authored by Russell King's avatar Russell King Committed by Russell King

[ARM] Allow Versatile to be built for AB and PB

If a configuration was chosen to support both the Versatile
AB and PB boards, the result would write to registers not
available on the PB version of the board.  Resolve this by
using machine_is_xxx().

Also, for the CLCD, despite how the code looks, both the AB
and PB access the same location to control the clock rate -
it's just called something different between the two board
versions.  Invent our own name for this location and use it
unconditionally.
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 20c4f88b
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <asm/hardware/arm_timer.h> #include <asm/hardware/arm_timer.h>
#include <asm/hardware/icst307.h> #include <asm/hardware/icst307.h>
#include <asm/hardware/vic.h> #include <asm/hardware/vic.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/flash.h> #include <asm/mach/flash.h>
...@@ -352,11 +353,7 @@ static const struct icst307_params versatile_oscvco_params = { ...@@ -352,11 +353,7 @@ static const struct icst307_params versatile_oscvco_params = {
static void versatile_oscvco_set(struct clk *clk, struct icst307_vco vco) static void versatile_oscvco_set(struct clk *clk, struct icst307_vco vco)
{ {
void __iomem *sys_lock = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_LOCK_OFFSET; void __iomem *sys_lock = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_LOCK_OFFSET;
#if defined(CONFIG_ARCH_VERSATILE_PB) void __iomem *sys_osc = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_OSCCLCD_OFFSET;
void __iomem *sys_osc = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_OSC4_OFFSET;
#elif defined(CONFIG_MACH_VERSATILE_AB)
void __iomem *sys_osc = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_OSC1_OFFSET;
#endif
u32 val; u32 val;
val = readl(sys_osc) & ~0x7ffff; val = readl(sys_osc) & ~0x7ffff;
...@@ -529,7 +526,7 @@ static void versatile_clcd_disable(struct clcd_fb *fb) ...@@ -529,7 +526,7 @@ static void versatile_clcd_disable(struct clcd_fb *fb)
/* /*
* If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light off * If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light off
*/ */
if (fb->panel == &sanyo_2_5_in) { if (machine_is_versatile_ab() && fb->panel == &sanyo_2_5_in) {
void __iomem *versatile_ib2_ctrl = __io_address(VERSATILE_IB2_CTRL); void __iomem *versatile_ib2_ctrl = __io_address(VERSATILE_IB2_CTRL);
unsigned long ctrl; unsigned long ctrl;
...@@ -578,7 +575,7 @@ static void versatile_clcd_enable(struct clcd_fb *fb) ...@@ -578,7 +575,7 @@ static void versatile_clcd_enable(struct clcd_fb *fb)
/* /*
* If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light on * If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light on
*/ */
if (fb->panel == &sanyo_2_5_in) { if (machine_is_versatile_ab() && fb->panel == &sanyo_2_5_in) {
void __iomem *versatile_ib2_ctrl = __io_address(VERSATILE_IB2_CTRL); void __iomem *versatile_ib2_ctrl = __io_address(VERSATILE_IB2_CTRL);
unsigned long ctrl; unsigned long ctrl;
......
...@@ -65,6 +65,8 @@ ...@@ -65,6 +65,8 @@
#define VERSATILE_SYS_OSC1_OFFSET 0x1C #define VERSATILE_SYS_OSC1_OFFSET 0x1C
#endif #endif
#define VERSATILE_SYS_OSCCLCD_OFFSET 0x1c
#define VERSATILE_SYS_LOCK_OFFSET 0x20 #define VERSATILE_SYS_LOCK_OFFSET 0x20
#define VERSATILE_SYS_100HZ_OFFSET 0x24 #define VERSATILE_SYS_100HZ_OFFSET 0x24
#define VERSATILE_SYS_CFGDATA1_OFFSET 0x28 #define VERSATILE_SYS_CFGDATA1_OFFSET 0x28
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment