Loading arch/blackfin/kernel/bfin_gpio.c +42 −13 Original line number Diff line number Diff line Loading @@ -229,6 +229,11 @@ inline int check_gpio(unsigned short gpio) } #endif void gpio_error(unsigned gpio) { printk(KERN_ERR "bfin-gpio: GPIO %d wasn't requested!\n", gpio); } static void set_label(unsigned short ident, const char *label) { Loading Loading @@ -1034,7 +1039,7 @@ EXPORT_SYMBOL(peripheral_free_list); * MODIFICATION HISTORY : **************************************************************/ int gpio_request(unsigned short gpio, const char *label) int gpio_request(unsigned gpio, const char *label) { unsigned long flags; Loading Loading @@ -1081,7 +1086,7 @@ int gpio_request(unsigned short gpio, const char *label) } EXPORT_SYMBOL(gpio_request); void gpio_free(unsigned short gpio) void gpio_free(unsigned gpio) { unsigned long flags; Loading @@ -1091,7 +1096,7 @@ void gpio_free(unsigned short gpio) local_irq_save(flags); if (unlikely(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio)))) { printk(KERN_ERR "bfin-gpio: GPIO %d wasn't reserved!\n", gpio); gpio_error(gpio); dump_stack(); local_irq_restore(flags); return; Loading @@ -1107,34 +1112,47 @@ void gpio_free(unsigned short gpio) } EXPORT_SYMBOL(gpio_free); #ifdef BF548_FAMILY void gpio_direction_input(unsigned short gpio) int gpio_direction_input(unsigned gpio) { unsigned long flags; BUG_ON(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))); if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) { gpio_error(gpio); return -EINVAL; } local_irq_save(flags); gpio_array[gpio_bank(gpio)]->port_dir_clear = gpio_bit(gpio); gpio_array[gpio_bank(gpio)]->port_inen |= gpio_bit(gpio); local_irq_restore(flags); return 0; } EXPORT_SYMBOL(gpio_direction_input); void gpio_direction_output(unsigned short gpio) int gpio_direction_output(unsigned gpio, int value) { unsigned long flags; BUG_ON(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))); if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) { gpio_error(gpio); return -EINVAL; } local_irq_save(flags); gpio_array[gpio_bank(gpio)]->port_inen &= ~gpio_bit(gpio); gpio_set_value(gpio, value); gpio_array[gpio_bank(gpio)]->port_dir_set = gpio_bit(gpio); local_irq_restore(flags); return 0; } EXPORT_SYMBOL(gpio_direction_output); void gpio_set_value(unsigned short gpio, unsigned short arg) void gpio_set_value(unsigned gpio, int arg) { if (arg) gpio_array[gpio_bank(gpio)]->port_set = gpio_bit(gpio); Loading @@ -1144,7 +1162,7 @@ void gpio_set_value(unsigned short gpio, unsigned short arg) } EXPORT_SYMBOL(gpio_set_value); unsigned short gpio_get_value(unsigned short gpio) int gpio_get_value(unsigned gpio) { return (1 & (gpio_array[gpio_bank(gpio)]->port_data >> gpio_sub_n(gpio))); } Loading @@ -1152,31 +1170,42 @@ EXPORT_SYMBOL(gpio_get_value); #else void gpio_direction_input(unsigned short gpio) int gpio_direction_input(unsigned gpio) { unsigned long flags; BUG_ON(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))); if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) { gpio_error(gpio); return -EINVAL; } local_irq_save(flags); gpio_bankb[gpio_bank(gpio)]->dir &= ~gpio_bit(gpio); gpio_bankb[gpio_bank(gpio)]->inen |= gpio_bit(gpio); AWA_DUMMY_READ(inen); local_irq_restore(flags); return 0; } EXPORT_SYMBOL(gpio_direction_input); void gpio_direction_output(unsigned short gpio) int gpio_direction_output(unsigned gpio, int value) { unsigned long flags; BUG_ON(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))); if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) { gpio_error(gpio); return -EINVAL; } local_irq_save(flags); gpio_bankb[gpio_bank(gpio)]->inen &= ~gpio_bit(gpio); gpio_set_value(gpio, value); gpio_bankb[gpio_bank(gpio)]->dir |= gpio_bit(gpio); AWA_DUMMY_READ(dir); local_irq_restore(flags); return 0; } EXPORT_SYMBOL(gpio_direction_output); Loading arch/blackfin/mach-bf527/boards/ezkit.c +1 −6 Original line number Diff line number Diff line Loading @@ -317,12 +317,7 @@ static struct resource sl811_hcd_resources[] = { void sl811_port_power(struct device *dev, int is_on) { gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS); if (is_on) gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1); else gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on); } #endif Loading arch/blackfin/mach-bf537/boards/generic_board.c +1 −5 Original line number Diff line number Diff line Loading @@ -205,12 +205,8 @@ static struct resource sl811_hcd_resources[] = { void sl811_port_power(struct device *dev, int is_on) { gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on); if (is_on) gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1); else gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0); } #endif Loading arch/blackfin/mach-bf537/boards/pnav10.c +1 −5 Original line number Diff line number Diff line Loading @@ -134,12 +134,8 @@ static struct resource sl811_hcd_resources[] = { void sl811_port_power(struct device *dev, int is_on) { gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on); if (is_on) gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1); else gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0); } #endif Loading arch/blackfin/mach-bf537/boards/stamp.c +1 −6 Original line number Diff line number Diff line Loading @@ -250,12 +250,7 @@ static struct resource sl811_hcd_resources[] = { void sl811_port_power(struct device *dev, int is_on) { gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS); if (is_on) gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1); else gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on); } #endif Loading Loading
arch/blackfin/kernel/bfin_gpio.c +42 −13 Original line number Diff line number Diff line Loading @@ -229,6 +229,11 @@ inline int check_gpio(unsigned short gpio) } #endif void gpio_error(unsigned gpio) { printk(KERN_ERR "bfin-gpio: GPIO %d wasn't requested!\n", gpio); } static void set_label(unsigned short ident, const char *label) { Loading Loading @@ -1034,7 +1039,7 @@ EXPORT_SYMBOL(peripheral_free_list); * MODIFICATION HISTORY : **************************************************************/ int gpio_request(unsigned short gpio, const char *label) int gpio_request(unsigned gpio, const char *label) { unsigned long flags; Loading Loading @@ -1081,7 +1086,7 @@ int gpio_request(unsigned short gpio, const char *label) } EXPORT_SYMBOL(gpio_request); void gpio_free(unsigned short gpio) void gpio_free(unsigned gpio) { unsigned long flags; Loading @@ -1091,7 +1096,7 @@ void gpio_free(unsigned short gpio) local_irq_save(flags); if (unlikely(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio)))) { printk(KERN_ERR "bfin-gpio: GPIO %d wasn't reserved!\n", gpio); gpio_error(gpio); dump_stack(); local_irq_restore(flags); return; Loading @@ -1107,34 +1112,47 @@ void gpio_free(unsigned short gpio) } EXPORT_SYMBOL(gpio_free); #ifdef BF548_FAMILY void gpio_direction_input(unsigned short gpio) int gpio_direction_input(unsigned gpio) { unsigned long flags; BUG_ON(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))); if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) { gpio_error(gpio); return -EINVAL; } local_irq_save(flags); gpio_array[gpio_bank(gpio)]->port_dir_clear = gpio_bit(gpio); gpio_array[gpio_bank(gpio)]->port_inen |= gpio_bit(gpio); local_irq_restore(flags); return 0; } EXPORT_SYMBOL(gpio_direction_input); void gpio_direction_output(unsigned short gpio) int gpio_direction_output(unsigned gpio, int value) { unsigned long flags; BUG_ON(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))); if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) { gpio_error(gpio); return -EINVAL; } local_irq_save(flags); gpio_array[gpio_bank(gpio)]->port_inen &= ~gpio_bit(gpio); gpio_set_value(gpio, value); gpio_array[gpio_bank(gpio)]->port_dir_set = gpio_bit(gpio); local_irq_restore(flags); return 0; } EXPORT_SYMBOL(gpio_direction_output); void gpio_set_value(unsigned short gpio, unsigned short arg) void gpio_set_value(unsigned gpio, int arg) { if (arg) gpio_array[gpio_bank(gpio)]->port_set = gpio_bit(gpio); Loading @@ -1144,7 +1162,7 @@ void gpio_set_value(unsigned short gpio, unsigned short arg) } EXPORT_SYMBOL(gpio_set_value); unsigned short gpio_get_value(unsigned short gpio) int gpio_get_value(unsigned gpio) { return (1 & (gpio_array[gpio_bank(gpio)]->port_data >> gpio_sub_n(gpio))); } Loading @@ -1152,31 +1170,42 @@ EXPORT_SYMBOL(gpio_get_value); #else void gpio_direction_input(unsigned short gpio) int gpio_direction_input(unsigned gpio) { unsigned long flags; BUG_ON(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))); if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) { gpio_error(gpio); return -EINVAL; } local_irq_save(flags); gpio_bankb[gpio_bank(gpio)]->dir &= ~gpio_bit(gpio); gpio_bankb[gpio_bank(gpio)]->inen |= gpio_bit(gpio); AWA_DUMMY_READ(inen); local_irq_restore(flags); return 0; } EXPORT_SYMBOL(gpio_direction_input); void gpio_direction_output(unsigned short gpio) int gpio_direction_output(unsigned gpio, int value) { unsigned long flags; BUG_ON(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))); if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) { gpio_error(gpio); return -EINVAL; } local_irq_save(flags); gpio_bankb[gpio_bank(gpio)]->inen &= ~gpio_bit(gpio); gpio_set_value(gpio, value); gpio_bankb[gpio_bank(gpio)]->dir |= gpio_bit(gpio); AWA_DUMMY_READ(dir); local_irq_restore(flags); return 0; } EXPORT_SYMBOL(gpio_direction_output); Loading
arch/blackfin/mach-bf527/boards/ezkit.c +1 −6 Original line number Diff line number Diff line Loading @@ -317,12 +317,7 @@ static struct resource sl811_hcd_resources[] = { void sl811_port_power(struct device *dev, int is_on) { gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS); if (is_on) gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1); else gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on); } #endif Loading
arch/blackfin/mach-bf537/boards/generic_board.c +1 −5 Original line number Diff line number Diff line Loading @@ -205,12 +205,8 @@ static struct resource sl811_hcd_resources[] = { void sl811_port_power(struct device *dev, int is_on) { gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on); if (is_on) gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1); else gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0); } #endif Loading
arch/blackfin/mach-bf537/boards/pnav10.c +1 −5 Original line number Diff line number Diff line Loading @@ -134,12 +134,8 @@ static struct resource sl811_hcd_resources[] = { void sl811_port_power(struct device *dev, int is_on) { gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on); if (is_on) gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1); else gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0); } #endif Loading
arch/blackfin/mach-bf537/boards/stamp.c +1 −6 Original line number Diff line number Diff line Loading @@ -250,12 +250,7 @@ static struct resource sl811_hcd_resources[] = { void sl811_port_power(struct device *dev, int is_on) { gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS); if (is_on) gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1); else gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0); gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on); } #endif Loading