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
22 }else if(PinNo >=176){
26 addr =GPIO_BASE + 0x0080 * n;
30 __raw_bits_or((1<<5), 0x8B000008); //GPIO register Enable
31 __raw_bits_or((1<<maskbit), addr + 4); //Mask
33 __raw_bits_or((1<<maskbit), addr + 8); //Dir out
34 else __raw_bits_and(~(1<<maskbit), addr+ 8); //Dir in
37 void gpio_set_value(int PinNo, int Level) //Sunny only for uBoot gpio ops
42 }else if(PinNo >=176){
46 addr =GPIO_BASE + 0x0080 * n;
50 __raw_bits_or((1<<maskbit), addr + 4); //Mask
52 __raw_bits_or((1<<maskbit), addr); //High
53 else __raw_bits_and(~(1<<maskbit), addr); //Low
56 int gpio_get_value(int PinNo) //Sunny only for uBoot gpio ops
62 }else if(PinNo >=176){
66 addr =GPIO_BASE + 0x0080 * n;
70 ret = __raw_readl(addr);
72 if(ret & (1<<maskbit))