|
|
|
@ -18,10 +18,10 @@ static inline void gpio_free(unsigned gpio) |
|
|
|
|
|
|
|
|
|
static inline int gpio_direction_input(unsigned gpio) |
|
|
|
|
{ |
|
|
|
|
if (ssb.chipco->dev) |
|
|
|
|
ssb_chipco_gpioouten(&ssb.chipco, 1 << gpio, 0); |
|
|
|
|
else if (ssb.extif->dev) |
|
|
|
|
ssb_extif_gpioouten(&ssb.extif, 1 << gpio, 0); |
|
|
|
|
if (ssb.chipco.dev) |
|
|
|
|
ssb_chipco_gpio_outen(&ssb.chipco, 1 << gpio, 0); |
|
|
|
|
else if (ssb.extif.dev) |
|
|
|
|
ssb_extif_gpio_outen(&ssb.extif, 1 << gpio, 0); |
|
|
|
|
else |
|
|
|
|
return -EINVAL; |
|
|
|
|
return 0; |
|
|
|
@ -29,10 +29,10 @@ static inline int gpio_direction_input(unsigned gpio) |
|
|
|
|
|
|
|
|
|
static inline int gpio_direction_output(unsigned gpio) |
|
|
|
|
{ |
|
|
|
|
if (ssb.chipco->dev) |
|
|
|
|
ssb_chipco_gpioouten(&ssb.chipco, 1 << gpio, 1 << gpio); |
|
|
|
|
else if (ssb.extif->dev) |
|
|
|
|
ssb_extif_gpioouten(&ssb.extif, 1 << gpio, 1 << gpio); |
|
|
|
|
if (ssb.chipco.dev) |
|
|
|
|
ssb_chipco_gpio_outen(&ssb.chipco, 1 << gpio, 1 << gpio); |
|
|
|
|
else if (ssb.extif.dev) |
|
|
|
|
ssb_extif_gpio_outen(&ssb.extif, 1 << gpio, 1 << gpio); |
|
|
|
|
else |
|
|
|
|
return -EINVAL; |
|
|
|
|
|
|
|
|
@ -44,9 +44,9 @@ static inline int gpio_to_irq(unsigned gpio) |
|
|
|
|
{ |
|
|
|
|
struct ssb_device *dev; |
|
|
|
|
|
|
|
|
|
dev = ssb.chipco->dev; |
|
|
|
|
dev = ssb.chipco.dev; |
|
|
|
|
if (!dev) |
|
|
|
|
dev = ssb.extif->dev; |
|
|
|
|
dev = ssb.extif.dev; |
|
|
|
|
if (!dev) |
|
|
|
|
return -EINVAL; |
|
|
|
|
|
|
|
|
@ -61,20 +61,20 @@ static inline int irq_to_gpio(unsigned gpio) |
|
|
|
|
|
|
|
|
|
static inline int gpio_get_value(unsigned gpio) |
|
|
|
|
{ |
|
|
|
|
if (ssb.chipco->dev) |
|
|
|
|
return ssb_chipco_gpioin(&ssb.chipco, 1 << gpio) ? 1 : 0; |
|
|
|
|
else if (ssb.extif->dev) |
|
|
|
|
return ssb_extif_gpioin(&ssb.extif, 1 << gpio) ? 1 : 0; |
|
|
|
|
if (ssb.chipco.dev) |
|
|
|
|
return ssb_chipco_gpio_in(&ssb.chipco, 1 << gpio) ? 1 : 0; |
|
|
|
|
else if (ssb.extif.dev) |
|
|
|
|
return ssb_extif_gpio_in(&ssb.extif, 1 << gpio) ? 1 : 0; |
|
|
|
|
else |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static inline int gpio_set_value(unsigned gpio, int value) |
|
|
|
|
{ |
|
|
|
|
if (ssb.chipco->dev) |
|
|
|
|
ssb_chipco_gpioout(&ssb.chipco, 1 << gpio, (value ? 1 << gpio : 0)); |
|
|
|
|
else if (ssb.extif->dev) |
|
|
|
|
ssb_extif_gpioout(&ssb.extif, 1 << gpio, (value ? 1 << gpio : 0)); |
|
|
|
|
if (ssb.chipco.dev) |
|
|
|
|
ssb_chipco_gpio_out(&ssb.chipco, 1 << gpio, (value ? 1 << gpio : 0)); |
|
|
|
|
else if (ssb.extif.dev) |
|
|
|
|
ssb_extif_gpio_out(&ssb.extif, 1 << gpio, (value ? 1 << gpio : 0)); |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|