diff options
Diffstat (limited to 'arch/arm/mach-vexpress/ct-ca9x4.c')
-rw-r--r-- | arch/arm/mach-vexpress/ct-ca9x4.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/arch/arm/mach-vexpress/ct-ca9x4.c b/arch/arm/mach-vexpress/ct-ca9x4.c index c65cc3b462a5..ab15a5515312 100644 --- a/arch/arm/mach-vexpress/ct-ca9x4.c +++ b/arch/arm/mach-vexpress/ct-ca9x4.c | |||
@@ -66,8 +66,15 @@ static void __init ct_ca9x4_init_irq(void) | |||
66 | 66 | ||
67 | static void ct_ca9x4_clcd_enable(struct clcd_fb *fb) | 67 | static void ct_ca9x4_clcd_enable(struct clcd_fb *fb) |
68 | { | 68 | { |
69 | v2m_cfg_write(SYS_CFG_MUXFPGA | SYS_CFG_SITE_DB1, 0); | 69 | u32 site = v2m_get_master_site(); |
70 | v2m_cfg_write(SYS_CFG_DVIMODE | SYS_CFG_SITE_DB1, 2); | 70 | |
71 | /* | ||
72 | * Old firmware was using the "site" component of the command | ||
73 | * to control the DVI muxer (while it should be always 0 ie. MB). | ||
74 | * Newer firmware uses the data register. Keep both for compatibility. | ||
75 | */ | ||
76 | v2m_cfg_write(SYS_CFG_MUXFPGA | SYS_CFG_SITE(site), site); | ||
77 | v2m_cfg_write(SYS_CFG_DVIMODE | SYS_CFG_SITE(SYS_CFG_SITE_MB), 2); | ||
71 | } | 78 | } |
72 | 79 | ||
73 | static int ct_ca9x4_clcd_setup(struct clcd_fb *fb) | 80 | static int ct_ca9x4_clcd_setup(struct clcd_fb *fb) |
@@ -112,7 +119,9 @@ static long ct_round(struct clk *clk, unsigned long rate) | |||
112 | 119 | ||
113 | static int ct_set(struct clk *clk, unsigned long rate) | 120 | static int ct_set(struct clk *clk, unsigned long rate) |
114 | { | 121 | { |
115 | return v2m_cfg_write(SYS_CFG_OSC | SYS_CFG_SITE_DB1 | 1, rate); | 122 | u32 site = v2m_get_master_site(); |
123 | |||
124 | return v2m_cfg_write(SYS_CFG_OSC | SYS_CFG_SITE(site) | 1, rate); | ||
116 | } | 125 | } |
117 | 126 | ||
118 | static const struct clk_ops osc1_clk_ops = { | 127 | static const struct clk_ops osc1_clk_ops = { |