This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
resources:tools-software:linux-drivers:multifunction-device:adp5520 [23 Sep 2010 14:36] hennerich link in ADP5501 product page |
resources:tools-software:linux-drivers:multifunction-device:adp5520 [16 Feb 2015 11:50] (current) Lars-Peter Clausen [Status] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Driver Overview ====== | + | ====== ADP5520/01 MFD Linux Driver ====== |
- | More information on the:\\ | + | ===== Supported Devices ===== |
- | * ADP5520 can be found here [[:adp5520]] | + | |
- | * ADP5501 can be found here [[:adp5501]] | + | |
- | The ADP5520/01 utilizes several Linux device-driver subsystems and provides | + | * [[adi>ADP5520]] |
+ | * [[adi>ADP5501]] | ||
+ | |||
+ | ===== Evaluation Boards ===== | ||
+ | |||
+ | * [[adi>ADP5520-EVALZ]] | ||
+ | ===== Description ===== | ||
+ | |||
+ | The ADP5520/01 driver utilizes several Linux device-driver subsystems and provides | ||
various software interfaces. It is therefore implemented as a multifunction device (MFD). | various software interfaces. It is therefore implemented as a multifunction device (MFD). | ||
In this particular case the ADP5520 backlight driver and I/O expander, concurrently | In this particular case the ADP5520 backlight driver and I/O expander, concurrently | ||
leverages the Linux backlight, LED, GPIO, and input subsystems for its keypad functionality. | leverages the Linux backlight, LED, GPIO, and input subsystems for its keypad functionality. | ||
+ | |||
+ | <graphviz dot 650x200> | ||
+ | digraph { | ||
+ | size="8,5" | ||
+ | ADP5520_MFD_CORE [shape=box] | ||
+ | ADP5520_BACKLIGHT [shape=box] | ||
+ | ADP5520_GPIO[shape=box] | ||
+ | ADP5520_LED [shape=box] | ||
+ | ADP5520_KEYPAD [shape=box] | ||
+ | ADP5520_MFD_CORE -> ADP5520_BACKLIGHT [dir=none]; | ||
+ | ADP5520_MFD_CORE -> ADP5520_LED [dir=none]; | ||
+ | ADP5520_MFD_CORE -> ADP5520_GPIO [dir=none]; | ||
+ | ADP5520_MFD_CORE -> ADP5520_KEYPAD [dir=none]; | ||
+ | } | ||
+ | </graphviz> | ||
===== Core ===== | ===== Core ===== | ||
Line 58: | Line 79: | ||
* Configurable number of dedicated GPIOs, up to 8 GPIOs | * Configurable number of dedicated GPIOs, up to 8 GPIOs | ||
* Configurable Pull-Ups | * Configurable Pull-Ups | ||
+ | |||
+ | |||
+ | |||
+ | ====== Source Code ====== | ||
+ | |||
+ | ===== Status ===== | ||
+ | |||
+ | ^ Source ^ Mainlined? ^ | ||
+ | | [[git.linux.org>drivers/mfd/adp5520.c|git]] | [[git.linux.org>drivers/mfd/adp5520.c|Yes]] | | ||
+ | |||
+ | |||
+ | ===== Files ===== | ||
+ | |||
+ | ^ Function ^ File ^ | ||
+ | | MFD-CORE | [[git.linux.org>drivers/mfd/adp5520.c]] | | ||
+ | | include | [[git.linux.org>include/linux/mfd/adp5520.h]] | | ||
+ | | BACKLIGHT | [[git.linux.org>drivers/video/backlight/adp5520_bl.c]] | | ||
+ | | LED | [[git.linux.org>drivers/led/leds-adp5520.c]] | | ||
+ | | GPIO | [[git.linux.org>drivers/gpio/adp5520-gpio.c]]((ADP5520 only)) | | ||
+ | | KEYPAD | [[git.linux.org>drivers/input/keyboard/adp5520-keys.c]]((ADP5520 only)) | | ||
====== Example platform device initialization ====== | ====== Example platform device initialization ====== | ||
- | <note important> | + | {{page>software/linux/docs/platform_and_bus_model#Platform Data&noheader&firstseconly&noeditbtn}} |
+ | |||
+ | <WRAP important> | ||
Since Keypad, GPIO and optional LEDs (2, 3) are multiplexed, you need to avoid double configurations. Please refer to the table below. | Since Keypad, GPIO and optional LEDs (2, 3) are multiplexed, you need to avoid double configurations. Please refer to the table below. | ||
- | </note> | + | </WRAP> |
^ ADP5520 PIN ^ R3 ^ R2 ^ R1 ^ R0 ^ C0 ^ C1 ^ C2 ^ C3 ^ | ^ ADP5520 PIN ^ R3 ^ R2 ^ R1 ^ R0 ^ C0 ^ C1 ^ C2 ^ C3 ^ | ||
Line 70: | Line 113: | ||
| **LED** | LED3 | | | | | | | LED2 | | | **LED** | LED3 | | | | | | | LED2 | | ||
- | <note tip> | + | <WRAP tip> |
- | Please refer to include/linux/mfd/adp5520.h for detailed configuration defines. | + | Please refer to [[git.linux.org>include/linux/mfd/adp5520.h]] for detailed configuration defines. |
- | </note> | + | </WRAP> |
==== Backlight ===== | ==== Backlight ===== | ||
Line 95: | Line 138: | ||
==== ADP5520/ADP5501 MFD Core Support ===== | ==== ADP5520/ADP5501 MFD Core Support ===== | ||
+ | |||
+ | {{page>software/linux/docs/platform_and_bus_model#Declaring I2C devices&firstseconly&noeditbtn}} | ||
<source trunk/arch/blackfin/mach-bf537/boards/stamp.c:adp5520_pdev_data{} c linux-kernel> | <source trunk/arch/blackfin/mach-bf537/boards/stamp.c:adp5520_pdev_data{} c linux-kernel> | ||
<source trunk/arch/blackfin/mach-bf537/boards/stamp.c:/CONFIG_PMIC_ADP5520/2-/#if/ c linux-kernel> | <source trunk/arch/blackfin/mach-bf537/boards/stamp.c:/CONFIG_PMIC_ADP5520/2-/#if/ c linux-kernel> | ||
- | <note tip> | + | <WRAP tip> |
**ADP5520 IRQ Usage:**\\ | **ADP5520 IRQ Usage:**\\ | ||
If you aren’t planning to utilize the Keypad interface, you don’t need to specify an IRQ in bfin_i2c_board_info. | If you aren’t planning to utilize the Keypad interface, you don’t need to specify an IRQ in bfin_i2c_board_info. | ||
- | </note> | + | </WRAP> |
====== Adding Linux driver support ====== | ====== Adding Linux driver support ====== | ||
Line 165: | Line 210: | ||
====== Hardware configuration ====== | ====== Hardware configuration ====== | ||
+ | |||
+ | {{:software:driver:linux:adp5520_brd.jpg?800|ADP5520 Demo Mother/Daughter Board}} | ||
There is no dedicated Blackfin STAMP evaluation board for the ADP5520. | There is no dedicated Blackfin STAMP evaluation board for the ADP5520. | ||
During test and driver development we used the ADP5520 Demo Mother/Daughter Board. | During test and driver development we used the ADP5520 Demo Mother/Daughter Board. | ||
+ | Connect the ADP5520 Demo Mother to an USB port. | ||
It can be easily wired to the Blackfin STAMP TWI/I2C header. | It can be easily wired to the Blackfin STAMP TWI/I2C header. | ||
Line 173: | Line 221: | ||
^ BF537-STAMP (P10) TWI/I2C header ^^ ADP5520 Daughter Board ^ | ^ BF537-STAMP (P10) TWI/I2C header ^^ ADP5520 Daughter Board ^ | ||
^ PIN ^ Function ^ PIN/Function ^ | ^ PIN ^ Function ^ PIN/Function ^ | ||
- | | 2 | (+3.3V) | VCC | | ||
| 5 | SCL | SCL | | | 5 | SCL | SCL | | ||
| 6 | SDA| SDA | | | 6 | SDA| SDA | | ||
Line 209: | Line 256: | ||
root:/sys/devices/platform/i2c-bfin-twi.0/i2c-adapter/i2c-0/0-0032/backlight/adp5520-backlight> **echo 0 > brightness** | root:/sys/devices/platform/i2c-bfin-twi.0/i2c-adapter/i2c-0/0-0032/backlight/adp5520-backlight> **echo 0 > brightness** | ||
</xterm> | </xterm> | ||
+ | |||
+ | __**For more information on Backlight handling in Linux read:**__ [[git.linux.org>Documentation/ABI/stable/sysfs-class-backlight]] | ||
==== LED ===== | ==== LED ===== | ||
Line 236: | Line 285: | ||
root:/> | root:/> | ||
</xterm> | </xterm> | ||
+ | |||
+ | __**For more information on LEDs handling in Linux read:**__ [[git.linux.org>Documentation/leds-class.txt]] | ||
==== GPIO ===== | ==== GPIO ===== | ||
Line 256: | Line 307: | ||
[*] Input event device test | [*] Input event device test | ||
</xterm> | </xterm> | ||
+ | |||
+ | __**For more information on GPIO handling in Linux read:**__ [[git.linux.org>Documentation/gpio.txt]] | ||
+ | |||
==== Keypad ===== | ==== Keypad ===== | ||
Line 304: | Line 358: | ||
root:/> | root:/> | ||
</xterm> | </xterm> | ||
+ | |||
+ | __**For more information on Input handling in Linux read:**__ [[git.linux.org>Documentation/input/input.txt]] | ||
+ | |||
+ | ====== More Information ====== | ||
+ | |||
+ | {{page>resources/tools-software/linux-drivers/snippets#input_pointers&noheader&firstseconly&noeditbtn}} | ||
+ |