void kw_gpio_set_blink(unsigned pin, int blink) { /* Set output value to zero. */ __set_level(pin, 0); /* Set blinking. */ __set_blinking(pin, blink); }
/* * Orion-specific GPIO API extensions. */ void __init orion_gpio_set_unused(unsigned pin) { /* * Configure as output, drive low. */ __set_level(pin, 0); __set_direction(pin, 0); }
static void orion_gpio_set_value(struct gpio_chip *chip, unsigned pin, int value) { unsigned long flags; spin_lock_irqsave(&gpio_lock, flags); /* Configure GPIO output value. */ __set_level(pin, value); spin_unlock_irqrestore(&gpio_lock, flags); }
void orion_gpio_set_blink(unsigned pin, int blink) { unsigned long flags; spin_lock_irqsave(&gpio_lock, flags); /* Set output value to zero. */ __set_level(pin, 0); /* Set blinking. */ __set_blinking(pin, blink); spin_unlock_irqrestore(&gpio_lock, flags); }
int kw_gpio_direction_output(unsigned pin, int value) { if (kw_gpio_is_valid(pin, GPIO_OUTPUT_OK) != 0) { printf("%s: invalid GPIO %d\n", __func__, pin); return 1; } __set_blinking(pin, 0); /* Configure GPIO output value. */ __set_level(pin, value); /* Configure GPIO direction. */ __set_direction(pin, 0); return 0; }
void orion_gpio_set_blink(unsigned pin, int blink) { unsigned long flags; u32 u; spin_lock_irqsave(&gpio_lock, flags); /* * Set output value to zero. */ __set_level(pin, 0); u = readl(GPIO_BLINK_EN(pin)); if (blink) u |= 1 << (pin & 31); else u &= ~(1 << (pin & 31)); writel(u, GPIO_BLINK_EN(pin)); spin_unlock_irqrestore(&gpio_lock, flags); }
void gpio_set_value(unsigned pin, int value) { unsigned long flags; u32 u; spin_lock_irqsave(&gpio_lock, flags); /* * Disable blinking. */ u = readl(GPIO_BLINK_EN(pin)); u &= ~(1 << (pin & 31)); writel(u, GPIO_BLINK_EN(pin)); /* * Configure GPIO output value. */ __set_level(pin, value); spin_unlock_irqrestore(&gpio_lock, flags); }
int gpio_direction_output(unsigned pin, int value) { unsigned long flags; u32 u; if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { pr_debug("%s: invalid GPIO %d\n", __func__, pin); return -EINVAL; } spin_lock_irqsave(&gpio_lock, flags); /* * Some callers might not have used gpio_request(), * so flag this pin as requested now. */ if (gpio_label[pin] == NULL) gpio_label[pin] = "?"; /* * Disable blinking. */ u = readl(GPIO_BLINK_EN(pin)); u &= ~(1 << (pin & 31)); writel(u, GPIO_BLINK_EN(pin)); /* * Configure GPIO output value. */ __set_level(pin, value); /* * Configure GPIO direction. */ __set_direction(pin, 0); spin_unlock_irqrestore(&gpio_lock, flags); return 0; }
static int orion_gpio_direction_output(struct gpio_chip *chip, unsigned pin, int value) { unsigned long flags; if (!orion_gpio_is_valid(pin, GPIO_OUTPUT_OK)) return -EINVAL; spin_lock_irqsave(&gpio_lock, flags); /* Disable blinking. */ __set_blinking(pin, 0); /* Configure GPIO output value. */ __set_level(pin, value); /* Configure GPIO direction. */ __set_direction(pin, 0); spin_unlock_irqrestore(&gpio_lock, flags); return 0; }
void kw_gpio_set_value(unsigned pin, int value) { /* Configure GPIO output value. */ __set_level(pin, value); }