V4L/DVB (10167): sms1xxx: add support for inverted gpio
negative gpio values signify inverted polarity Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
e4cda3e072
commit
dd72f31b4f
@ -131,9 +131,10 @@ struct sms_board *sms_get_board(int id)
|
|||||||
return &sms_boards[id];
|
return &sms_boards[id];
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sms_set_gpio(struct smscore_device_t *coredev, u32 pin, int enable)
|
static int sms_set_gpio(struct smscore_device_t *coredev, int pin, int enable)
|
||||||
{
|
{
|
||||||
int ret;
|
int lvl, ret;
|
||||||
|
u32 gpio;
|
||||||
struct smscore_gpio_config gpioconfig = {
|
struct smscore_gpio_config gpioconfig = {
|
||||||
.direction = SMS_GPIO_DIRECTION_OUTPUT,
|
.direction = SMS_GPIO_DIRECTION_OUTPUT,
|
||||||
.pullupdown = SMS_GPIO_PULLUPDOWN_NONE,
|
.pullupdown = SMS_GPIO_PULLUPDOWN_NONE,
|
||||||
@ -145,12 +146,20 @@ static int sms_set_gpio(struct smscore_device_t *coredev, u32 pin, int enable)
|
|||||||
if (pin == 0)
|
if (pin == 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ret = smscore_configure_gpio(coredev, pin, &gpioconfig);
|
if (pin < 0) {
|
||||||
|
/* inverted gpio */
|
||||||
|
gpio = pin * -1;
|
||||||
|
lvl = enable ? 0 : 1;
|
||||||
|
} else {
|
||||||
|
gpio = pin;
|
||||||
|
lvl = enable ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = smscore_configure_gpio(coredev, gpio, &gpioconfig);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
return smscore_set_gpio(coredev, pin, enable);
|
return smscore_set_gpio(coredev, gpio, lvl);
|
||||||
}
|
}
|
||||||
|
|
||||||
int sms_board_setup(struct smscore_device_t *coredev)
|
int sms_board_setup(struct smscore_device_t *coredev)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user