iwlwifi: mvm: rs: organize and cleanup consts
[cascardo/linux.git] / arch / xtensa / platforms / s6105 / setup.c
1 /*
2  * s6105 control routines
3  *
4  * Copyright (c) 2009 emlix GmbH
5  */
6 #include <linux/irq.h>
7 #include <linux/io.h>
8 #include <linux/gpio.h>
9
10 #include <asm/bootparam.h>
11
12 #include <variant/hardware.h>
13 #include <variant/gpio.h>
14
15 #include <platform/gpio.h>
16
17 void platform_halt(void)
18 {
19         local_irq_disable();
20         while (1)
21                 ;
22 }
23
24 void platform_power_off(void)
25 {
26         platform_halt();
27 }
28
29 void platform_restart(void)
30 {
31         platform_halt();
32 }
33
34 void __init platform_setup(char **cmdline)
35 {
36         unsigned long reg;
37
38         reg = readl(S6_REG_GREG1 + S6_GREG1_PLLSEL);
39         reg &= ~(S6_GREG1_PLLSEL_GMAC_MASK << S6_GREG1_PLLSEL_GMAC |
40                 S6_GREG1_PLLSEL_GMII_MASK << S6_GREG1_PLLSEL_GMII);
41         reg |= S6_GREG1_PLLSEL_GMAC_125MHZ << S6_GREG1_PLLSEL_GMAC |
42                 S6_GREG1_PLLSEL_GMII_125MHZ << S6_GREG1_PLLSEL_GMII;
43         writel(reg, S6_REG_GREG1 + S6_GREG1_PLLSEL);
44
45         reg = readl(S6_REG_GREG1 + S6_GREG1_CLKGATE);
46         reg &= ~(1 << S6_GREG1_BLOCK_SB);
47         reg &= ~(1 << S6_GREG1_BLOCK_GMAC);
48         writel(reg, S6_REG_GREG1 + S6_GREG1_CLKGATE);
49
50         reg = readl(S6_REG_GREG1 + S6_GREG1_BLOCKENA);
51         reg |= 1 << S6_GREG1_BLOCK_SB;
52         reg |= 1 << S6_GREG1_BLOCK_GMAC;
53         writel(reg, S6_REG_GREG1 + S6_GREG1_BLOCKENA);
54
55         printk(KERN_NOTICE "S6105 on Stretch S6000 - "
56                 "Copyright (C) 2009 emlix GmbH <info@emlix.com>\n");
57 }
58
59 void __init platform_init(bp_tag_t *first)
60 {
61         s6_gpio_init(0);
62         gpio_request(GPIO_LED1_NGREEN, "led1_green");
63         gpio_request(GPIO_LED1_RED, "led1_red");
64         gpio_direction_output(GPIO_LED1_NGREEN, 1);
65 }
66
67 void platform_heartbeat(void)
68 {
69         static unsigned int c;
70
71         if (!(++c & 0x4F))
72                 gpio_direction_output(GPIO_LED1_RED, !(c & 0x10));
73 }