1 #include "asm/arch/sci_types.h"
4 #define GPIO_BASE 0x8A000000 //Sunny, for SC8810
7 static void __raw_bits_and(unsigned int v, unsigned int a)
9 __raw_writel((__raw_readl(a) & v), a);
12 static void __raw_bits_or(unsigned int v, unsigned int a)
14 __raw_writel((__raw_readl(a) | v), a);
17 void gpio_direction_output(int PinNo, int OutIn) //Sunny only for uBoot gpio ops
21 addr =GPIO_BASE + 0x0080 * n;
24 __raw_bits_or((1<<5), 0x8B000008); //GPIO register Enable
25 __raw_bits_or((1<<maskbit), addr + 4); //Mask
27 __raw_bits_or((1<<maskbit), addr + 8); //Dir out
28 else __raw_bits_and(~(1<<maskbit), addr+ 8); //Dir in
31 void gpio_set_value(int PinNo, int Level) //Sunny only for uBoot gpio ops
35 addr =GPIO_BASE + 0x0080 * n;
38 __raw_bits_or((1<<maskbit), addr + 4); //Mask
40 __raw_bits_or((1<<maskbit), addr); //High
41 else __raw_bits_and(~(1<<maskbit), addr); //Low
44 int gpio_get_value(int PinNo) //Sunny only for uBoot gpio ops
49 addr =GPIO_BASE + 0x0080 * n;
52 ret = __raw_readl(addr);
54 if(ret & (1<<maskbit))