The patch number 10167 was added via Michael Krufky <[email protected]>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        [email protected]

------

From: Michael Krufky  <[email protected]>
sms1xxx: add support for inverted gpio


negative gpio values signify inverted polarity

Priority: normal

Signed-off-by: Michael Krufky <[email protected]>


---

 linux/drivers/media/dvb/siano/sms-cards.c |   21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff -r 494b3fb0d443 -r 621c0db605f3 linux/drivers/media/dvb/siano/sms-cards.c
--- a/linux/drivers/media/dvb/siano/sms-cards.c Mon Nov 24 08:35:23 2008 -0200
+++ b/linux/drivers/media/dvb/siano/sms-cards.c Thu Nov 27 23:02:56 2008 -0500
@@ -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)
-{
-       int ret;
+static int sms_set_gpio(struct smscore_device_t *coredev, int pin, int enable)
+{
+       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_d
        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)


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/621c0db605f3f6775b71ee8263637be57ee96567

_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to