Difference between revisions of "GPIO pins"

From LinuxTVWiki
Jump to navigation Jump to search
(No difference)

Revision as of 11:41, 6 May 2005

What are GPIO pins?

GPIO means General Purpose I/O. Video decoder chips like the SAA713x or the BT8x8 have a number of I/O pins that are not used by the video decoder itself. They have no special purpose, each manufacturer can do with them whatever he wants.

That makes it hard to answer questions like "What I'll have to fill into these gpio fields when adding a new card", because there simply is no general answer to that question, it completely depends on the board design. Some hopefully useful hints:

  • First ignore them completely. Especially with non-bt878 cards (saa7134, cx88 drivers) they might not be used at all or at least not needed for the basic functionality of the board.
  • Failing that check out whenever there are already entries for other cards from the same vendor and try these settings. Vendors usually don't redesign everything from scratch for a new card, so chances are good that a identical or very simliar configuation works fine.

What the gpio pins are used for:

  • Sometimes, 2 or 3 of them are used to control an audio multiplexer. That is especially true for bt878-based cards, because that chip hasn't a audio mux built-in.
  • IR receiver chips are also often connected via GPIO. Thats not the only way though. i2c is common as well, and the cx2388x has built-in support for IR signal sampling.
  • Sometimes it is possible to reset external chips via gpio. For example bt878-designs with a msp34xx audio processor usually have the msp34xx reset line linked to one of the gpio pins.
  • Sometimes external chips can be enabled/disabled via GPIO. saa7134-based cardbus devices often have the tuner chip disabled, it's impossible to see the device on the i2c bus without waking it up by programming the correct GPIO pin. Probably done to power-down the tuner when unused for a longer battery life.

That list likely isn't complete, but should give an idea what GPIO pins are used for. They might also be completely unused.

It's also noteworthy that some of the GPIO lines can be used to trigger interrupts, i.e. the video chip can raise an IRQ on the PCI bus on GPIO state changes.

Unused Pins are usually programmed as inputs.

These GPIOs can not be read/written from user space. There is no IOCTL for them. They can only be used from within the kernel driver.

GPIOs of SAA713x

The SAA713x has 27 of these pins. Each of them can be programmed to be an input or an output. On the Terratec Cinergy 400TV mobile, GPIO 18 is used to switch the tuner on (0) or off (1). Unused inputs are usually programmed as inputs. Because of weak internal pull-down resistors in the SAA713x, open inputs are read as zeroes. If a bit is read as "1" after loading the saa7134 module, this means the manufacturer soldered a pull-up resistor to that pin. As they have no resistors to waste, this usually means, they do something with that pin...

GPIOs of BT8x8

(To be written)