blob: 420de9437577fcd9b2bcbfb0f6bbfbc37b20ebf8 [file] [log] [blame]
* $Id: scu.h 8389 2011-10-19 13:53:14Z nxp28536 $
* Project: LPC43xx Common
* Description:
* Header file for PINMUX configuration
* Software that is described herein is for illustrative purposes only
* which provides customers with programming information regarding the
* products. This software is supplied "AS IS" without any warranties.
* NXP Semiconductors assumes no responsibility or liability for the
* use of the software, conveys no license or title under any patent,
* copyright, or mask work right to the product. NXP Semiconductors
* reserves the right to make changes in the software without
* notification. NXP Semiconductors also make no representation or
* warranty that such application will be suitable for the specified
* use without further testing or modification.
#ifndef __SCU_H
#define __SCU_H
#define PORT_OFFSET 0x80
#define PIN_OFFSET 0x04
/* Pin modes */
#define MD_PUP (0x0<<3)
#define MD_BUK (0x1<<3)
#define MD_PLN (0x2<<3)
#define MD_PDN (0x3<<3)
#define MD_EHS (0x1<<5)
#define MD_EZI (0x1<<6)
#define MD_ZI (0x1<<7)
#define MD_EHD0 (0x1<<8)
#define MD_EHD1 (0x1<<8)
/* Pin modes
* =========
* The EPUN and EPD bits in the SFS registers allow the selection of weak on-chip
* pull-up or pull-down resistors with a typical value of 50 kOhm for each pin or the
* selection of the repeater mode.
* The possible on-chip resistor configurations are pull-up enabled, pull-down enabled, or no
* pull-up/pull-down. The default value is pull-up enabled.
* The repeater mode enables the pull-up resistor if the pin is at a logic HIGH and enables
* the pull-down resistor if the pin is at a logic LOW. This causes the pin to retain its last
* known state if it is configured as an input and is not driven externally. Repeater mode may
* typically be used to prevent a pin from floating (and potentially using significant power if it
* floats to an indeterminate state) if it is temporarily not driven.
* To be able to receive a digital signal, the input buffer must be enabled through bit EZI in
* the pin configuration registers. By default, the input buffer is disabled.
* For pads that support both a digital and an analog function, the input buffer must be
* disabled before enabling the analog function
* All digital pins support a programmable glitch filter (bit ZIF), which can be switched on or
* off. By default, the glitch filter is on. The glitch filter should be disabled for
* clocking signals with frequencies higher than 30 MHz.
* Normal-drive and high-speed pins support a programmable slew rate (bit EHS) to select
* between lower noise and low speed or higher noise and high speed . The typical
* frequencies supported are 50 MHz/80 MHz for normal-drive pins and 75 MHz/180 MHz for
* high-speed pins.
/* these definitions allow to set or clear single configuration bits */
#define PDN_SET (1 << 3)
#define PDN_CLR (0)
#define PUP_SET (0)
#define PUP_CLR (1 << 4)
/* these definitions allow to configure the port in one specific mode */
/* within scu_pinmux() function */
#define PDN_ENABLE (0x3 << 3) /* pull down */
#define PUP_ENABLE (0x0 << 3) /* pull up */
#define REPEATER_ENABLE (0x1 << 3) /* repeater */
#define PLAIN_ENABLE (0x2 << 3) /* no pull up, no pull down (plain) */
#define SLEWRATE_SLOW (0)
#define SLEWRATE_FAST (1 << 5)
/* enable / disable the input buffer */
#define INBUF_ENABLE (1 << 6)
#define INBUF_DISABLE (0)
/* enable / disable the filter */
#define FILTER_ENABLE (0)
#define FILTER_DISABLE (1 << 7)
/* define the drive strenght */
#define DRIVE_8MA (0x1 << 8) // Drive strength of 8mA
#define DRIVE_14MA (0x1 << 9) // Drive strength of 14mA
#define DRIVE_20MA (0x3 << 8) // Drive strength of 20mA
// Configuration examples for external memory bus pins
// Configuration examples
/* Pin functions */
#define FUNC0 0x0
#define FUNC1 0x1
#define FUNC2 0x2
#define FUNC3 0x3
#define FUNC4 0x4
#define FUNC5 0x5
#define FUNC6 0x6
#define FUNC7 0x7
extern void scu_pinmux(unsigned port, unsigned pin, unsigned mode, unsigned func);
#define LPC_SCU_PIN(po, pi) (*(volatile int *) (LPC_SCU_BASE + ((po) * 0x80) + ((pi) * 0x4)) )
#define LPC_SCU_CLK(c) (*(volatile int *) (LPC_SCU_BASE + 0xC00 + ((c) * 0x4)) )
#endif /* end __SCU_H */
** End Of File