/*********************************************************************** | |
* $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) | |
#define MD_PLN_FAST (MD_PLN | MD_EHS | MD_EZI | MD_ZI) | |
/* 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 | |
#define EMC_OUT (PUP_CLR | SLEWRATE_FAST | FILTER_DISABLE) | |
#define EMC_IO (PUP_CLR | SLEWRATE_FAST | INBUF_ENABLE | FILTER_DISABLE) | |
// Configuration examples | |
#define CLK_OUT (PUP_CLR | SLEWRATE_FAST | FILTER_DISABLE) | |
#define CLK_IN (PUP_CLR | SLEWRATE_FAST | INBUF_ENABLE | FILTER_DISABLE) | |
/* 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 | |
******************************************************************************/ |