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