diff options
| -rw-r--r-- | package/gpio_rtl819x/Makefile (renamed from package/gpio_rtl8196c/Makefile) | 20 | ||||
| -rw-r--r-- | package/gpio_rtl819x/src/Makefile (renamed from package/gpio_rtl8196c/src/Makefile) | 2 | ||||
| -rw-r--r-- | package/gpio_rtl819x/src/README | 7 | ||||
| -rw-r--r-- | package/gpio_rtl819x/src/gpio_rtl819x.c (renamed from package/gpio_rtl8196c/src/gpio_rtl8196c.c) | 118 | ||||
| -rwxr-xr-x | target/linux/realtek/base-files/etc/init.d/sysled | 8 | 
5 files changed, 86 insertions, 69 deletions
| diff --git a/package/gpio_rtl8196c/Makefile b/package/gpio_rtl819x/Makefile index 45dc5cffe..3795fa92e 100644 --- a/package/gpio_rtl8196c/Makefile +++ b/package/gpio_rtl819x/Makefile @@ -8,19 +8,19 @@  include $(TOPDIR)/rules.mk  include $(INCLUDE_DIR)/kernel.mk -PKG_NAME:=gpio_rtl8196c -PKG_VERSION:=0.0.1 +PKG_NAME:=gpio_rtl819x +PKG_VERSION:=0.0.2  PKG_RELEASE:=1  include $(INCLUDE_DIR)/package.mk -define KernelPackage/gpio_rtl8196c -	SUBMENU:=gpio_rtl8196c -	TITLE:=gpio_rtl8196c -	FILES:=$(PKG_BUILD_DIR)/gpio_rtl8196c.ko +define KernelPackage/gpio_rtl819x +	SUBMENU:=gpio_rtl819x +	TITLE:=gpio_rtl819x +	FILES:=$(PKG_BUILD_DIR)/gpio_rtl819x.ko  	DEPENDS:=  	#KCONFIG:= -	KCONFIG:=CONFIG_GPIO_RTL8196C=y CONFIG_GPIOLIB=y CONFIG_GENERIC_GPIO=y CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +	KCONFIG:=CONFIG_GPIO_RTL819X=y CONFIG_GPIOLIB=y CONFIG_GENERIC_GPIO=y CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y  	#AUTOLOAD:=$(call AutoLoad,01,sigb in)  endef @@ -28,7 +28,7 @@ define KernelPackage/gpio_rtl8196c/description  	GPIO for Realtek rtl8196c  endef -EXTRA_KCONFIG:=CONFIG_GPIO_RTL8196C=y +EXTRA_KCONFIG:=CONFIG_GPIO_RTL819X=y  EXTRA_KCONFIG+=CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y  EXTRA_KCONFIG+=CONFIG_ARCH_REQUIRE_GPIOLIB=y  EXTRA_KCONFIG+=CONFIG_GENERIC_GPIO=y @@ -56,7 +56,7 @@ define Build/Compile  	$(MAKE) -C "$(LINUX_DIR)" \  		 $(MAKE_OPTS) \  		modules -	$(CP) $(PKG_BUILD_DIR)/gpio_rtl8196c.ko /tmp +	$(CP) $(PKG_BUILD_DIR)/gpio_rtl819x.ko /tmp  endef -$(eval $(call KernelPackage,gpio_rtl8196c)) +$(eval $(call KernelPackage,gpio_rtl819x)) diff --git a/package/gpio_rtl8196c/src/Makefile b/package/gpio_rtl819x/src/Makefile index 6740c78db..a9512057b 100644 --- a/package/gpio_rtl8196c/src/Makefile +++ b/package/gpio_rtl819x/src/Makefile @@ -3,6 +3,6 @@  #endif -obj-$(if $(CONFIG_GPIO_RTL8196C),m) += gpio_rtl8196c.o +obj-$(if $(CONFIG_GPIO_RTL819X),m) += gpio_rtl819x.o diff --git a/package/gpio_rtl819x/src/README b/package/gpio_rtl819x/src/README new file mode 100644 index 000000000..dc21a122a --- /dev/null +++ b/package/gpio_rtl819x/src/README @@ -0,0 +1,7 @@ +GPIO driver for rtl chips.  + +ChangeLog: +v0.0.2: +	Defines changed to compile under rtl819x family (96c,96e,96d,88) +v0.0.1: +	Added support for 96c diff --git a/package/gpio_rtl8196c/src/gpio_rtl8196c.c b/package/gpio_rtl819x/src/gpio_rtl819x.c index c2aae8d67..6f4814767 100644 --- a/package/gpio_rtl8196c/src/gpio_rtl8196c.c +++ b/package/gpio_rtl819x/src/gpio_rtl819x.c @@ -24,17 +24,27 @@  #endif  //////////////////////////////////////////////////////////////////////// -#define RTL8196C_BASE_ADDR		0xb8000000 -#define RTL8196C_GPIO_ADDR		(RTL8196C_BASE_ADDR + 0x3500) -#define RTL8196C_GPIO_PABCD_CNT_ADDR	(RTL8196C_GPIO_ADDR + 0x00) -#define RTL8196C_GPIO_PABCD_TYPE_ADDR	(RTL8196C_GPIO_ADDR + 0x00) -#define RTL8196C_GPIO_PABCD_DIR_ADDR	(RTL8196C_GPIO_ADDR + 0x08) -#define RTL8196C_GPIO_PABCD_DAT_ADDR	(RTL8196C_GPIO_ADDR + 0x0c) -#define RTL8196C_GPIO_PABCD_ISR_ADDR	(RTL8196C_GPIO_ADDR + 0x10) -#define RTL8196C_GPIO_PAB_IMR_ADDR	(RTL8196C_GPIO_ADDR + 0x14) -#define RTL8196C_GPIO_PCD_IMR_ADDR	(RTL8196C_GPIO_ADDR + 0x18) - -#define RTL8196C_MUX_ADDR		(RTL8196C_BASE_ADDR + 0x40) +//SAME DEFINE FOR 8196C/8196E/8196D/8198 +#define RTL819X_BASE_ADDR		0xb8000000 +#define RTL819X_GPIO_ADDR		(RTL819X_BASE_ADDR + 0x3500) +#define RTL819X_GPIO_PABCD_CNT_ADDR	(RTL819X_GPIO_ADDR + 0x00) +#define RTL819X_GPIO_PABCD_TYPE_ADDR	(RTL819X_GPIO_ADDR + 0x00) +#define RTL819X_GPIO_PABCD_DIR_ADDR	(RTL819X_GPIO_ADDR + 0x08) +#define RTL819X_GPIO_PABCD_DAT_ADDR	(RTL819X_GPIO_ADDR + 0x0c) +#define RTL819X_GPIO_PABCD_ISR_ADDR	(RTL819X_GPIO_ADDR + 0x10) +#define RTL819X_GPIO_PAB_IMR_ADDR	(RTL819X_GPIO_ADDR + 0x14) +#define RTL819X_GPIO_PCD_IMR_ADDR	(RTL819X_GPIO_ADDR + 0x18) + +#define RTL819X_MUX_ADDR0		(RTL819X_BASE_ADDR + 0x40) +#define RTL819X_MUX_ADDR1		(RTL819X_MUX_ADDR  + 0x4) + +#if defined(CONFIG_RTL_8196C) +#define RTL8196X_MUX_DEF_VALUE		0x340FFF +#elif defined(CONFIG_RTL_8196D) +#define RTL8196X_MUX_DEF_VALUE		0x0 +#elif defined(CONFIG_RTL_8196E) +#define RTL8196X_MUX_DEF_VALUE		0x0 +#endif  static int g_muxdummy; @@ -51,7 +61,7 @@ static int g_muxdummy;  #define RTL8196C_GPIO_SPML_UART		  #define RTL8196C_GPIO_SPML_PCIE		 -static uint32_t rtl8196c_mux_value	=	0x340FFF; +static uint32_t rtl819x_mux_value	=	RTL8196X_MUX_DEF_VALUE;  struct rtl_gpio_chip   { @@ -63,7 +73,7 @@ struct rtl_gpio_chip  	spinlock_t		lock;/* Lock used for synchronization */  }; -extern struct rtl_gpio_chip gpio_rtl8196c; +extern struct rtl_gpio_chip gpio_rtl819x;  static inline struct rtl_gpio_chip *to_rtl_gpio_chip(struct gpio_chip *gc)  { @@ -72,54 +82,54 @@ static inline struct rtl_gpio_chip *to_rtl_gpio_chip(struct gpio_chip *gc)  ////////////////////////////////////////////////////////////////////////  //configure ports as GPIO -static int param_set_rtl8196c_mux( const char *val, struct kernel_param *kp ) +static int param_set_rtl819x_mux( const char *val, struct kernel_param *kp )  { -	volatile uint32_t *mux = (uint32_t *)RTL8196C_MUX_ADDR; +	volatile uint32_t *mux = (uint32_t *)RTL819X_MUX_ADDR0;  	unsigned long flags; -	PRINT("param_set_rtl8196c_mux\n"); +	PRINT("param_set_rtl819x_mux\n");  	if ( !val )  	{  		return -EINVAL;  	} -	if ( sscanf( val, "0x%x", &rtl8196c_mux_value ) < 0 ) +	if ( sscanf( val, "0x%x", &rtl819x_mux_value ) < 0 )  	{  		PRINT("err val\n");  		return -EINVAL;  	} -	spin_lock_irqsave(&gpio_rtl8196c.lock, flags); -	PRINT("mux set 0x%08x\n",rtl8196c_mux_value); -	*mux = rtl8196c_mux_value; -	spin_unlock_irqrestore(&gpio_rtl8196c.lock, flags); +	spin_lock_irqsave(&gpio_rtl819x.lock, flags); +	PRINT("mux set 0x%08x\n",rtl819x_mux_value); +	*mux = rtl819x_mux_value; +	spin_unlock_irqrestore(&gpio_rtl819x.lock, flags);  	return 0;  } -#define param_check_rtl8196c_mux(a,b)  ;; +#define param_check_rtl819x_mux(a,b)  ;;  ////////////////////////////////////////////////////////////////////////  //get current configured port value -static int param_get_rtl8196c_mux( char *buf, struct kernel_param *kp ) +static int param_get_rtl819x_mux( char *buf, struct kernel_param *kp )  { -	volatile uint32_t *mux = (uint32_t*)RTL8196C_MUX_ADDR; +	volatile uint32_t *mux = (uint32_t*)RTL819X_MUX_ADDR0;  	unsigned long flags; -	PRINT("param_get_rtl8196c_mux\n"); -	spin_lock_irqsave(&gpio_rtl8196c.lock, flags); +	PRINT("param_get_rtl819x_mux\n"); +	spin_lock_irqsave(&gpio_rtl819x.lock, flags);  	sprintf( buf, "0x%x", *mux ); -	spin_unlock_irqrestore(&gpio_rtl8196c.lock, flags); +	spin_unlock_irqrestore(&gpio_rtl819x.lock, flags);  	return strlen( buf );  } -module_param_named(rtl8196c_mux, g_muxdummy, rtl8196c_mux, S_IRUGO | S_IWUSR); +module_param_named(rtl819x_mux, g_muxdummy, rtl819x_mux, S_IRUGO | S_IWUSR);  //////////////////////////////////////////////////////////////////////// -static int gpio_rtl8196c_dir_in( struct gpio_chip *chip, unsigned int gpio ) +static int gpio_rtl819x_dir_in( struct gpio_chip *chip, unsigned int gpio )  { -	volatile uint32_t *dir = (uint32_t*)RTL8196C_GPIO_PABCD_DIR_ADDR; +	volatile uint32_t *dir = (uint32_t*)RTL819X_GPIO_PABCD_DIR_ADDR;  	unsigned long flags;  	struct rtl_gpio_chip *rgc = to_rtl_gpio_chip( chip ); -	PRINT("gpio_rtl8196c_dir_in\n"); +	PRINT("gpio_rtl819x_dir_in\n");  	PRINT("offset = %d\n", gpio);  	spin_lock_irqsave(rgc->lock, flags); @@ -132,13 +142,13 @@ static int gpio_rtl8196c_dir_in( struct gpio_chip *chip, unsigned int gpio )  //////////////////////////////////////////////////////////////////////// -static int gpio_rtl8196c_dir_out( struct gpio_chip *chip, unsigned int gpio ) +static int gpio_rtl819x_dir_out( struct gpio_chip *chip, unsigned int gpio )  { -	volatile uint32_t *dir = (uint32_t*)RTL8196C_GPIO_PABCD_DIR_ADDR; +	volatile uint32_t *dir = (uint32_t*)RTL819X_GPIO_PABCD_DIR_ADDR;  	unsigned long flags;  	struct rtl_gpio_chip *rgc = to_rtl_gpio_chip( chip ); -	PRINT("gpio_rtl8196c_dir_out\n"); +	PRINT("gpio_rtl819x_dir_out\n");  	PRINT("offset = %d\n", gpio);  	spin_lock_irqsave(rgc->lock, flags); @@ -151,14 +161,14 @@ static int gpio_rtl8196c_dir_out( struct gpio_chip *chip, unsigned int gpio )  //////////////////////////////////////////////////////////////////////// -static int gpio_rtl8196c_get( struct gpio_chip *chip, unsigned int gpio ) +static int gpio_rtl819x_get( struct gpio_chip *chip, unsigned int gpio )  { -	volatile uint32_t *dat = (uint32_t*)RTL8196C_GPIO_PABCD_DAT_ADDR; +	volatile uint32_t *dat = (uint32_t*)RTL819X_GPIO_PABCD_DAT_ADDR;  	int res=0;  	unsigned long flags;  	struct rtl_gpio_chip *rgc = to_rtl_gpio_chip( chip ); -	PRINT("gpio_rtl8196c_get\n"); +	PRINT("gpio_rtl819x_get\n");  	PRINT("offset = %d\n", gpio);  	spin_lock_irqsave(rgc->lock, flags); @@ -170,14 +180,14 @@ static int gpio_rtl8196c_get( struct gpio_chip *chip, unsigned int gpio )  //////////////////////////////////////////////////////////////////////// -static void gpio_rtl8196c_set( struct gpio_chip *chip, unsigned int gpio, int value ) +static void gpio_rtl819x_set( struct gpio_chip *chip, unsigned int gpio, int value )  { -	volatile uint32_t *dat = (uint32_t*)RTL8196C_GPIO_PABCD_DAT_ADDR; +	volatile uint32_t *dat = (uint32_t*)RTL819X_GPIO_PABCD_DAT_ADDR;  	int res=0;  	unsigned long flags;  	struct rtl_gpio_chip *rgc = to_rtl_gpio_chip( chip ); -	PRINT("gpio_rtl8196c_set\n"); +	PRINT("gpio_rtl819x_set\n");  	PRINT("offset = %d = %d\n", gpio, value);  	spin_lock_irqsave(rgc->lock, flags); @@ -191,41 +201,41 @@ static void gpio_rtl8196c_set( struct gpio_chip *chip, unsigned int gpio, int va  }  //////////////////////////////////////////////////////////////////////// -static int gpio_rtl8196c_to_irq(struct gpio_chip *chip, unsigned offset) +static int gpio_rtl819x_to_irq(struct gpio_chip *chip, unsigned offset)  {  	return -EINVAL;  }  ////////////////////////////////////////////////////////////////////////  //init module -struct rtl_gpio_chip gpio_rtl8196c =  +struct rtl_gpio_chip gpio_rtl819x =   {  	.chip = { -		.label =		"gpio_rtl8196c", -		.direction_input =	gpio_rtl8196c_dir_in, -		.get =			gpio_rtl8196c_get, -		.direction_output =	gpio_rtl8196c_dir_out, -		.set =			gpio_rtl8196c_set, -		.to_irq =		gpio_rtl8196c_to_irq, +		.label =		"gpio_rtl819x", +		.direction_input =	gpio_rtl819x_dir_in, +		.get =			gpio_rtl819x_get, +		.direction_output =	gpio_rtl819x_dir_out, +		.set =			gpio_rtl819x_set, +		.to_irq =		gpio_rtl819x_to_irq,  		.base =			0,  		.ngpio =		32,  	},  	.gpio_dir = 0x0,  }; -static int __init gpio_rtl8196c_init( void ) +static int __init gpio_rtl819x_init( void )  {  	PRINT("Start\n"); -	gpiochip_add( &gpio_rtl8196c.chip ); +	gpiochip_add( &gpio_rtl819x.chip );  	return 0;  }  ////////////////////////////////////////////////////////////////////////  //exit from module -static int gpio_rtl8196c_exit( void ) +static int gpio_rtl819x_exit( void )  {  	PRINT("End\n"); -	gpiochip_remove( &gpio_rtl8196c.chip ); +	gpiochip_remove( &gpio_rtl819x.chip );  	return 0;  } @@ -235,5 +245,5 @@ MODULE_AUTHOR("Artur Artamonov");  MODULE_DESCRIPTION("gpio_rtl8196c");  MODULE_LICENSE("GPL"); -module_init( gpio_rtl8196c_init ); -module_exit( gpio_rtl8196c_exit ); +module_init( gpio_rtl819x_init ); +module_exit( gpio_rtl819x_exit ); diff --git a/target/linux/realtek/base-files/etc/init.d/sysled b/target/linux/realtek/base-files/etc/init.d/sysled index 9b0923496..3c632c261 100755 --- a/target/linux/realtek/base-files/etc/init.d/sysled +++ b/target/linux/realtek/base-files/etc/init.d/sysled @@ -3,13 +3,13 @@  START=99  start() { -        insmod /lib/modules/2.6.30.9/gpio_rtl8196c.ko -        echo 0x340c00 > /sys/module/gpio_rtl8196c/parameters/rtl8196c_mux +        insmod /lib/modules/2.6.30.9/gpio_rtl819x.ko +        echo 0x340c00 > /sys/module/gpio_rtl819x/parameters/rtl819x_mux          echo 6 > /sys/class/gpio/export          echo "out" > /sys/class/gpio/gpio6/direction          echo "0" > /sys/class/gpio/gpio6/value  }   stop() { -        rmmod gpio_rtl8196c -}
\ No newline at end of file +        rmmod gpio_rtl819x +} | 
