Am 13.04.2013 16:41, schrieb Mauro Carvalho Chehab: > Em Sat, 13 Apr 2013 11:48:39 +0200 > Frank Schäfer <fschaefer.oss@xxxxxxxxxxxxxx> escreveu: > >> The GPIO register tracking/caching code is partially broken, because newer >> devices provide more than one GPIO register and some of them are even using >> separate registers for read and write access. >> Making it work would be too complicated. >> It is also used nowhere and doesn't make sense in cases where input lines are >> connected to buttons etc. >> >> Signed-off-by: Frank Schäfer <fschaefer.oss@xxxxxxxxxxxxxx> >> --- >> drivers/media/usb/em28xx/em28xx-cards.c | 12 ------------ >> drivers/media/usb/em28xx/em28xx-core.c | 27 ++------------------------- >> drivers/media/usb/em28xx/em28xx.h | 6 ------ >> 3 Dateien geändert, 2 Zeilen hinzugefügt(+), 43 Zeilen entfernt(-) > ... > > >> @@ -231,14 +215,7 @@ int em28xx_write_reg_bits(struct em28xx *dev, u16 reg, u8 val, >> int oldval; >> u8 newval; >> >> - /* Uses cache for gpo/gpio registers */ >> - if (reg == dev->reg_gpo_num) >> - oldval = dev->reg_gpo; >> - else if (reg == dev->reg_gpio_num) >> - oldval = dev->reg_gpio; >> - else >> - oldval = em28xx_read_reg(dev, reg); >> - >> + oldval = em28xx_read_reg(dev, reg); >> if (oldval < 0) >> return oldval; > That's plain wrong, as it will break GPIO input. > > With GPIO, you can write either 0 or 1 to a GPIO output port. So, your > code works for output ports. > > However, an input port requires an specific value (either 1 or 0 depending > on the GPIO circuitry). If the wrong value is written there, the input port > will stop working. > > So, you can't simply read a value from a GPIO input and write it. You need > to shadow the GPIO write values instead. I don't understand what you mean. Why can I not read the value of a GPIO input and write it ? Regards, Frank > Regards, > Mauro -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html