mirror of
https://github.com/torvalds/linux.git
synced 2024-12-30 14:52:05 +00:00
3fd14cdcc0
Core: * Remove support for asynchronous erase (not implemented by any of the existing drivers anyway) * Remove Cyrille from the list of SPI NOR and MTD maintainers * Fix kernel doc headers * Allow users to define the partitions parsers they want to test through a DT property (compatible of the partitions subnode) * Remove the bfin-async-flash driver (the only architecture using it has been removed) * Fix pagetest test * Add extra checks in mtd_erase() * Simplify the MTD partition creation logic and get rid of mtd_add_device_partitions() Drivers: * Add endianness information to the physmap DT binding * Add Eon EN29LV400A IDs to JEDEC probe logic * Use %*ph where appropriate SPI NOR changes: Drivers: * Make fsl-quaspi assign different names to MTD devices connected to the same QSPI controller * Remove an unneeded driver.bus assigned in the fsl-qspi driver NAND changes: Core: * Prepare arrival of the SPI NAND subsystem by implementing a generic (interface-agnostic) layer to ease manipulation of NAND devices * Move onenand code base to the drivers/mtd/nand/ dir * Rework timing mode selection * Provide a generic way for NAND chip drivers to flag a specific GET/SET FEATURE operation as supported/unsupported * Stop embedding ONFI/JEDEC param page in nand_chip Drivers: * Rework/cleanup of the mxc driver * Various cleanups in the vf610 driver * Migrate the fsmc and vf610 to ->exec_op() * Get rid of the pxa driver (replaced by marvell_nand) * Support ->setup_data_interface() in the GPMI driver * Fix probe error path in several drivers * Remove support for unused hw_syndrome mode in sunxi_nand * Various minor improvements -----BEGIN PGP SIGNATURE----- iQI5BAABCAAjBQJaxTXfHBxib3Jpcy5icmV6aWxsb25AYm9vdGxpbi5jb20ACgkQ Ze02AX4ItwDeFhAAs+OmGip0LHk+D7gFCBONtypOGRi0nmGsi6PkhKtUZBob6/Y2 JoJhTrHx/LsRpqcuh3Y8KSCp0CG5WlZX2m1RU1yrcqiWvTfiXHlv6aQGfiE/esRb Ei4QNiND8hg+hyzc6I5wRrAuJ7jPP5BanX+n9TyvygaA1Ic5pcur0gssoYKeJTia 18pUV+RLe67wfP02uT0GJvmXd5ecIpu0OVhmJPye2UQqnfl+eiJ2zI4TJAZN3zRW tD9XiX3/GP8oCnvC+1kZw48a2c/qiHs/DKCdDcH6SDTKzKha4zCgaX4220X3AqPK rScrFTKxiCa1utZPn9EplnW6ZW3Ud46GqReWGRQZuyphu/ntdkNim7nuJMUZfEFL RFtMLhXDs1aXUaYJ6F3YQeajHxVU6Ugl34UQCraCXbfmzqCkaKfgXm3EVb9d2duY rCkrS5N4gSQXp5SMvc0aiu2TnsRX2OCthGg0NBdHG9AaVhwuj0neeSFQ/XFPxOeh 5jQKo4umR7tr2Md7osSx0PVxVo8uO5smqcl90SsdwrjxQxL7z1u/SJBjRf6pJDzQ cR1o+H9jBXecqD6m+dN3H/h0sMwHzefsASkxYNxl2OeRGYsJvBpuoQF8yUD9jnRS AzHhWhUNo8g3FxDe7kKgsMXoqnr/pKopMCRxVbeEkhDFNsTvBde10/Xo09U= =EG7L -----END PGP SIGNATURE----- Merge tag 'mtd/for-4.17' of git://git.infradead.org/linux-mtd Pull MTD updates from Boris Brezillon: "MTD Core: - Remove support for asynchronous erase (not implemented by any of the existing drivers anyway) - Remove Cyrille from the list of SPI NOR and MTD maintainers - Fix kernel doc headers - Allow users to define the partitions parsers they want to test through a DT property (compatible of the partitions subnode) - Remove the bfin-async-flash driver (the only architecture using it has been removed) - Fix pagetest test - Add extra checks in mtd_erase() - Simplify the MTD partition creation logic and get rid of mtd_add_device_partitions() MTD Drivers: - Add endianness information to the physmap DT binding - Add Eon EN29LV400A IDs to JEDEC probe logic - Use %*ph where appropriate SPI NOR Drivers: - Make fsl-quaspi assign different names to MTD devices connected to the same QSPI controller - Remove an unneeded driver.bus assigned in the fsl-qspi driver NAND Core: - Prepare arrival of the SPI NAND subsystem by implementing a generic (interface-agnostic) layer to ease manipulation of NAND devices - Move onenand code base to the drivers/mtd/nand/ dir - Rework timing mode selection - Provide a generic way for NAND chip drivers to flag a specific GET/SET FEATURE operation as supported/unsupported - Stop embedding ONFI/JEDEC param page in nand_chip NAND Drivers: - Rework/cleanup of the mxc driver - Various cleanups in the vf610 driver - Migrate the fsmc and vf610 to ->exec_op() - Get rid of the pxa driver (replaced by marvell_nand) - Support ->setup_data_interface() in the GPMI driver - Fix probe error path in several drivers - Remove support for unused hw_syndrome mode in sunxi_nand - Various minor improvements" * tag 'mtd/for-4.17' of git://git.infradead.org/linux-mtd: (89 commits) dt-bindings: fsl-quadspi: Add the example of two SPI NOR mtd: fsl-quadspi: Distinguish the mtd device names mtd: nand: Fix some function description mismatches in core.c mtd: fsl-quadspi: Remove unneeded driver.bus assignment mtd: rawnand: marvell: Rename ->ecc_clk into ->core_clk mtd: rawnand: s3c2410: enhance the probe function error path mtd: rawnand: tango: fix probe function error path mtd: rawnand: sh_flctl: fix the probe function error path mtd: rawnand: omap2: fix the probe function error path mtd: rawnand: mxc: fix probe function error path mtd: rawnand: denali: fix probe function error path mtd: rawnand: davinci: fix probe function error path mtd: rawnand: cafe: fix probe function error path mtd: rawnand: brcmnand: fix probe function error path mtd: rawnand: sunxi: Stop supporting ECC_HW_SYNDROME mode mtd: rawnand: marvell: Fix clock resource by adding a register clock mtd: ftl: Use DIV_ROUND_UP() mtd: Fix some function description mismatches in mtdcore.c mtd: physmap_of: update struct map_info's swap as per map requirement dt-bindings: mtd-physmap: Add endianness supports ...
98 lines
5.1 KiB
ReStructuredText
98 lines
5.1 KiB
ReStructuredText
============================
|
|
Subsystem drivers using GPIO
|
|
============================
|
|
|
|
Note that standard kernel drivers exist for common GPIO tasks and will provide
|
|
the right in-kernel and userspace APIs/ABIs for the job, and that these
|
|
drivers can quite easily interconnect with other kernel subsystems using
|
|
hardware descriptions such as device tree or ACPI:
|
|
|
|
- leds-gpio: drivers/leds/leds-gpio.c will handle LEDs connected to GPIO
|
|
lines, giving you the LED sysfs interface
|
|
|
|
- ledtrig-gpio: drivers/leds/trigger/ledtrig-gpio.c will provide a LED trigger,
|
|
i.e. a LED will turn on/off in response to a GPIO line going high or low
|
|
(and that LED may in turn use the leds-gpio as per above).
|
|
|
|
- gpio-keys: drivers/input/keyboard/gpio_keys.c is used when your GPIO line
|
|
can generate interrupts in response to a key press. Also supports debounce.
|
|
|
|
- gpio-keys-polled: drivers/input/keyboard/gpio_keys_polled.c is used when your
|
|
GPIO line cannot generate interrupts, so it needs to be periodically polled
|
|
by a timer.
|
|
|
|
- gpio_mouse: drivers/input/mouse/gpio_mouse.c is used to provide a mouse with
|
|
up to three buttons by simply using GPIOs and no mouse port. You can cut the
|
|
mouse cable and connect the wires to GPIO lines or solder a mouse connector
|
|
to the lines for a more permanent solution of this type.
|
|
|
|
- gpio-beeper: drivers/input/misc/gpio-beeper.c is used to provide a beep from
|
|
an external speaker connected to a GPIO line.
|
|
|
|
- extcon-gpio: drivers/extcon/extcon-gpio.c is used when you need to read an
|
|
external connector status, such as a headset line for an audio driver or an
|
|
HDMI connector. It will provide a better userspace sysfs interface than GPIO.
|
|
|
|
- restart-gpio: drivers/power/reset/gpio-restart.c is used to restart/reboot
|
|
the system by pulling a GPIO line and will register a restart handler so
|
|
userspace can issue the right system call to restart the system.
|
|
|
|
- poweroff-gpio: drivers/power/reset/gpio-poweroff.c is used to power the
|
|
system down by pulling a GPIO line and will register a pm_power_off()
|
|
callback so that userspace can issue the right system call to power down the
|
|
system.
|
|
|
|
- gpio-gate-clock: drivers/clk/clk-gpio.c is used to control a gated clock
|
|
(off/on) that uses a GPIO, and integrated with the clock subsystem.
|
|
|
|
- i2c-gpio: drivers/i2c/busses/i2c-gpio.c is used to drive an I2C bus
|
|
(two wires, SDA and SCL lines) by hammering (bitbang) two GPIO lines. It will
|
|
appear as any other I2C bus to the system and makes it possible to connect
|
|
drivers for the I2C devices on the bus like any other I2C bus driver.
|
|
|
|
- spi_gpio: drivers/spi/spi-gpio.c is used to drive an SPI bus (variable number
|
|
of wires, at least SCK and optionally MISO, MOSI and chip select lines) using
|
|
GPIO hammering (bitbang). It will appear as any other SPI bus on the system
|
|
and makes it possible to connect drivers for SPI devices on the bus like
|
|
any other SPI bus driver. For example any MMC/SD card can then be connected
|
|
to this SPI by using the mmc_spi host from the MMC/SD card subsystem.
|
|
|
|
- w1-gpio: drivers/w1/masters/w1-gpio.c is used to drive a one-wire bus using
|
|
a GPIO line, integrating with the W1 subsystem and handling devices on
|
|
the bus like any other W1 device.
|
|
|
|
- gpio-fan: drivers/hwmon/gpio-fan.c is used to control a fan for cooling the
|
|
system, connected to a GPIO line (and optionally a GPIO alarm line),
|
|
presenting all the right in-kernel and sysfs interfaces to make your system
|
|
not overheat.
|
|
|
|
- gpio-regulator: drivers/regulator/gpio-regulator.c is used to control a
|
|
regulator providing a certain voltage by pulling a GPIO line, integrating
|
|
with the regulator subsystem and giving you all the right interfaces.
|
|
|
|
- gpio-wdt: drivers/watchdog/gpio_wdt.c is used to provide a watchdog timer
|
|
that will periodically "ping" a hardware connected to a GPIO line by toggling
|
|
it from 1-to-0-to-1. If that hardware does not receive its "ping"
|
|
periodically, it will reset the system.
|
|
|
|
- gpio-nand: drivers/mtd/nand/raw/gpio.c is used to connect a NAND flash chip
|
|
to a set of simple GPIO lines: RDY, NCE, ALE, CLE, NWP. It interacts with the
|
|
NAND flash MTD subsystem and provides chip access and partition parsing like
|
|
any other NAND driving hardware.
|
|
|
|
- ps2-gpio: drivers/input/serio/ps2-gpio.c is used to drive a PS/2 (IBM) serio
|
|
bus, data and clock line, by bit banging two GPIO lines. It will appear as
|
|
any other serio bus to the system and makes it possible to connect drivers
|
|
for e.g. keyboards and other PS/2 protocol based devices.
|
|
|
|
Apart from this there are special GPIO drivers in subsystems like MMC/SD to
|
|
read card detect and write protect GPIO lines, and in the TTY serial subsystem
|
|
to emulate MCTRL (modem control) signals CTS/RTS by using two GPIO lines. The
|
|
MTD NOR flash has add-ons for extra GPIO lines too, though the address bus is
|
|
usually connected directly to the flash.
|
|
|
|
Use those instead of talking directly to the GPIOs using sysfs; they integrate
|
|
with kernel frameworks better than your userspace code could. Needless to say,
|
|
just using the appropriate kernel drivers will simplify and speed up your
|
|
embedded hacking in particular by providing ready-made components.
|