Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dd72f31b authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (10167): sms1xxx: add support for inverted gpio



negative gpio values signify inverted polarity

Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent e4cda3e0
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -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)