firmware/br-ext-chip-ingenic/board/t40/kernel/patches/00000-tools_pm-sleep_includ...

72 lines
2.8 KiB
Diff

diff -drupN a/tools/pm-sleep/include/gpio.h b/tools/pm-sleep/include/gpio.h
--- a/tools/pm-sleep/include/gpio.h 1970-01-01 03:00:00.000000000 +0300
+++ b/tools/pm-sleep/include/gpio.h 2022-06-09 05:02:37.000000000 +0300
@@ -0,0 +1,67 @@
+#ifndef __GPIO_IO_H__
+#define __GPIO_IO_H__
+
+
+#define GPIO_BASE 0xb0010000
+
+#define PXPIN 0x00 /* PIN Level Register */
+#define PXINT 0x10 /* Port Interrupt Register */
+#define PXINTS 0x14 /* Port Interrupt Set Register */
+#define PXINTC 0x18 /* Port Interrupt Clear Register */
+#define PXMSK 0x20 /* Port Interrupt Mask Reg */
+#define PXMSKS 0x24 /* Port Interrupt Mask Set Reg */
+#define PXMSKC 0x28 /* Port Interrupt Mask Clear Reg */
+#define PXPAT1 0x30 /* Port Pattern 1 Set Reg. */
+#define PXPAT1S 0x34 /* Port Pattern 1 Set Reg. */
+#define PXPAT1C 0x38 /* Port Pattern 1 Clear Reg. */
+#define PXPAT0 0x40 /* Port Pattern 0 Register */
+#define PXPAT0S 0x44 /* Port Pattern 0 Set Register */
+#define PXPAT0C 0x48 /* Port Pattern 0 Clear Register */
+#define PXFLG 0x50 /* Port Flag Register */
+#define PXFLGC 0x58 /* Port Flag clear Register */
+#define PXPE 0x70 /* Port Pull Disable Register */
+#define PXPES 0x74 /* Port Pull Disable Set Register */
+#define PXPEC 0x78 /* Port Pull Disable Clear Register */
+enum gpio_function {
+ GPIO_FUNC_0 = 0x00, //0000, GPIO as function 0 / device 0
+ GPIO_FUNC_1 = 0x01, //0001, GPIO as function 1 / device 1
+ GPIO_FUNC_2 = 0x02, //0010, GPIO as function 2 / device 2
+ GPIO_FUNC_3 = 0x03, //0011, GPIO as function 3 / device 3
+ GPIO_OUTPUT0 = 0x04, //0100, GPIO output low level
+ GPIO_OUTPUT1 = 0x05, //0101, GPIO output high level
+ GPIO_INPUT = 0x06, //0110, GPIO as input
+ GPIO_INT_LO = 0x08, //1000, Low Level trigger interrupt
+ GPIO_INT_HI = 0x09, //1001, High Level trigger interrupt
+ GPIO_INT_FE = 0x0a, //1010, Fall Edge trigger interrupt
+ GPIO_INT_RE = 0x0b, //1011, Rise Edge trigger interrupt
+ GPIO_INPUT_PULL = 0x16, //0001 0110, GPIO as input and enable pull
+};
+
+void set_gpio_func(int gpio, int type);
+int get_gpio_func(int gpio);
+#if 1
+static int gpio_get_value(unsigned int gpio)
+{
+ unsigned int port = gpio / 32;
+ unsigned int pin = gpio % 32;
+ unsigned int base = GPIO_BASE + 0x100 * port;
+ return !!(REG32(base + PXPIN) & (1 << pin));
+}
+static inline void gpio_direction_output(unsigned int gpio, int value)
+{
+ if (value)
+ set_gpio_func(gpio,GPIO_OUTPUT1);
+ else
+ set_gpio_func(gpio,GPIO_OUTPUT0);
+}
+static inline void gpio_direction_input(unsigned int gpio)
+{
+ set_gpio_func(gpio,GPIO_INPUT);
+}
+#else
+int gpio_get_value(unsigned int gpio);
+void gpio_direction_output(unsigned int gpio, int value);
+void gpio_direction_input(unsigned int gpio);
+#endif
+
+#endif /* __GPIO_IO_H__ */