1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2025-04-21 12:27:27 +03:00

[adm5120] add special values for GPIO lines in switch

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8351 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
juhosg
2007-08-06 17:25:49 +00:00
parent 3ac745fdfb
commit f6e8fec1b4
2 changed files with 38 additions and 22 deletions

View File

@@ -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)