No subject
Fri Nov 6 13:01:15 EST 2009
/*
* Table that determines the low power modes outputs, with actual settings
* used in parentheses for don't-care values. Except for the float output,
* the configured driven and pulled levels match, so if there is a need for
* non-LPM pulled output, the same configuration could probably be used.
*
* Output value sleep_oe_n sleep_data pullup_en pulldown_en pull_sel
* (bit 7) (bit 8) (bit 14) (bit 13) (bit 15)
*
* Input 0 X(0) X(0) X(0) 0
* Drive 0 0 0 0 X(1) 0
* Drive 1 0 1 X(1) 0 0
* Pull hi (1) 1 X(1) 1 0 0
* Pull lo (0) 1 X(0) 0 1 0
* Z (float) 1 X(0) 0 0 0
*/
#define MFPR_LPM_INPUT (0)
#define MFPR_LPM_DRIVE_LOW (MFPR_SLEEP_DATA(0) | MFPR_PULLDOWN_EN)
#define MFPR_LPM_DRIVE_HIGH (MFPR_SLEEP_DATA(1) | MFPR_PULLUP_EN)
#define MFPR_LPM_PULL_LOW (MFPR_LPM_DRIVE_LOW | MFPR_SLEEP_OE_N)
#define MFPR_LPM_PULL_HIGH (MFPR_LPM_DRIVE_HIGH | MFPR_SLEEP_OE_N)
#define MFPR_LPM_FLOAT (MFPR_SLEEP_OE_N)
#define MFPR_LPM_MASK (0xe080)
When a pin's LPM is configured as MFPR_LPM_INPUT, the MFPR will, upon
entry to any low power mode, contain all zeros in the bits listed
above. If my understanding is correct, this will cause such pins to
drive low in any low power mode. That's not always a good thing for
an input pin to do. This definition is misleading and should probably be
removed.
The default MFP configuration includes MFP_LPM_DEFAULT, which (via
mfpr_lpm[]) selects MFPR_LPM_INPUT. Is this really a desired "default"?
I think MFPR_LPM_DRIVE_LOW is a safer bet, in case the pin is externally
driven high.
-Dave
More information about the linux-arm-kernel
mailing list