|
|
|
@ -204,10 +204,27 @@ static inline int leds_direction_output(unsigned led, int value) |
|
|
|
|
|
|
|
|
|
t = GPIO_READ(reg); |
|
|
|
|
t &= ~(LED_MODE_MASK << s); |
|
|
|
|
if (value) |
|
|
|
|
t |= (LED_MODE_OUT_HIGH << s); |
|
|
|
|
else |
|
|
|
|
|
|
|
|
|
switch (value) { |
|
|
|
|
case ADM5120_GPIO_LOW: |
|
|
|
|
t |= (LED_MODE_OUT_LOW << s); |
|
|
|
|
break; |
|
|
|
|
case ADM5120_GPIO_FLASH: |
|
|
|
|
case ADM5120_GPIO_LINK: |
|
|
|
|
case ADM5120_GPIO_SPEED: |
|
|
|
|
case ADM5120_GPIO_DUPLEX: |
|
|
|
|
case ADM5120_GPIO_ACT: |
|
|
|
|
case ADM5120_GPIO_COLL: |
|
|
|
|
case ADM5120_GPIO_LINK_ACT: |
|
|
|
|
case ADM5120_GPIO_DUPLEX_COLL: |
|
|
|
|
case ADM5120_GPIO_10M_ACT: |
|
|
|
|
case ADM5120_GPIO_100M_ACT: |
|
|
|
|
t |= ((value & LED_MODE_MASK) << s); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
t |= (LED_MODE_OUT_HIGH << s); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
GPIO_WRITE(t,reg); |
|
|
|
|
|
|
|
|
@ -232,24 +249,6 @@ static inline int leds_get_value(unsigned led) |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static inline void leds_set_value(unsigned led, int value) |
|
|
|
|
{ |
|
|
|
|
gpio_reg_t *reg; |
|
|
|
|
u32 s,t; |
|
|
|
|
|
|
|
|
|
reg = led_table[led].reg; |
|
|
|
|
s = led_table[led].mode_shift; |
|
|
|
|
|
|
|
|
|
t = GPIO_READ(reg); |
|
|
|
|
t &= ~(LED_MODE_MASK << s); |
|
|
|
|
if (value) |
|
|
|
|
t |= (LED_MODE_OUT_HIGH << s); |
|
|
|
|
else |
|
|
|
|
t |= (LED_MODE_OUT_LOW << s); |
|
|
|
|
|
|
|
|
|
GPIO_WRITE(t,reg); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Main GPIO support routines |
|
|
|
|
*/ |
|
|
|
@ -294,7 +293,7 @@ void adm5120_gpio_set_value(unsigned gpio, int value) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
gpio -= ADM5120_GPIO_P0L0; |
|
|
|
|
leds_set_value(gpio, value); |
|
|
|
|
leds_direction_output(gpio, value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int adm5120_gpio_request(unsigned gpio, const char *label) |
|
|
|
|