Port LPC32XX Ethernet and USB OHCI to RTEMS

This commit is contained in:
Kevin Kirspel
2017-01-30 11:58:16 -05:00
committed by Sebastian Huber
parent 803a4950f2
commit 9f2205a3f5
13 changed files with 792 additions and 94 deletions

12
rtemsbsd/include/bsp/nexus-devices.h Normal file → Executable file
View File

@@ -46,6 +46,18 @@
RTEMS_BSD_DRIVER_SMC0(0x4e000000, RVPBXA9_IRQ_ETHERNET);
#elif defined(LIBBSP_ARM_LPC32XX_BSP_H)
#include <bsp/irq.h>
RTEMS_BSD_DRIVER_LPC32XX_PWR;
RTEMS_BSD_DRIVER_LPC32XX_LPE;
RTEMS_BSD_DRIVER_ICSPHY;
RTEMS_BSD_DRIVER_LPC32XX_OHCI;
SYSINIT_DRIVER_REFERENCE(usbus, ohci);
RTEMS_BSD_DRIVER_USB;
RTEMS_BSD_DRIVER_USB_MASS;
#elif defined(LIBBSP_M68K_GENMCF548X_BSP_H)
RTEMS_BSD_DRIVER_FEC;

75
rtemsbsd/include/machine/rtems-bsd-nexus-bus.h Normal file → Executable file
View File

@@ -38,6 +38,7 @@
*
* Devices:
* RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR
* RTEMS_BSD_DRIVER_LPC32XX_PWR
*
* Buses:
* RTEMS_BSD_DRIVER_PC_LEGACY
@@ -46,6 +47,7 @@
* RTEMS_BSD_DRIVER_DWCOTG0
* RTEMS_BSD_DRIVER_DWCOTG0_BASE_ADDR
* RTEMS_BSD_DRIVER_DWCOTG0_IRQ
* RTEMS_BSD_DRIVER_LPC32XX_OHCI
* RTEMS_BSD_DRIVER_DWC_MMC
* RTEMS_BSD_DRIVER_MMC
* RTEMS_BSD_DRIVER_USB
@@ -55,6 +57,7 @@
* RTEMS_BSD_DRIVER_SMC0
* RTEMS_BSD_DRIVER_SMC0_BASE_ADDR
* RTEMS_BSD_DRIVER_SMC0_IRQ
* RTEMS_BSD_DRIVER_LPC32XX_LPE
* RTEMS_BSD_DRIVER_FEC
* RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM0
* RTEMS_BSD_DRIVER_CGEM0_IRQ
@@ -73,6 +76,7 @@
*
* MMI PHY:
* RTEMS_BSD_DRIVER_E1000PHY
* RTEMS_BSD_DRIVER_ICSPHY
* RTEMS_BSD_DRIVER_REPHY
* RTEMS_BSD_DRIVER_MIPHY
*/
@@ -115,6 +119,23 @@ extern "C" {
&zy7_slcr_res[0])
#endif /* RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR */
/*
* LPC32XX Power Control (PWR).
*/
#if !defined(RTEMS_BSD_DRIVER_LPC32XX_PWR)
#define RTEMS_BSD_DRIVER_LPC32XX_PWR \
static const rtems_bsd_device_resource lpc_pwr0_res[] = { \
{ \
.type = RTEMS_BSD_RES_MEMORY, \
.start_request = 0, \
.start_actual = LPC32XX_BASE_SYSCON \
} \
}; \
RTEMS_BSD_DEFINE_NEXUS_DEVICE_ORDERED(pwr, 0, RTEMS_SYSINIT_ORDER_FIRST, \
RTEMS_ARRAY_SIZE(lpc_pwr0_res), \
&lpc_pwr0_res[0])
#endif /* RTEMS_BSD_DRIVER_LPC32XX_PWR */
/**
** Physical Buses
**/
@@ -154,6 +175,31 @@ extern "C" {
&dwcotg0_res[0])
#endif /* RTEMS_BSD_DRIVER_DWCOTG0 */
/*
* LPC32XX OHCI.
*/
#if !defined(RTEMS_BSD_DRIVER_LPC32XX_OHCI)
#define RTEMS_BSD_DRIVER_LPC32XX_OHCI \
static const rtems_bsd_device_resource lpc_ohci0_res[] = { \
{ \
.type = RTEMS_BSD_RES_MEMORY, \
.start_request = 0, \
.start_actual = LPC32XX_BASE_USB \
}, { \
.type = RTEMS_BSD_RES_MEMORY, \
.start_request = 0, \
.start_actual = (unsigned long)(&LPC32XX_I2C_RX) \
}, { \
.type = RTEMS_BSD_RES_IRQ, \
.start_request = 0, \
.start_actual = LPC32XX_IRQ_USB_HOST \
} \
}; \
RTEMS_BSD_DEFINE_NEXUS_DEVICE(ohci, 0, \
RTEMS_ARRAY_SIZE(lpc_ohci0_res), \
&lpc_ohci0_res[0])
#endif /* RTEMS_BSD_DRIVER_LPC32XX_OHCI */
/*
* Designware/Synopsys MMC.
*/
@@ -213,6 +259,27 @@ extern "C" {
&smc0_res[0])
#endif /* RTEMS_BSD_DRIVER_SMC */
/*
* LPC32XX LPE driver
*/
#if !defined(RTEMS_BSD_DRIVER_LPC32XX_LPE)
#define RTEMS_BSD_DRIVER_LPC32XX_LPE \
static const rtems_bsd_device_resource lpc_lpe0_res[] = { \
{ \
.type = RTEMS_BSD_RES_MEMORY, \
.start_request = 0, \
.start_actual = LPC32XX_BASE_ETHERNET \
}, { \
.type = RTEMS_BSD_RES_IRQ, \
.start_request = 0, \
.start_actual = LPC32XX_IRQ_ETHERNET \
} \
}; \
RTEMS_BSD_DEFINE_NEXUS_DEVICE(lpe, 0, \
RTEMS_ARRAY_SIZE(lpc_lpe0_res), \
&lpc_lpe0_res[0])
#endif /* RTEMS_BSD_DRIVER_LPC32XX_LPE */
/*
* Coldfire Fast Ethernet Controller (FEC) driver.
*/
@@ -344,6 +411,14 @@ extern "C" {
SYSINIT_DRIVER_REFERENCE(e1000phy, miibus);
#endif /* RTEMS_BSD_DRIVER_E1000PHY */
/*
* ICS PHY
*/
#if !defined(RTEMS_BSD_DRIVER_ICSPHY)
#define RTEMS_BSD_DRIVER_ICSPHY \
SYSINIT_DRIVER_REFERENCE(icsphy, miibus);
#endif /* RTEMS_BSD_DRIVER_ICSPHY */
/*
* Reltek PHY
*/

2
rtemsbsd/include/rtems/bsd/local/miidevs.h Normal file → Executable file
View File

@@ -318,6 +318,8 @@
#define MII_STR_ICS_1892 "ICS1892 10/100 media interface"
#define MII_MODEL_ICS_1893 0x0004
#define MII_STR_ICS_1893 "ICS1893 10/100 media interface"
#define MII_MODEL_ICS_1893C 0x0005
#define MII_STR_ICS_1893C "ICS1893C 10/100 media interface"
/* Intel Corporation PHYs */
#define MII_MODEL_xxINTEL_I82553 0x0000