2. Revisions
DATE AUTHOUR DESCRIPTION
2012/12/03 Jiahe Jou Draft.
3. Outline
● Overview
● Pad Configuration
● Off Mode Control
● Wake Up Detection
● Power Optimization
● Configuration How To
● Case Study - Talos7
4. Overview
● Configure pads to desired values according to device configuration
● Two sets of 32-bit pad configuration register
○ CORE power domain
○ WKUP power domain
● Each register has two pads with five fields functional bits
○ MUXMODE (3 bits)
○ PULL (2 bits)
○ INPUT ENABLE (1 bits)
○ OFF MODE VALUE (5 bits)
○ WAKE UP (2 bits)
9. Pad Configuration
● Off mode value
○ OFFMODEENABLE, off mode override control, 1 enable 0 disable
○ OFFMODEOUTENABLE, off mode output enable, 0 enable 1 disable
○ OFFMODEOUTVALUE, off mode output value
○ OFFMODEPULLUDENABLE, off mode pull up/down enable
○ OFFMODEPULLTYPESELECT, off mode pull type select
● Wake Up
○ WAKEUPENABLE, wake up detect enable
○ WAKEUPEVENT, wake up event status
13. Power Optimization
● Pin types
● Avoid unconnected or incorrectly pulled pins
○ For input, use pull up/down when possible
○ For output, avoid pull conflicts
○ For bi-direction, reconfigure the pin as an output driving 0
15. Pad Configuration
● Avoid unconnected pin (1)
○ If not driven externally, pull up/down is required
● Avoid pull conflict (2)
○ Prevent different pulls on the same line
● Avoid logic conflict (3)
○ if no external device drive the line, set the value as 0
○ else same value must
18. Configuration How To
● Boot-loader
struct pad_conf_entry {
u16 offset;
u16 val;
};
● Kernel
/* omap_mux_init_gpio - initialize a signal based on the GPIO number */
int omap_mux_init_gpio(int gpio, int val);
/* omap_mux_init_signal - initialize a signal based on the signal name */
int omap_mux_init_signal(const char *muxname, int val);
19. Configuration How To
● Kernel
/* Centralized control for pad init, suspend and shutdown */
struct omap_pad_state_description {
char *init_mux_name;
u16 init_config;
char *suspend_mux_name;
u16 suspend_config;
char *shutdown_mux_name;
u16 shutdown_config;
u8 flags;
};