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:
Родитель
e4cda3e072
Коммит
dd72f31b4f
|
@ -131,9 +131,10 @@ struct sms_board *sms_get_board(int 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 = {
|
||||
.direction = SMS_GPIO_DIRECTION_OUTPUT,
|
||||
.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)
|
||||
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)
|
||||
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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче