diff options
Diffstat (limited to 'arch/mips/txx9/rbtx4939/setup.c')
-rw-r--r-- | arch/mips/txx9/rbtx4939/setup.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/arch/mips/txx9/rbtx4939/setup.c b/arch/mips/txx9/rbtx4939/setup.c index 9855d7bccc20..c88517774910 100644 --- a/arch/mips/txx9/rbtx4939/setup.c +++ b/arch/mips/txx9/rbtx4939/setup.c | |||
@@ -239,6 +239,32 @@ static inline void rbtx4939_led_setup(void) | |||
239 | } | 239 | } |
240 | #endif | 240 | #endif |
241 | 241 | ||
242 | static void __rbtx4939_7segled_putc(unsigned int pos, unsigned char val) | ||
243 | { | ||
244 | #if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE) | ||
245 | unsigned long flags; | ||
246 | local_irq_save(flags); | ||
247 | /* bit7: reserved for LED class */ | ||
248 | led_val[pos] = (led_val[pos] & 0x80) | (val & 0x7f); | ||
249 | val = led_val[pos]; | ||
250 | local_irq_restore(flags); | ||
251 | #endif | ||
252 | writeb(val, rbtx4939_7seg_addr(pos / 4, pos % 4)); | ||
253 | } | ||
254 | |||
255 | static void rbtx4939_7segled_putc(unsigned int pos, unsigned char val) | ||
256 | { | ||
257 | /* convert from map_to_seg7() notation */ | ||
258 | val = (val & 0x88) | | ||
259 | ((val & 0x40) >> 6) | | ||
260 | ((val & 0x20) >> 4) | | ||
261 | ((val & 0x10) >> 2) | | ||
262 | ((val & 0x04) << 2) | | ||
263 | ((val & 0x02) << 4) | | ||
264 | ((val & 0x01) << 6); | ||
265 | __rbtx4939_7segled_putc(pos, val); | ||
266 | } | ||
267 | |||
242 | static void __init rbtx4939_arch_init(void) | 268 | static void __init rbtx4939_arch_init(void) |
243 | { | 269 | { |
244 | rbtx4939_pci_setup(); | 270 | rbtx4939_pci_setup(); |
@@ -269,6 +295,8 @@ static void __init rbtx4939_device_init(void) | |||
269 | 295 | ||
270 | static void __init rbtx4939_setup(void) | 296 | static void __init rbtx4939_setup(void) |
271 | { | 297 | { |
298 | int i; | ||
299 | |||
272 | rbtx4939_ebusc_setup(); | 300 | rbtx4939_ebusc_setup(); |
273 | /* always enable ATA0 */ | 301 | /* always enable ATA0 */ |
274 | txx9_set64(&tx4939_ccfgptr->pcfg, TX4939_PCFG_ATA0MODE); | 302 | txx9_set64(&tx4939_ccfgptr->pcfg, TX4939_PCFG_ATA0MODE); |
@@ -279,6 +307,9 @@ static void __init rbtx4939_setup(void) | |||
279 | 307 | ||
280 | _machine_restart = rbtx4939_machine_restart; | 308 | _machine_restart = rbtx4939_machine_restart; |
281 | 309 | ||
310 | txx9_7segled_init(RBTX4939_MAX_7SEGLEDS, rbtx4939_7segled_putc); | ||
311 | for (i = 0; i < RBTX4939_MAX_7SEGLEDS; i++) | ||
312 | txx9_7segled_putc(i, '-'); | ||
282 | pr_info("RBTX4939 (Rev %02x) --- FPGA(Rev %02x) DIPSW:%02x,%02x\n", | 313 | pr_info("RBTX4939 (Rev %02x) --- FPGA(Rev %02x) DIPSW:%02x,%02x\n", |
283 | readb(rbtx4939_board_rev_addr), readb(rbtx4939_ioc_rev_addr), | 314 | readb(rbtx4939_board_rev_addr), readb(rbtx4939_ioc_rev_addr), |
284 | readb(rbtx4939_udipsw_addr), readb(rbtx4939_bdipsw_addr)); | 315 | readb(rbtx4939_udipsw_addr), readb(rbtx4939_bdipsw_addr)); |