#ifndef _SYSTEM_DEF_H_
#define _SYSTEM_DEF_H_
-#include <types.h>
+#include <stdint.h>
#include <system_stub.h>
#include <LPC17xx.h>
#include <bspbase.h>
+#include <hal_gpio_def.h>
+
+#ifndef MACH_LPC17XX
+#define MACH_LPC17XX
+#endif
#ifndef NULL
#define NULL 0
#define CLKSRCSEL_Val 0x00000001 /* XTAL */
#define PLL0_SETUP 1
-#define PLL0CFG_Val 0x0000000B /* 324403200Hz - must be in the range 275HMz-550MHz */
+#define PLL0CFG_Val 0x0000000B /* 288000000Hz - must be in the range 275HMz-550MHz */
#define PLL1_SETUP 0
#define PLL1CFG_Val 0x00000023
-#define CCLKCFG_Val 0x00000003 /* pplclk/(CCLKCFG_Val+1)=81100800Hz */
-#define USBCLKCFG_Val 0x00000000
+#define CCLKCFG_Val 0x00000003 /* ppl0clk/(CCLKCFG_Val+1)=72000000Hz */
+#define USBCLKCFG_Val 0x00000005 /* divide ppl0clk by 6 to 48MHz */
//#define PCLKSEL0_Val 0x00000000 /* all peripherial sysclk/4 */
//#define PCLKSEL1_Val 0x00000000
#define CAN2_RX_BIT BIT(4) // CAN2 RX
#define CAN2_TX_BIT BIT(5) // CAN2 TX
#define LED2_BIT BIT(6) // active low/SSEL1
+#define LED2_PIN PORT_PIN(0,6,PORT_CONF_GPIO_OUT_LO)
+#define SSP1_CS0_BIT BIT(6) // active low/ LMC_GRAD CS
+#define SSP1_CS0_PIN PORT_PIN(0,6,PORT_CONF_GPIO_OUT_HI)
#define SCK1_BIT BIT(7) // clock SSP1 to gradient valves
+#define SCK1_PIN PORT_PIN(0,7,PORT_CONF_FNC_2|PORT_CONF_OUT_LO_NORM)
#define MISO1_BIT BIT(8) // master input
+#define MISO1_PIN PORT_PIN(0,8,PORT_CONF_FNC_2|PORT_CONF_IN_PU)
#define MOSI1_BIT BIT(9) // master output
+#define MOSI1_PIN PORT_PIN(0,9,PORT_CONF_FNC_2|PORT_CONF_OUT_LO_NORM)
#define P0_10_UNUSED_BIT BIT(10) // P0.10 unused (SDA2/TXD2)
#define P0_11_UNUSED_BIT BIT(11) // P0.11 unused (SCL2/RXD2)
#define SCK0_BIT BIT(15) // clock SSP0 to display panel
+#define SCK0_PIN PORT_PIN(0,15,PORT_CONF_FNC_2|PORT_CONF_OUT_LO_NORM)
#define SSEL0_BIT BIT(16) // slave select SSP0
+#define SSP0_CS0_BIT BIT(16) // slave select SSP0 / display chip select
+#define SSP0_CS0_PIN PORT_PIN(0,16,PORT_CONF_GPIO_OUT_HI)
#define MISO0_BIT BIT(17) // master input SSP0
+#define MISO0_PIN PORT_PIN(0,17,PORT_CONF_FNC_2|PORT_CONF_IN_PU)
#define MOSI0_BIT BIT(18) // master output SSP0
+#define MOSI0_PIN PORT_PIN(0,18,PORT_CONF_FNC_2|PORT_CONF_OUT_LO_NORM)
#define SDA1_BIT BIT(19) // I2C data - memory/connector
#define SCL1_BIT BIT(20) // I2C clock
-#define SSP0_CS0_BIT BIT(21) // chip select SSP0 for display
-#define SSP0_CS1_BIT BIT(22) // chip select SSP0/ A/D for display
+#define SSP0_CS1_BIT BIT(21) // chip select 1 SSP0/ A/D for display
+#define SSP0_CS1_PIN PORT_PIN(0,21,PORT_CONF_GPIO_OUT_HI)
+#define SSP0_CS2_BIT BIT(22) // chip select 2 SSP0 for keyboard and LED
+#define SSP0_CS2_PIN PORT_PIN(0,22,PORT_CONF_GPIO_OUT_HI)
#define ADC0_BIT BIT(23) // ADC motor current
+#define ADC0_PIN PORT_PIN(0,23,PORT_CONF_FNC_1|PORT_CONF_DIR_IN)
#define ADC1_BIT BIT(24) // ADC motor current
+#define ADC1_PIN PORT_PIN(0,24,PORT_CONF_FNC_1|PORT_CONF_DIR_IN)
#define ADC2_BIT BIT(25) // ADC motor current
+#define ADC2_PIN PORT_PIN(0,25,PORT_CONF_FNC_1|PORT_CONF_DIR_IN)
#define ADC3_BIT BIT(26) // ADC motor current
+#define ADC3_PIN PORT_PIN(0,26,PORT_CONF_FNC_1|PORT_CONF_DIR_IN)
#define P0_27_UNUSED_BIT BIT(27) // P0.27 unused
#define P0_28_UNUSED_BIT BIT(28) // P0.28 unused
#define USBDPLUS_BIT BIT(29) // P0.29 USBD+
#define P1_14_UNUSED_BIT BIT(14) // P1.14 unused - low output
#define P1_15_UNUSED_BIT BIT(15) // P1.15 unused - low output
#define PWM1_BIT BIT(18) // motor pwm 0 / ADC0
+#define PWM1_PIN PORT_PIN(1,18,PORT_CONF_FNC_2|PORT_CONF_OUT_LO_NORM)
#define BLDC_HAL_A_BIT BIT(19) // motor HAL input A
+#define BLDC_HAL_A_PIN PORT_PIN(1,19,PORT_CONF_GPIO_IN_PU)
#define IRC_A_BIT BIT(20) // motor IRC channel A (MCI0)
#define IRC_M_BIT BIT(21) // motor IRC channel mark (GPIO)
+#define IRC_M_PIN PORT_PIN(1,21,PORT_CONF_FNC_1|PORT_CONF_IN_PU)
#define BLDC_HAL_B_BIT BIT(22) // motor HAL input B
+#define BLDC_HAL_B_PIN PORT_PIN(1,22,PORT_CONF_GPIO_IN_PU)
#define IRC_B_BIT BIT(23) // motor IRC channel B (MCI1)
#define IRC_I_BIT BIT(24) // motor IRC index (MCI2)
#define BLDC_HAL_C_BIT BIT(25) // motor HAL input C
+#define BLDC_HAL_C_PIN PORT_PIN(1,25,PORT_CONF_GPIO_IN_PU)
#define PWM1_EN_BIT BIT(26) // motor pwm 0 enable
+#define PWM1_EN_PIN PORT_PIN(1,26,PORT_CONF_GPIO_OUT_LO)
#define PWM2_EN_BIT BIT(27) // motor pwm 1 enable
+#define PWM2_EN_PIN PORT_PIN(1,27,PORT_CONF_GPIO_OUT_LO)
#define PWM4_EN_BIT BIT(28) // motor pwm 2 enable
+#define PWM4_EN_PIN PORT_PIN(1,28,PORT_CONF_GPIO_OUT_LO)
#define PWM6_EN_BIT BIT(29) // motor pwm 3 enable
+#define PWM6_EN_PIN PORT_PIN(1,29,PORT_CONF_GPIO_OUT_LO)
#define ADC4_BIT BIT(30) // ADC4 tensometer
+#define ADC4_PIN PORT_PIN(1,30,PORT_CONF_FNC_3|PORT_CONF_DIR_IN)
#define ADC5_BIT BIT(31) // ADC5 external input
+#define ADC5_PIN PORT_PIN(1,31,PORT_CONF_FNC_3|PORT_CONF_DIR_IN)
// Port Bit Definitions & Macros: Description - initial conditions
#define TXD1_BIT BIT(0) // P2.0 TXD
#define RXD1_BIT BIT(1) // P2.1 RXD
#define CTS1_BIT BIT(2) // P2.2 CTS connected to RXD1
#define PWM4_BIT BIT(3) // P2.3 motor pwm 2 / ADC2
+#define PWM4_PIN PORT_PIN(2,3,PORT_CONF_FNC_1|PORT_CONF_OUT_LO_NORM)
#define DSR1_BIT BIT(4) // P2.4 DSR connected to TXD1
#define PWM6_BIT BIT(5) // P2.5 motor pwm 3 / ADC3
+#define PWM6_PIN PORT_PIN(2,5,PORT_CONF_FNC_1|PORT_CONF_OUT_LO_NORM)
#define LED1_BIT BIT(6) // P2.6 LED1 - error
+#define LED1_PIN PORT_PIN(2,6,PORT_CONF_GPIO_OUT_LO)
#define RTS1_BIT BIT(7) // P2.7 RTS1 used as DIR1
#define AUX_OUT2_BIT BIT(8) // P2.8 auxual TLL port
+#define AUX_OUT2_PIN PORT_PIN(2,8,PORT_CONF_GPIO_OUT_HI)
#define USB_CONNECT_BIT BIT(9) // P2.9 USB output for soft connect
#define BOOT_BIT BIT(10) // P2.10 Boot input
#define AUX_IN2_BIT BIT(11) // P2.11 auxual TLL port
+#define AUX_IN2_PIN PORT_PIN(2,11,PORT_CONF_GPIO_IN_PU)
#define AUX_OUT4_BIT BIT(12) // P2.12 auxual TLL port
+#define AUX_OUT4_PIN PORT_PIN(2,12,PORT_CONF_GPIO_OUT_HI)
#define ETH_PD_IRQ_BIT BIT(13) // P2.13 power down/int
// Port Bit Definitions & Macros: Description - initial conditions
#define PWM2_BIT BIT(25) // P3.25 motor pwm 1 / ADC1
+#define PWM2_PIN PORT_PIN(3,25,PORT_CONF_FNC_3|PORT_CONF_OUT_LO_NORM)
#define AUX_OUT1_BIT BIT(26) // P3.26 auxual TLL port
+#define AUX_OUT1_PIN PORT_PIN(3,26,PORT_CONF_GPIO_OUT_HI)
// Port Bit Definitions & Macros: Description - initial conditions
#define AUX_OUT3_BIT BIT(28) // P4.28 auxual TLL port / TXD3
+#define AUX_OUT3_PIN PORT_PIN(4,28,PORT_CONF_GPIO_OUT_HI)
#define AUX_IN1_BIT BIT(29) // P4.29 auxual TLL port / RXD3
+#define AUX_IN1_PIN PORT_PIN(4,29,PORT_CONF_GPIO_IN_PU)
#define P0IO_INPUT_BITS (uint32_t) ( \
CAN1_RX_BIT | \
#define kvpb_flush lpcisp_kvpb_flush
#define KVPB_DEFAULT_FLAGS KVPB_DESC_DOUBLE|KVPB_DESC_CHUNKWO
+/***************************************************************************/
+/* USB configuration */
+#define USB_WITH_UDEV_FNC
+#define USB_EP_NUM 32
+#define USB_MAX_PACKET0 64
+#define USB_MAX_PACKET 8
+#define USB_DMA_EP 0x00000000
+
+#define USB_VBUS_PIN_USED 0
+
/***************************************************************************/
/* I2C1 configuration */
#define I2C_DRV_SYSLESS_IRQ I2C1_IRQn