summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2011-09-26 10:08:29 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2011-09-26 10:08:29 +0000
commit7a752161b488ccee4b085a0931a6d9d1816bc178 (patch)
treec14402a10f3e400aba035428a91c2e117e84be89 /c
parent2011-09-27 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-7a752161b488ccee4b085a0931a6d9d1816bc178.tar.bz2
2011-09-27 Sebastian Huber <sebastian.huber@embedded-brains.de>
* make/custom/mpc8309som.cfg, startup/linkcmds.mpc8309som: New file. * Makefile.am, preinstall.am: Reflect changes above. * configure.ac, console/console-config.c, include/bsp.h, include/hwreg_vals.h, include/irq.h, network/network.c, spi/spi_init.c, startup/cpuinit.c: Renamed various BSP options. * make/custom/gen83xx.inc, make/custom/hsc_cm01.cfg, make/custom/mpc8313erdb.cfg, make/custom/mpc8349eamds.cfg: Avoid special linkcmds.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/ChangeLog11
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/Makefile.am1
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/configure.ac63
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/console/console-config.c8
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/include/bsp.h10
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/include/hwreg_vals.h10
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/include/irq.h61
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/make/custom/gen83xx.inc2
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/make/custom/hsc_cm01.cfg2
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8309som.cfg10
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8313erdb.cfg2
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8349eamds.cfg2
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/network/network.c20
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/preinstall.am4
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/spi/spi_init.c40
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/startup/cpuinit.c6
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8309som14
17 files changed, 174 insertions, 92 deletions
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/ChangeLog b/c/src/lib/libbsp/powerpc/gen83xx/ChangeLog
index eade0232f6..68dea0d2b6 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/gen83xx/ChangeLog
@@ -1,3 +1,14 @@
+2011-09-27 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * make/custom/mpc8309som.cfg, startup/linkcmds.mpc8309som: New file.
+ * Makefile.am, preinstall.am: Reflect changes above.
+ * configure.ac, console/console-config.c, include/bsp.h,
+ include/hwreg_vals.h, include/irq.h, network/network.c,
+ spi/spi_init.c, startup/cpuinit.c: Renamed various BSP options.
+ * make/custom/gen83xx.inc, make/custom/hsc_cm01.cfg,
+ make/custom/mpc8313erdb.cfg, make/custom/mpc8349eamds.cfg: Avoid
+ special linkcmds.
+
2011-08-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
* network/network.c: Update due to API changes.
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am b/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am
index 00edd5cdb2..7a06d1d4d1 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am
+++ b/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am
@@ -32,6 +32,7 @@ project_lib_DATA += rtems_crti.$(OBJEXT)
dist_project_lib_DATA += startup/linkcmds \
startup/linkcmds.base \
+ startup/linkcmds.mpc8309som \
startup/linkcmds.mpc8313erdb \
startup/linkcmds.mpc8349eamds \
startup/linkcmds.hsc_cm01
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/configure.ac b/c/src/lib/libbsp/powerpc/gen83xx/configure.ac
index 87551c3160..ee76369778 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/configure.ac
+++ b/c/src/lib/libbsp/powerpc/gen83xx/configure.ac
@@ -21,38 +21,44 @@ RTEMS_BSPOPTS_HELP_DATA_CACHE_ENABLED
RTEMS_BSPOPTS_SET_INSTRUCTION_CACHE_ENABLED([*],[1])
RTEMS_BSPOPTS_HELP_INSTRUCTION_CACHE_ENABLED
-RTEMS_BSPOPTS_SET([MPC8313ERDB],[mpc8313erdb],[1])
-RTEMS_BSPOPTS_HELP([MPC8313ERDB],
-[If defined, use custom settings for the mpc8313erdb BSP.])
-
-RTEMS_BSPOPTS_SET([MPC8349EAMDS],[mpc8349eamds],[1])
-RTEMS_BSPOPTS_HELP([MPC8349EAMDS],
-[If defined, use custom settings for the mpc8349eamds BSP.])
-
-RTEMS_BSPOPTS_SET([HSC_CM01],[hsc_cm01],[1])
-RTEMS_BSPOPTS_HELP([HSC_CM01],
-[If defined, use custom settings for the hsc_cm01 BSP.])
-
-RTEMS_BSPOPTS_SET([MPC8349],[mpc8313erdb],[1])
-RTEMS_BSPOPTS_SET([MPC8349],[mpc8349eamds],[1])
-RTEMS_BSPOPTS_SET([MPC8349],[hsc_cm01],[1])
-RTEMS_BSPOPTS_HELP([MPC8349],
-[If defined, use custom settings for the MPC8349 libcpu family.])
-
-RTEMS_BSPOPTS_SET([BSP_CONSOLE_BAUD],[mpc8313erdb],[115200])
-RTEMS_BSPOPTS_SET([BSP_CONSOLE_BAUD],[*],[9600])
-RTEMS_BSPOPTS_HELP([BSP_CONSOLE_BAUD],[Default baud for console and other serial devices.])
-
-RTEMS_BSPOPTS_SET([BSP_USE_UART_INTERRUPTS],[mpc8313erdb],[1])
+RTEMS_BSPOPTS_SET([MPC83XX_BOARD_MPC8313ERDB],[mpc8313erdb],[1])
+RTEMS_BSPOPTS_HELP([MPC83XX_BOARD_MPC8313ERDB],
+[if defined, then use settings for the MPC8313ERDB board])
+
+RTEMS_BSPOPTS_SET([MPC83XX_BOARD_MPC8349EAMDS],[mpc8349eamds],[1])
+RTEMS_BSPOPTS_HELP([MPC83XX_BOARD_MPC8349EAMDS],
+[if defined, then use settings for the MPC8349EAMDS board])
+
+RTEMS_BSPOPTS_SET([MPC83XX_BOARD_HSC_CM01],[hsc_cm01],[1])
+RTEMS_BSPOPTS_HELP([MPC83XX_BOARD_HSC_CM01],
+[if defined, then use settings for the HSC_CM01 board])
+
+RTEMS_BSPOPTS_SET([MPC83XX_BOARD_MPC8309SOM],[mpc8309som],[1])
+RTEMS_BSPOPTS_HELP([MPC83XX_BOARD_MPC8309SOM],
+[if defined, then use settings for the MPC8309SOM board])
+
+RTEMS_BSPOPTS_SET([MPC83XX_CHIP_TYPE],[mpc8309som],[8309])
+RTEMS_BSPOPTS_SET([MPC83XX_CHIP_TYPE],[mpc8349eamds],[8349])
+RTEMS_BSPOPTS_SET([MPC83XX_CHIP_TYPE],[hsc_cm01],[8349])
+RTEMS_BSPOPTS_SET([MPC83XX_CHIP_TYPE],[*],[8313])
+RTEMS_BSPOPTS_HELP([MPC83XX_CHIP_TYPE],[chip type of the MPC83XX family])
+
+RTEMS_BSPOPTS_SET([BSP_CONSOLE_BAUD],[mpc8349eamds],[9600])
+RTEMS_BSPOPTS_SET([BSP_CONSOLE_BAUD],[hsc_cm01],[9600])
+RTEMS_BSPOPTS_SET([BSP_CONSOLE_BAUD],[*],[115200])
+RTEMS_BSPOPTS_HELP([BSP_CONSOLE_BAUD],[default baud for console and other serial devices])
+
+RTEMS_BSPOPTS_SET([BSP_USE_UART_INTERRUPTS],[mpc8349eamds],[])
+RTEMS_BSPOPTS_SET([BSP_USE_UART_INTERRUPTS],[hsc_cm01],[])
+RTEMS_BSPOPTS_SET([BSP_USE_UART_INTERRUPTS],[*],[1])
RTEMS_BSPOPTS_HELP([BSP_USE_UART_INTERRUPTS],[enable usage of interrupts for the UART modules])
-RTEMS_BSPOPTS_SET([BSP_USE_UART2],[mpc8313erdb],[1])
-RTEMS_BSPOPTS_SET([BSP_USE_UART2],[mpc8349eamds],[1])
-RTEMS_BSPOPTS_SET([BSP_USE_UART2],[hsc_cm01],[1])
-RTEMS_BSPOPTS_HELP([BSP_USE_UART2],[If defined, enables UART2.])
+RTEMS_BSPOPTS_SET([BSP_USE_UART2],[*],[1])
+RTEMS_BSPOPTS_HELP([BSP_USE_UART2],[if defined, enables UART2])
+RTEMS_BSPOPTS_SET([HAS_UBOOT],[mpc8309som],[1])
RTEMS_BSPOPTS_SET([HAS_UBOOT],[mpc8313erdb],[1])
-RTEMS_BSPOPTS_HELP([HAS_UBOOT],[If defined, enables U-Boot support.])
+RTEMS_BSPOPTS_HELP([HAS_UBOOT],[if defined, enables U-Boot support])
RTEMS_BSPOPTS_SET([GEN83XX_ENABLE_INTERRUPT_NESTING],[*],[1])
RTEMS_BSPOPTS_HELP([GEN83XX_ENABLE_INTERRUPT_NESTING],[enable interrupt nesting])
@@ -65,6 +71,7 @@ AC_CONFIG_FILES([Makefile])
RTEMS_BSP_BOOTCARD_OPTIONS
RTEMS_BSP_CLEANUP_OPTIONS(0, 0)
+RTEMS_BSP_LINKCMDS
RTEMS_PPC_EXCEPTIONS
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/console/console-config.c b/c/src/lib/libbsp/powerpc/gen83xx/console/console-config.c
index d338e9207a..da554e56bb 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/console/console-config.c
+++ b/c/src/lib/libbsp/powerpc/gen83xx/console/console-config.c
@@ -80,7 +80,11 @@ console_tbl Console_Port_Tbl [PORT_COUNT] = {
.getData = NULL,
.setData = NULL,
.ulClock = 0,
+#if MPC83XX_CHIP_TYPE / 10 == 830
+ .ulIntVector = BSP_IPIC_IRQ_UART
+#else
.ulIntVector = BSP_IPIC_IRQ_UART1
+#endif
}
#ifdef BSP_USE_UART2
, {
@@ -100,7 +104,11 @@ console_tbl Console_Port_Tbl [PORT_COUNT] = {
.getData = NULL,
.setData = NULL,
.ulClock = 0,
+#if MPC83XX_CHIP_TYPE / 10 == 830
+ .ulIntVector = BSP_IPIC_IRQ_UART
+#else
.ulIntVector = BSP_IPIC_IRQ_UART2
+#endif
}
#endif
};
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/include/bsp.h b/c/src/lib/libbsp/powerpc/gen83xx/include/bsp.h
index a355cea4a3..147abf5f59 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/include/bsp.h
+++ b/c/src/lib/libbsp/powerpc/gen83xx/include/bsp.h
@@ -96,7 +96,7 @@ struct rtems_bsdnet_ifconfig;
extern int BSP_tsec_attach(struct rtems_bsdnet_ifconfig *config,int attaching);
#define RTEMS_BSP_NETWORK_DRIVER_ATTACH BSP_tsec_attach
-#ifdef MPC8313ERDB
+#ifdef MPC83XX_BOARD_MPC8313ERDB
#define RTEMS_BSP_NETWORK_DRIVER_NAME "tsec2"
#define RTEMS_BSP_NETWORK_DRIVER_NAME2 "tsec1"
#else
@@ -104,7 +104,7 @@ extern int BSP_tsec_attach(struct rtems_bsdnet_ifconfig *config,int attaching);
#define RTEMS_BSP_NETWORK_DRIVER_NAME2 "tsec2"
#endif
-#if defined(MPC8349EAMDS)
+#if defined(MPC83XX_BOARD_MPC8349EAMDS)
/*
* i2c EEPROM device name
*/
@@ -116,9 +116,9 @@ extern int BSP_tsec_attach(struct rtems_bsdnet_ifconfig *config,int attaching);
*/
#define RTEMS_BSP_SPI_FLASH_DEVICE_NAME "flash"
#define RTEMS_BSP_SPI_FLASH_DEVICE_PATH "/dev/spi.flash"
-#endif /* defined(MPC8349EAMDS) */
+#endif /* defined(MPC83XX_BOARD_MPC8349EAMDS) */
-#if defined(HSC_CM01)
+#if defined(MPC83XX_BOARD_HSC_CM01)
/*
* i2c EEPROM device name
*/
@@ -130,7 +130,7 @@ extern int BSP_tsec_attach(struct rtems_bsdnet_ifconfig *config,int attaching);
*/
#define RTEMS_BSP_SPI_FRAM_DEVICE_NAME "fram"
#define RTEMS_BSP_SPI_FRAM_DEVICE_PATH "/dev/spi.fram"
-#endif /* defined(HSC_CM01) */
+#endif /* defined(MPC83XX_BOARD_HSC_CM01) */
extern unsigned int BSP_bus_frequency;
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/include/hwreg_vals.h b/c/src/lib/libbsp/powerpc/gen83xx/include/hwreg_vals.h
index ea621a7616..e1feb6f2b0 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/include/hwreg_vals.h
+++ b/c/src/lib/libbsp/powerpc/gen83xx/include/hwreg_vals.h
@@ -29,7 +29,7 @@
/*
* distinguish board characteristics
*/
-#if defined(MPC8349EAMDS)
+#if defined(MPC83XX_BOARD_MPC8349EAMDS)
/*
* for Freescale MPC8349 EAMDS
*/
@@ -69,7 +69,7 @@
RCWHR_ENDIAN_BIG | \
RCWHR_LALE_NORM | \
RCWHR_LDP_PAR)
-#elif defined(HSC_CM01)
+#elif defined(MPC83XX_BOARD_HSC_CM01)
/*
* for JPK HSC_CM01
*/
@@ -119,9 +119,9 @@
#endif
-#if defined(MPC8349EAMDS)
+#if defined(MPC83XX_BOARD_MPC8349EAMDS)
/**************************
- * for Freescale MPC8349EAMDS
+ * for Freescale MPC83XX_BOARD_MPC8349EAMDS
*/
/*
@@ -174,7 +174,7 @@
#define DDR_SDRAM_INTTVL_VAL 0x045B0100
#define DDR_SDRAM_CLK_CNTL_VAL 0x00000000
-#elif defined(HSC_CM01)
+#elif defined(MPC83XX_BOARD_HSC_CM01)
/**************************
* for JPK HSC_CM01
*/
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/include/irq.h b/c/src/lib/libbsp/powerpc/gen83xx/include/irq.h
index ceb1f9aa76..7186d46fc3 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/include/irq.h
+++ b/c/src/lib/libbsp/powerpc/gen83xx/include/irq.h
@@ -24,12 +24,12 @@
#ifndef GEN83xx_IRQ_IRQ_H
#define GEN83xx_IRQ_IRQ_H
-#include <stdbool.h>
-
#include <rtems.h>
#include <rtems/irq.h>
#include <rtems/irq-extension.h>
+#include <bspopts.h>
+
/*
* the following definitions specify the indices used
* to interface the interrupt handler API
@@ -77,59 +77,90 @@ extern "C" {
* index table for the module specific handlers, a few entries are only placeholders
*/
typedef enum {
- BSP_IPIC_IRQ_FIRST = BSP_IPIC_IRQ_LOWEST_OFFSET,
- BSP_IPIC_IRQ_ERROR = BSP_IPIC_IRQ_LOWEST_OFFSET + 0,
- /* reserved irqs 1- 8 */
- BSP_IPIC_IRQ_UART1 = BSP_IPIC_IRQ_LOWEST_OFFSET + 9,
- BSP_IPIC_IRQ_UART2 = BSP_IPIC_IRQ_LOWEST_OFFSET + 10,
- BSP_IPIC_IRQ_SEC = BSP_IPIC_IRQ_LOWEST_OFFSET + 11,
- /* reserved irqs 12-13 */
+ BSP_IPIC_IRQ_FIRST = BSP_IPIC_IRQ_LOWEST_OFFSET,
+ BSP_IPIC_IRQ_ERROR = BSP_IPIC_IRQ_LOWEST_OFFSET + 0,
+#if MPC83XX_CHIP_TYPE / 10 == 830
+ BSP_IPIC_IRQ_DMA1 = BSP_IPIC_IRQ_LOWEST_OFFSET + 3,
+ BSP_IPIC_IRQ_UART = BSP_IPIC_IRQ_LOWEST_OFFSET + 9,
+ BSP_IPIC_IRQ_FLEXCAN = BSP_IPIC_IRQ_LOWEST_OFFSET + 10,
+#else
+ BSP_IPIC_IRQ_UART1 = BSP_IPIC_IRQ_LOWEST_OFFSET + 9,
+ BSP_IPIC_IRQ_UART2 = BSP_IPIC_IRQ_LOWEST_OFFSET + 10,
+ BSP_IPIC_IRQ_SEC = BSP_IPIC_IRQ_LOWEST_OFFSET + 11,
+#endif
BSP_IPIC_IRQ_I2C1 = BSP_IPIC_IRQ_LOWEST_OFFSET + 14,
BSP_IPIC_IRQ_I2C2 = BSP_IPIC_IRQ_LOWEST_OFFSET + 15,
BSP_IPIC_IRQ_SPI = BSP_IPIC_IRQ_LOWEST_OFFSET + 16,
BSP_IPIC_IRQ_IRQ1 = BSP_IPIC_IRQ_LOWEST_OFFSET + 17,
BSP_IPIC_IRQ_IRQ2 = BSP_IPIC_IRQ_LOWEST_OFFSET + 18,
BSP_IPIC_IRQ_IRQ3 = BSP_IPIC_IRQ_LOWEST_OFFSET + 19,
+#if MPC83XX_CHIP_TYPE / 10 == 830
+ BSP_IPIC_IRQ_QUICC_HI = BSP_IPIC_IRQ_LOWEST_OFFSET + 32,
+ BSP_IPIC_IRQ_QUICC_LO = BSP_IPIC_IRQ_LOWEST_OFFSET + 33,
+#else
BSP_IPIC_IRQ_IRQ4 = BSP_IPIC_IRQ_LOWEST_OFFSET + 20,
BSP_IPIC_IRQ_IRQ5 = BSP_IPIC_IRQ_LOWEST_OFFSET + 21,
BSP_IPIC_IRQ_IRQ6 = BSP_IPIC_IRQ_LOWEST_OFFSET + 22,
BSP_IPIC_IRQ_IRQ7 = BSP_IPIC_IRQ_LOWEST_OFFSET + 23,
- /* reserved irqs 24-31 */
BSP_IPIC_IRQ_TSEC1_TX = BSP_IPIC_IRQ_LOWEST_OFFSET + 32,
BSP_IPIC_IRQ_TSEC1_RX = BSP_IPIC_IRQ_LOWEST_OFFSET + 33,
BSP_IPIC_IRQ_TSEC1_ERR = BSP_IPIC_IRQ_LOWEST_OFFSET + 34,
BSP_IPIC_IRQ_TSEC2_TX = BSP_IPIC_IRQ_LOWEST_OFFSET + 35,
BSP_IPIC_IRQ_TSEC2_RX = BSP_IPIC_IRQ_LOWEST_OFFSET + 36,
BSP_IPIC_IRQ_TSEC2_ERR = BSP_IPIC_IRQ_LOWEST_OFFSET + 37,
+#endif
BSP_IPIC_IRQ_USB_DR = BSP_IPIC_IRQ_LOWEST_OFFSET + 38,
+#if MPC83XX_CHIP_TYPE / 10 == 830
+ BSP_IPIC_IRQ_ESDHC = BSP_IPIC_IRQ_LOWEST_OFFSET + 42,
+#else
BSP_IPIC_IRQ_USB_MPH = BSP_IPIC_IRQ_LOWEST_OFFSET + 39,
- /* reserved irqs 40-47 */
+#endif
BSP_IPIC_IRQ_IRQ0 = BSP_IPIC_IRQ_LOWEST_OFFSET + 48,
- /* reserved irqs 49-63 */
BSP_IPIC_IRQ_RTC_SEC = BSP_IPIC_IRQ_LOWEST_OFFSET + 64,
BSP_IPIC_IRQ_PIT = BSP_IPIC_IRQ_LOWEST_OFFSET + 65,
BSP_IPIC_IRQ_PCI1 = BSP_IPIC_IRQ_LOWEST_OFFSET + 66,
+#if MPC83XX_CHIP_TYPE / 10 == 830
+ BSP_IPIC_IRQ_MSIR1 = BSP_IPIC_IRQ_LOWEST_OFFSET + 67,
+#else
BSP_IPIC_IRQ_PCI2 = BSP_IPIC_IRQ_LOWEST_OFFSET + 67,
+#endif
BSP_IPIC_IRQ_RTC_ALR = BSP_IPIC_IRQ_LOWEST_OFFSET + 68,
BSP_IPIC_IRQ_MU = BSP_IPIC_IRQ_LOWEST_OFFSET + 69,
BSP_IPIC_IRQ_SBA = BSP_IPIC_IRQ_LOWEST_OFFSET + 70,
BSP_IPIC_IRQ_DMA = BSP_IPIC_IRQ_LOWEST_OFFSET + 71,
BSP_IPIC_IRQ_GTM4 = BSP_IPIC_IRQ_LOWEST_OFFSET + 72,
BSP_IPIC_IRQ_GTM8 = BSP_IPIC_IRQ_LOWEST_OFFSET + 73,
+#if MPC83XX_CHIP_TYPE / 10 == 830
+ BSP_IPIC_IRQ_QUICC_PORTS = BSP_IPIC_IRQ_LOWEST_OFFSET + 74,
+ BSP_IPIC_IRQ_GPIO = BSP_IPIC_IRQ_LOWEST_OFFSET + 75,
+#else
BSP_IPIC_IRQ_GPIO1 = BSP_IPIC_IRQ_LOWEST_OFFSET + 74,
BSP_IPIC_IRQ_GPIO2 = BSP_IPIC_IRQ_LOWEST_OFFSET + 75,
+#endif
BSP_IPIC_IRQ_DDR = BSP_IPIC_IRQ_LOWEST_OFFSET + 76,
BSP_IPIC_IRQ_LBC = BSP_IPIC_IRQ_LOWEST_OFFSET + 77,
BSP_IPIC_IRQ_GTM2 = BSP_IPIC_IRQ_LOWEST_OFFSET + 78,
BSP_IPIC_IRQ_GTM6 = BSP_IPIC_IRQ_LOWEST_OFFSET + 79,
BSP_IPIC_IRQ_PMC = BSP_IPIC_IRQ_LOWEST_OFFSET + 80,
- /* reserved irqs 81-83 */
+#if MPC83XX_CHIP_TYPE / 10 == 830
+ BSP_IPIC_IRQ_MSIR2 = BSP_IPIC_IRQ_LOWEST_OFFSET + 81,
+ BSP_IPIC_IRQ_MSIR3 = BSP_IPIC_IRQ_LOWEST_OFFSET + 82,
+#else
BSP_IPIC_IRQ_GTM3 = BSP_IPIC_IRQ_LOWEST_OFFSET + 84,
BSP_IPIC_IRQ_GTM7 = BSP_IPIC_IRQ_LOWEST_OFFSET + 85,
- /* reserved irqs 86-89 */
+#endif
+#if MPC83XX_CHIP_TYPE / 10 == 830
+ BSP_IPIC_IRQ_MSIR4 = BSP_IPIC_IRQ_LOWEST_OFFSET + 86,
+ BSP_IPIC_IRQ_MSIR5 = BSP_IPIC_IRQ_LOWEST_OFFSET + 87,
+ BSP_IPIC_IRQ_MSIR6 = BSP_IPIC_IRQ_LOWEST_OFFSET + 88,
+ BSP_IPIC_IRQ_MSIR7 = BSP_IPIC_IRQ_LOWEST_OFFSET + 89,
+#endif
BSP_IPIC_IRQ_GTM1 = BSP_IPIC_IRQ_LOWEST_OFFSET + 90,
BSP_IPIC_IRQ_GTM5 = BSP_IPIC_IRQ_LOWEST_OFFSET + 91,
- /* reserved irqs 92-127 */
+#if MPC83XX_CHIP_TYPE / 10 == 830
+ BSP_IPIC_IRQ_DMA1_ERR = BSP_IPIC_IRQ_LOWEST_OFFSET + 94,
+ BSP_IPIC_IRQ_DPTC = BSP_IPIC_IRQ_LOWEST_OFFSET + 95,
+#endif
BSP_IPIC_IRQ_LAST = BSP_IPIC_IRQ_MAX_OFFSET,
} rtems_irq_symbolic_name;
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/make/custom/gen83xx.inc b/c/src/lib/libbsp/powerpc/gen83xx/make/custom/gen83xx.inc
index b8d6889bcc..bb704af5ba 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/make/custom/gen83xx.inc
+++ b/c/src/lib/libbsp/powerpc/gen83xx/make/custom/gen83xx.inc
@@ -20,5 +20,3 @@ CPU_CFLAGS = -mcpu=603e -meabi -msdata -fno-common -mstrict-align
# optimize flag: typically -O2
CFLAGS_OPTIMIZE_V = -O2 -g -fno-keep-inline-functions
-
-LDFLAGS += -qnolinkcmds -T $(RTEMS_LINKCMDS)
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/make/custom/hsc_cm01.cfg b/c/src/lib/libbsp/powerpc/gen83xx/make/custom/hsc_cm01.cfg
index b18ceba454..81205d8e9d 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/make/custom/hsc_cm01.cfg
+++ b/c/src/lib/libbsp/powerpc/gen83xx/make/custom/hsc_cm01.cfg
@@ -9,6 +9,4 @@
# parameters differ.
#
-RTEMS_LINKCMDS=linkcmds.hsc_cm01
-
include $(RTEMS_ROOT)/make/custom/gen83xx.inc
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8309som.cfg b/c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8309som.cfg
new file mode 100644
index 0000000000..be25fcd4fb
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8309som.cfg
@@ -0,0 +1,10 @@
+##
+#
+# @file
+#
+# @ingroup mpc83xx_config
+#
+# @brief Configuration file for the MPC8309 System on Module.
+#
+
+include $(RTEMS_ROOT)/make/custom/gen83xx.inc
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8313erdb.cfg b/c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8313erdb.cfg
index b69c6bb601..4a6331e8c4 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8313erdb.cfg
+++ b/c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8313erdb.cfg
@@ -7,6 +7,4 @@
# @brief Configuration file for the MPC8313E Reference Design Board.
#
-RTEMS_LINKCMDS=linkcmds.mpc8313erdb
-
include $(RTEMS_ROOT)/make/custom/gen83xx.inc
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8349eamds.cfg b/c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8349eamds.cfg
index 92d695a13a..d75f8e8667 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8349eamds.cfg
+++ b/c/src/lib/libbsp/powerpc/gen83xx/make/custom/mpc8349eamds.cfg
@@ -9,6 +9,4 @@
# parameters differ.
#
-RTEMS_LINKCMDS=linkcmds.mpc8349eamds
-
include $(RTEMS_ROOT)/make/custom/gen83xx.inc
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/network/network.c b/c/src/lib/libbsp/powerpc/gen83xx/network/network.c
index aa76cdbd93..fa78fd7edb 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/network/network.c
+++ b/c/src/lib/libbsp/powerpc/gen83xx/network/network.c
@@ -32,18 +32,20 @@
#include <string.h>
#include <libcpu/spr.h>
+#if MPC83XX_CHIP_TYPE / 10 != 830
+
#define TSEC_IFMODE_RGMII 0
#define TSEC_IFMODE_GMII 1
-#if defined( MPC8313ERDB)
+#if defined( MPC83XX_BOARD_MPC8313ERDB)
#define TSEC_IFMODE TSEC_IFMODE_RGMII
-#elif defined( MPC8349EAMDS)
+#elif defined( MPC83XX_BOARD_MPC8349EAMDS)
#define TSEC_IFMODE TSEC_IFMODE_GMII
-#elif defined( HSC_CM01)
+#elif defined( MPC83XX_BOARD_HSC_CM01)
#define TSEC_IFMODE TSEC_IFMODE_RGMII
@@ -100,7 +102,7 @@ int BSP_tsec_attach
if (attaching) {
#if (TSEC_IFMODE==TSEC_IFMODE_GMII)
-#if !defined(HSC_CM01)
+#if !defined(MPC83XX_BOARD_HSC_CM01)
/*
* do not change system I/O configuration registers on HSC board
@@ -132,7 +134,7 @@ int BSP_tsec_attach
mpc83xx.gpio[0].gpdir = ((mpc83xx.gpio[0].gpdir & ~0x000FFFFF)
| 0x00087881);
}
-#endif /* !defined(HSC_CM01) */
+#endif /* !defined(MPC83XX_BOARD_HSC_CM01) */
#endif
#if (TSEC_IFMODE==TSEC_IFMODE_RGMII)
@@ -232,16 +234,16 @@ int BSP_tsec_attach
* XXX: Although most hardware builders will assign the PHY addresses
* like this, this should be more configurable
*/
-#ifdef MPC8313ERDB
+#ifdef MPC83XX_BOARD_MPC8313ERDB
if (unitNumber == 2) {
tsec_cfg.phy_default = 4;
} else {
/* TODO */
return 0;
}
-#else /* MPC8313ERDB */
+#else /* MPC83XX_BOARD_MPC8313ERDB */
tsec_cfg.phy_default = unitNumber-1;
-#endif /* MPC8313ERDB */
+#endif /* MPC83XX_BOARD_MPC8313ERDB */
tsec_cfg.unit_number = unitNumber;
tsec_cfg.unit_name = unitName;
@@ -251,3 +253,5 @@ int BSP_tsec_attach
*/
return tsec_driver_attach_detach(config, attaching);
}
+
+#endif /* MPC83XX_CHIP_TYPE / 10 != 830 */
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/preinstall.am b/c/src/lib/libbsp/powerpc/gen83xx/preinstall.am
index 31438ab737..9422ee5349 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/preinstall.am
+++ b/c/src/lib/libbsp/powerpc/gen83xx/preinstall.am
@@ -77,6 +77,10 @@ $(PROJECT_LIB)/linkcmds.base: startup/linkcmds.base $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.base
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.base
+$(PROJECT_LIB)/linkcmds.mpc8309som: startup/linkcmds.mpc8309som $(PROJECT_LIB)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.mpc8309som
+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.mpc8309som
+
$(PROJECT_LIB)/linkcmds.mpc8313erdb: startup/linkcmds.mpc8313erdb $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.mpc8313erdb
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.mpc8313erdb
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/spi/spi_init.c b/c/src/lib/libbsp/powerpc/gen83xx/spi/spi_init.c
index c59bd73f98..c0df52ee25 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/spi/spi_init.c
+++ b/c/src/lib/libbsp/powerpc/gen83xx/spi/spi_init.c
@@ -26,15 +26,15 @@
#include <bsp/irq.h>
#include <bsp.h>
-#if defined( MPC8313ERDB)
+#if defined( MPC83XX_BOARD_MPC8313ERDB)
#include <libchip/spi-sd-card.h>
-#elif defined( MPC8349EAMDS)
+#elif defined( MPC83XX_BOARD_MPC8349EAMDS)
#include <libchip/spi-flash-m25p40.h>
-#elif defined( HSC_CM01)
+#elif defined( MPC83XX_BOARD_HSC_CM01)
#include <libchip/spi-fram-fm25l256.h>
@@ -69,7 +69,7 @@ static rtems_status_code bsp_spi_sel_addr
\*=========================================================================*/
{
-#if defined( MPC8313ERDB)
+#if defined( MPC83XX_BOARD_MPC8313ERDB)
/* Check address */
if (addr > 0) {
@@ -79,7 +79,7 @@ static rtems_status_code bsp_spi_sel_addr
/* SCS (active low) */
mpc83xx.gpio [0].gpdat &= ~0x20000000;
-#elif defined( MPC8349EAMDS)
+#elif defined( MPC83XX_BOARD_MPC8349EAMDS)
/*
* check device address for valid range
@@ -94,7 +94,7 @@ static rtems_status_code bsp_spi_sel_addr
*/
mpc83xx.gpio[0].gpdat &= ~(1 << (31- 0));
-#elif defined( HSC_CM01)
+#elif defined( MPC83XX_BOARD_HSC_CM01)
/*
* check device address for valid range
@@ -143,12 +143,12 @@ static rtems_status_code bsp_spi_send_start_dummy
\*=========================================================================*/
{
-#if defined( MPC8313ERDB)
+#if defined( MPC83XX_BOARD_MPC8313ERDB)
/* SCS (inactive high) */
mpc83xx.gpio [0].gpdat |= 0x20000000;
-#elif defined( MPC8349EAMDS)
+#elif defined( MPC83XX_BOARD_MPC8349EAMDS)
/*
* GPIO1[0] is nSEL_SPI for M25P40
@@ -156,7 +156,7 @@ static rtems_status_code bsp_spi_send_start_dummy
*/
mpc83xx.gpio[0].gpdat |= (1 << (31- 0));
-#elif defined( HSC_CM01)
+#elif defined( MPC83XX_BOARD_HSC_CM01)
/*
* GPIO1[27] is high-active strobe
@@ -191,12 +191,12 @@ static rtems_status_code bsp_spi_send_stop
printk("bsp_spi_send_stop called... ");
#endif
-#if defined( MPC8313ERDB)
+#if defined( MPC83XX_BOARD_MPC8313ERDB)
/* SCS (inactive high) */
mpc83xx.gpio [0].gpdat |= 0x20000000;
-#elif defined( MPC8349EAMDS)
+#elif defined( MPC83XX_BOARD_MPC8349EAMDS)
/*
* deselect given device
@@ -205,7 +205,7 @@ static rtems_status_code bsp_spi_send_stop
*/
mpc83xx.gpio[0].gpdat |= (1 << (31- 0));
-#elif defined( HSC_CM01)
+#elif defined( MPC83XX_BOARD_HSC_CM01)
/*
* deselect device
@@ -248,7 +248,7 @@ static mpc83xx_spi_desc_t bsp_spi_bus_desc = {
}
};
-#ifdef MPC8313ERDB
+#ifdef MPC83XX_BOARD_MPC8313ERDB
#include <libchip/spi-sd-card.h>
@@ -274,7 +274,7 @@ sd_card_driver_entry sd_card_driver_table [SD_CARD_NUMBER] = {
}
};
-#endif /* MPC8313ERDB */
+#endif /* MPC83XX_BOARD_MPC8313ERDB */
/*=========================================================================*\
@@ -312,7 +312,7 @@ rtems_status_code bsp_register_spi
* init port pins used to address/select SPI devices
*/
-#if defined( MPC8313ERDB)
+#if defined( MPC83XX_BOARD_MPC8313ERDB)
/*
* Configured as master (direct connection to SD card)
@@ -336,7 +336,7 @@ rtems_status_code bsp_register_spi
/* Open Drain */
/* mpc83xx.gpio [0].gpdr |= 0x0000000f; */
-#elif defined( MPC8349EAMDS)
+#elif defined( MPC83XX_BOARD_MPC8349EAMDS)
/*
* GPIO1[0] is nSEL_SPI for M25P40
@@ -346,7 +346,7 @@ rtems_status_code bsp_register_spi
mpc83xx.gpio[0].gpdir |= (1 << (31- 0));
mpc83xx.gpio[0].gpdr &= ~(1 << (31- 0));
-#elif defined( HSC_CM01)
+#elif defined( MPC83XX_BOARD_HSC_CM01)
/*
* GPIO1[24] is SPI_A0
@@ -376,7 +376,7 @@ rtems_status_code bsp_register_spi
}
spi_busno = (unsigned) ret_code;
-#if defined( MPC8313ERDB)
+#if defined( MPC83XX_BOARD_MPC8313ERDB)
/* Register SD Card driver */
sd_card_driver_table [0].bus = spi_busno;
@@ -385,7 +385,7 @@ rtems_status_code bsp_register_spi
return sc;
}
-#elif defined( MPC8349EAMDS)
+#elif defined( MPC83XX_BOARD_MPC8349EAMDS)
/*
* register M25P40 Flash
@@ -393,7 +393,7 @@ rtems_status_code bsp_register_spi
ret_code = rtems_libi2c_register_drv(RTEMS_BSP_SPI_FLASH_DEVICE_NAME,
spi_flash_m25p40_rw_driver_descriptor,
spi_busno,0x00);
-#elif defined(HSC_CM01)
+#elif defined(MPC83XX_BOARD_HSC_CM01)
/*
* register FM25L256 FRAM
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/cpuinit.c b/c/src/lib/libbsp/powerpc/gen83xx/startup/cpuinit.c
index bfcd649196..873c76da33 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/startup/cpuinit.c
+++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/cpuinit.c
@@ -260,7 +260,7 @@ void cpu_init( void)
);
SET_DBAT( 2, dbat.batu, dbat.batl);
-#if defined(HSC_CM01)
+#if defined(MPC83XX_BOARD_HSC_CM01)
calc_dbat_regvals(
&dbat,
FPGA_START,
@@ -274,7 +274,7 @@ void cpu_init( void)
SET_DBAT(3,dbat.batu,dbat.batl);
#endif
-#ifdef MPC8313ERDB
+#ifdef MPC83XX_BOARD_MPC8313ERDB
/* Enhanced Local Bus Controller (eLBC) */
calc_dbat_regvals(
&dbat,
@@ -287,7 +287,7 @@ void cpu_init( void)
BPP_RW
);
SET_DBAT( 3, dbat.batu, dbat.batl);
-#endif /* MPC8313ERDB */
+#endif /* MPC83XX_BOARD_MPC8313ERDB */
/* Read MSR */
msr = ppc_machine_state_register();
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8309som b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8309som
new file mode 100644
index 0000000000..6f5e80137b
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.mpc8309som
@@ -0,0 +1,14 @@
+/**
+ * @file
+ *
+ * MPC8309 System on Module.
+ */
+
+MEMORY {
+ RAM : ORIGIN = 0x0, LENGTH = 256M
+ ROM : ORIGIN = 0xfe000000, LENGTH = 8M
+ MPC83XX_REGS : ORIGIN = 0xe0000000, LENGTH = 256k
+ NIRVANA : ORIGIN = 0x0, LENGTH = 0
+}
+
+INCLUDE linkcmds.base