This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
software:driver:linux:adp5520 [22 Sep 2010 22:59] – add back link Robin Getz | resources:tools-software:linux-drivers:multifunction-device:adp5520 [03 Jan 2013 20:42] – external edit | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Driver | + | ====== |
- | More information on the ADP5520 | + | ===== Supported Devices ===== |
+ | |||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | |||
+ | ===== Evaluation Boards ===== | ||
+ | |||
+ | * [[adi> | ||
+ | ===== 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). | ||
+ | In this particular case the ADP5520 | ||
+ | leverages the Linux backlight, LED, GPIO, and input subsystems for its keypad functionality. | ||
+ | |||
+ | < | ||
+ | digraph { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Core ===== | ||
+ | |||
+ | The ADP5520/01 core driver in drivers/mfd provides common services for the | ||
+ | subsystem drivers. These services include register access, control and shared interrupt management. | ||
+ | |||
+ | The core registers/ | ||
+ | via the platform device and driver system. | ||
+ | |||
+ | When a platform driver for one of the subsystems is instantiated, | ||
+ | the core initializes the chip (which may be specified by the platform data). | ||
+ | |||
+ | The ADP5520/01 platform drivers follow the standard driver model convention, where | ||
+ | discovery/ | ||
+ | provide probe() and remove() methods. | ||
+ | |||
+ | ===== Resources ===== | ||
+ | |||
+ | Each peripheral (subsystem device) has a view of the device which is implicitly narrowed to | ||
+ | the specific set of resources that peripheral requires in order to | ||
+ | function correctly. | ||
+ | |||
+ | ===== Configuration ===== | ||
+ | |||
+ | The device driver uses a set of platform data to pass | ||
+ | configurations through to the core and the subsidiary drivers | ||
+ | so that there can be support for multiple ADP5520/01 devices | ||
+ | built into a single kernel image. | ||
===== Software configurable features ===== | ===== Software configurable features ===== | ||
Line 23: | 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 | ||
+ | | [[git.linux.org> | ||
+ | |||
+ | |||
+ | ===== Files ===== | ||
+ | |||
+ | ^ Function ^ File ^ | ||
+ | | MFD-CORE | ||
+ | | include | ||
+ | | BACKLIGHT | [[git.linux.org> | ||
+ | | LED | [[git.linux.org> | ||
+ | | GPIO | [[git.linux.org> | ||
+ | | KEYPAD | ||
====== Example platform device initialization ====== | ====== Example platform device initialization ====== | ||
- | <note important> | + | {{page> |
+ | |||
+ | <WRAP important> | ||
Since Keypad, GPIO and optional LEDs (2, 3) are multiplexed, | Since Keypad, GPIO and optional LEDs (2, 3) are multiplexed, | ||
- | </note> | + | </WRAP> |
^ ADP5520 PIN ^ R3 ^ R2 ^ R1 ^ R0 ^ C0 ^ C1 ^ C2 ^ C3 ^ | ^ ADP5520 PIN ^ R3 ^ R2 ^ R1 ^ R0 ^ C0 ^ C1 ^ C2 ^ C3 ^ | ||
Line 35: | Line 113: | ||
| **LED** | LED3 | | | | | | | LED2 | | | **LED** | LED3 | | | | | | | LED2 | | ||
- | <note tip> | + | <WRAP tip> |
- | Please refer to include/ | + | Please refer to [[git.linux.org> |
- | </note> | + | </WRAP> |
==== Backlight ===== | ==== Backlight ===== | ||
Line 60: | Line 138: | ||
==== ADP5520/ | ==== ADP5520/ | ||
+ | |||
+ | {{page> | ||
<source trunk/ | <source trunk/ | ||
<source trunk/ | <source trunk/ | ||
- | <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 130: | Line 210: | ||
====== Hardware configuration ====== | ====== Hardware configuration ====== | ||
+ | |||
+ | {{: | ||
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/ | During test and driver development we used the ADP5520 Demo Mother/ | ||
+ | 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 138: | Line 221: | ||
^ BF537-STAMP (P10) TWI/I2C header | ^ BF537-STAMP (P10) TWI/I2C header | ||
^ PIN ^ Function ^ PIN/ | ^ PIN ^ Function ^ PIN/ | ||
- | | 2 | (+3.3V) | VCC | | ||
| 5 | SCL | SCL | | | 5 | SCL | SCL | | ||
| 6 | SDA| SDA | | | 6 | SDA| SDA | | ||
Line 174: | Line 256: | ||
root:/ | root:/ | ||
</ | </ | ||
+ | |||
+ | __**For more information on Backlight handling in Linux read:**__ [[git.linux.org> | ||
==== LED ===== | ==== LED ===== | ||
Line 201: | Line 285: | ||
root:/> | root:/> | ||
</ | </ | ||
+ | |||
+ | __**For more information on LEDs handling in Linux read:**__ [[git.linux.org> | ||
==== GPIO ===== | ==== GPIO ===== | ||
Line 221: | Line 307: | ||
[*] Input event device test | [*] Input event device test | ||
</ | </ | ||
+ | |||
+ | __**For more information on GPIO handling in Linux read:**__ [[git.linux.org> | ||
+ | |||
==== Keypad ===== | ==== Keypad ===== | ||
Line 269: | Line 358: | ||
root:/> | root:/> | ||
</ | </ | ||
+ | |||
+ | __**For more information on Input handling in Linux read:**__ [[git.linux.org> | ||
+ | |||
+ | ====== More Information ====== | ||
+ | |||
+ | {{page> | ||
+ |