PERFORCE change 162580 for review
Sylvestre Gallon
syl at FreeBSD.org
Sat May 23 16:26:48 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=162580
Change 162580 by syl at syl_rincewind on 2009/05/23 16:26:23
Implementation of SoC code for at91rm9200. Now at91.c is SoC independant.
All the std.boarname are been updated to say that they use a at91rm9200 cpu.
The AIC regs are moved from at91rm92reg.h to at91_aicreg.h.
Affected files ...
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/at91.c#3 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/at91_aicreg.h#1 add
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/at91rm92reg.h#2 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/at91var.h#2 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/board_at91rm9261ek.c#2 delete
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/board_at91sam9261ek.c#1 add
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/files.at91#2 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/soc_at91rm9200.c#2 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/soc_at91sam9261.c#2 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/std.bwct#2 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/std.hl200#2 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/std.kb920x#2 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/std.tsc4370#2 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/conf/BWCT#3 edit
.. //depot/projects/soc2009/syl_usb/src/sys/conf/options.arm#2 edit
Differences ...
==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/at91.c#3 (text) ====
@@ -42,16 +42,14 @@
#define _ARM32_BUS_DMA_PRIVATE
#include <machine/bus.h>
#include <machine/intr.h>
+#include <arm/at91/at91var.h>
+#include <arm/at91/at91_aicreg.h>
-#include <arm/at91/at91rm92reg.h>
-#include <arm/at91/at91var.h>
static struct at91_softc *at91_softc;
static void at91_eoi(void *);
-uint32_t at91_master_clock = AT91C_MASTER_CLOCK;
-
static int
at91_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
bus_space_handle_t *bshp)
@@ -269,163 +267,6 @@
bus_set_resource(kid, SYS_RES_MEMORY, 0, addr, size);
}
-struct cpu_devs
-{
- const char *name;
- int unit;
- bus_addr_t mem_base;
- bus_size_t mem_len;
- int irq0;
- int irq1;
- int irq2;
-};
-
-struct cpu_devs at91rm9200_devs[] =
-{
- // All the "system" devices
- {
- "at91_st", 0,
- AT91RM92_BASE + AT91RM92_ST_BASE, AT91RM92_ST_SIZE,
- AT91RM92_IRQ_SYSTEM
- },
- {
- "at91_pio", 0,
- AT91RM92_BASE + AT91RM92_PIOA_BASE, AT91RM92_PIO_SIZE,
- AT91RM92_IRQ_SYSTEM
- },
- {
- "at91_pio", 1,
- AT91RM92_BASE + AT91RM92_PIOB_BASE, AT91RM92_PIO_SIZE,
- AT91RM92_IRQ_SYSTEM
- },
- {
- "at91_pio", 2,
- AT91RM92_BASE + AT91RM92_PIOC_BASE, AT91RM92_PIO_SIZE,
- AT91RM92_IRQ_SYSTEM
- },
- {
- "at91_pio", 3,
- AT91RM92_BASE + AT91RM92_PIOD_BASE, AT91RM92_PIO_SIZE,
- AT91RM92_IRQ_SYSTEM
- },
- {
- "at91_pmc", 0,
- AT91RM92_BASE + AT91RM92_PMC_BASE, AT91RM92_PMC_SIZE,
- AT91RM92_IRQ_SYSTEM
- },
- {
- "at91_aic", 0,
- AT91RM92_BASE + AT91RM92_AIC_BASE, AT91RM92_AIC_SIZE,
- 0 // Interrupt controller has no interrupts!
- },
- {
- "at91_rtc", 0,
- AT91RM92_BASE + AT91RM92_RTC_BASE, AT91RM92_RTC_SIZE,
- AT91RM92_IRQ_SYSTEM
- },
- {
- "at91_mc", 0,
- AT91RM92_BASE + AT91RM92_MC_BASE, AT91RM92_MC_SIZE,
- AT91RM92_IRQ_SYSTEM
- },
-
- // All other devices
- {
- "at91_tc", 0,
- AT91RM92_BASE + AT91RM92_TC0_BASE, AT91RM92_TC_SIZE,
- AT91RM92_IRQ_TC0, AT91RM92_IRQ_TC1, AT91RM92_IRQ_TC2
- },
- {
- "at91_tc", 1,
- AT91RM92_BASE + AT91RM92_TC1_BASE, AT91RM92_TC_SIZE,
- AT91RM92_IRQ_TC3, AT91RM92_IRQ_TC4, AT91RM92_IRQ_TC5
- },
- {
- "at91_udp", 0,
- AT91RM92_BASE + AT91RM92_UDP_BASE, AT91RM92_UDP_SIZE,
- AT91RM92_IRQ_UDP, AT91RM92_IRQ_PIOB
- },
- {
- "at91_mci", 0,
- AT91RM92_BASE + AT91RM92_MCI_BASE, AT91RM92_MCI_SIZE,
- AT91RM92_IRQ_MCI
- },
- {
- "at91_twi", 0,
- AT91RM92_BASE + AT91RM92_TWI_BASE, AT91RM92_TWI_SIZE,
- AT91RM92_IRQ_TWI
- },
- {
- "ate", 0,
- AT91RM92_BASE + AT91RM92_EMAC_BASE, AT91RM92_EMAC_SIZE,
- AT91RM92_IRQ_EMAC
- },
-#ifndef SKYEYE_WORKAROUNDS
- {
- "uart", 0,
- AT91RM92_BASE + AT91RM92_DBGU_BASE, AT91RM92_DBGU_SIZE,
- AT91RM92_IRQ_SYSTEM
- },
- {
- "uart", 1,
- AT91RM92_BASE + AT91RM92_USART0_BASE, AT91RM92_USART_SIZE,
- AT91RM92_IRQ_USART0
- },
- {
- "uart", 2,
- AT91RM92_BASE + AT91RM92_USART1_BASE, AT91RM92_USART_SIZE,
- AT91RM92_IRQ_USART1
- },
- {
- "uart", 3,
- AT91RM92_BASE + AT91RM92_USART2_BASE, AT91RM92_USART_SIZE,
- AT91RM92_IRQ_USART2
- },
- {
- "uart", 4,
- AT91RM92_BASE + AT91RM92_USART3_BASE, AT91RM92_USART_SIZE,
- AT91RM92_IRQ_USART3
- },
-#else
- {
- "uart", 0,
- AT91RM92_BASE + AT91RM92_USART0_BASE, AT91RM92_USART_SIZE,
- AT91RM92_IRQ_USART0
- },
-#endif
- {
- "at91_ssc", 0,
- AT91RM92_BASE + AT91RM92_SSC0_BASE, AT91RM92_SSC_SIZE,
- AT91RM92_IRQ_SSC0
- },
- {
- "at91_ssc", 1,
- AT91RM92_BASE + AT91RM92_SSC1_BASE, AT91RM92_SSC_SIZE,
- AT91RM92_IRQ_SSC1
- },
- {
- "at91_ssc", 2,
- AT91RM92_BASE + AT91RM92_SSC2_BASE, AT91RM92_SSC_SIZE,
- AT91RM92_IRQ_SSC2
- },
- {
- "spi", 0,
- AT91RM92_BASE + AT91RM92_SPI_BASE, AT91RM92_SPI_SIZE,
- AT91RM92_IRQ_SPI
- },
- {
- "ohci", 0,
- AT91RM92_OHCI_BASE, AT91RM92_OHCI_SIZE,
- AT91RM92_IRQ_UHP
- },
- {
- "at91_cfata", 0,
- AT91RM92_CF_BASE, AT91RM92_CF_SIZE,
- -1
- },
- { 0, 0, 0, 0, 0 }
-};
-
static void
at91_cpu_add_builtin_children(device_t dev, struct at91_softc *sc)
{
@@ -434,7 +275,7 @@
// XXX should look at the device id in the DBGU register and
// XXX based on the CPU load in these devices
- for (i = 0, walker = at91rm9200_devs; walker->name; i++, walker++) {
+ for (i = 0, walker = at91_devs; walker->name; i++, walker++) {
at91_add_child(dev, i, walker->name, walker->unit,
walker->mem_base, walker->mem_len, walker->irq0,
walker->irq1, walker->irq2);
@@ -443,48 +284,6 @@
#define NORMDEV 50
-/*
- * Standard priority levels for the system. 0 is lowest and 7 is highest.
- * These values are the ones Atmel uses for its Linux port, which differ
- * a little form the ones that are in the standard distribution. Also,
- * the ones marked with 'TWEEK' are different based on experience.
- */
-static int irq_prio[32] =
-{
- 7, /* Advanced Interrupt Controller (FIQ) */
- 7, /* System Peripherals */
- 1, /* Parallel IO Controller A */
- 1, /* Parallel IO Controller B */
- 1, /* Parallel IO Controller C */
- 1, /* Parallel IO Controller D */
- 5, /* USART 0 */
- 5, /* USART 1 */
- 5, /* USART 2 */
- 5, /* USART 3 */
- 0, /* Multimedia Card Interface */
- 2, /* USB Device Port */
- 4, /* Two-Wire Interface */ /* TWEEK */
- 5, /* Serial Peripheral Interface */
- 4, /* Serial Synchronous Controller 0 */
- 6, /* Serial Synchronous Controller 1 */ /* TWEEK */
- 4, /* Serial Synchronous Controller 2 */
- 0, /* Timer Counter 0 */
- 6, /* Timer Counter 1 */ /* TWEEK */
- 0, /* Timer Counter 2 */
- 0, /* Timer Counter 3 */
- 0, /* Timer Counter 4 */
- 0, /* Timer Counter 5 */
- 2, /* USB Host port */
- 3, /* Ethernet MAC */
- 0, /* Advanced Interrupt Controller (IRQ0) */
- 0, /* Advanced Interrupt Controller (IRQ1) */
- 0, /* Advanced Interrupt Controller (IRQ2) */
- 0, /* Advanced Interrupt Controller (IRQ3) */
- 0, /* Advanced Interrupt Controller (IRQ4) */
- 0, /* Advanced Interrupt Controller (IRQ5) */
- 0 /* Advanced Interrupt Controller (IRQ6) */
-};
-
static int
at91_attach(device_t dev)
{
@@ -493,10 +292,10 @@
at91_softc = sc;
sc->sc_st = &at91_bs_tag;
- sc->sc_sh = AT91RM92_BASE;
+ sc->sc_sh = at91_base();
sc->dev = dev;
- if (bus_space_subregion(sc->sc_st, sc->sc_sh, AT91RM92_SYS_BASE,
- AT91RM92_SYS_SIZE, &sc->sc_sys_sh) != 0)
+ if (bus_space_subregion(sc->sc_st, sc->sc_sh, at91_sys_base(),
+ at91_sys_size(), &sc->sc_sys_sh) != 0)
panic("Enable to map IRQ registers");
sc->sc_irq_rman.rm_type = RMAN_ARRAY;
sc->sc_irq_rman.rm_descr = "AT91 IRQs";
@@ -509,19 +308,14 @@
rman_manage_region(&sc->sc_mem_rman, 0xdff00000ul,
0xdffffffful) != 0)
panic("at91_attach: failed to set up memory rman");
- if (rman_manage_region(&sc->sc_mem_rman, AT91RM92_OHCI_BASE,
- AT91RM92_OHCI_BASE + AT91RM92_OHCI_SIZE - 1) != 0)
- panic("at91_attach: failed to set up ohci memory");
- if (rman_manage_region(&sc->sc_mem_rman, AT91RM92_CF_BASE,
- AT91RM92_CF_BASE + AT91RM92_CF_SIZE - 1) != 0)
- panic("at91_attach: failed to set up CompactFlash ATA memory");
+ soc_attach(sc);
for (i = 0; i < 32; i++) {
bus_space_write_4(sc->sc_st, sc->sc_sys_sh, IC_SVR +
i * 4, i);
/* Priority. */
bus_space_write_4(sc->sc_st, sc->sc_sys_sh, IC_SMR + i * 4,
- irq_prio[i]);
+ at91_irq_prio[i]);
if (i < 8)
bus_space_write_4(sc->sc_st, sc->sc_sys_sh, IC_EOICR,
1);
@@ -630,7 +424,7 @@
{
struct at91_softc *sc = device_get_softc(dev);
- if (rman_get_start(ires) == AT91RM92_IRQ_SYSTEM && filt == NULL)
+ if (rman_get_start(ires) == at91_irq_sys() && filt == NULL)
panic("All system interrupt ISRs must be FILTER");
BUS_SETUP_INTR(device_get_parent(dev), child, ires, flags, filt,
intr, arg, cookiep);
==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/at91rm92reg.h#2 (text) ====
@@ -59,25 +59,6 @@
#define AT91RM92_SYS_BASE 0xffff000
#define AT91RM92_SYS_SIZE 0x1000
-/* Interrupt Controller */
-#define IC_SMR (0) /* Source mode register */
-#define IC_SVR (128) /* Source vector register */
-#define IC_IVR (256) /* IRQ vector register */
-#define IC_FVR (260) /* FIQ vector register */
-#define IC_ISR (264) /* Interrupt status register */
-#define IC_IPR (268) /* Interrupt pending register */
-#define IC_IMR (272) /* Interrupt status register */
-#define IC_CISR (276) /* Core interrupt status register */
-#define IC_IECR (288) /* Interrupt enable command register */
-#define IC_IDCR (292) /* Interrupt disable command register */
-#define IC_ICCR (296) /* Interrupt clear command register */
-#define IC_ISCR (300) /* Interrupt set command register */
-#define IC_EOICR (304) /* End of interrupt command register */
-#define IC_SPU (308) /* Spurious vector register */
-#define IC_DCR (312) /* Debug control register */
-#define IC_FFER (320) /* Fast forcing enable register */
-#define IC_FFDR (324) /* Fast forcing disable register */
-#define IC_FFSR (328) /* Fast forcing status register */
/* DBGU */
==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/at91var.h#2 (text) ====
@@ -43,6 +43,25 @@
struct resource_list resources;
};
+struct cpu_devs
+{
+ const char *name;
+ int unit;
+ bus_addr_t mem_base;
+ bus_size_t mem_len;
+ int irq0;
+ int irq1;
+ int irq2;
+};
+
extern uint32_t at91_master_clock;
+extern struct cpu_devs at91_devs[];
+extern int at91_irq_prio[32];
+
+void soc_attach(struct at91_softc *sc);
+uint32_t at91_sys_base(void);
+uint32_t at91_sys_size(void);
+uint32_t at91_base(void);
+uint32_t at91_irq_sys(void);
#endif /* _AT91VAR_H_ */
==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/files.at91#2 (text) ====
@@ -19,9 +19,15 @@
arm/at91/uart_cpu_at91rm9200usart.c optional uart
arm/at91/uart_dev_at91usart.c optional uart
#
+# All the SoC we support
+#
+arm/at91/soc_at91rm9200.c optional at91rm9200
+arm/at91/soc_ar91sam9261.c optional at91sam9261
+#
# All the boards we support
#
arm/at91/board_bwct.c optional at91_board_bwct
arm/at91/board_hl200.c optional at91_board_hl200
arm/at91/board_kb920x.c optional at91_board_kb920x
arm/at91/board_tsc4370.c optional at91_board_tsc4370
+arm/at91/board_at91sam9261ek optional at91_board_at91sam9261ek
==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/soc_at91rm9200.c#2 (text+ko) ====
@@ -23,3 +23,242 @@
* SUCH DAMAGE.
*/
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+
+#include <arm/at91/at91rm92reg.h>
+#include <arm/at91/at91var.h>
+
+uint32_t at91_master_clock = AT91C_MASTER_CLOCK;
+
+/*
+ * Standard priority levels for the system. 0 is lowest and 7 is highest.
+ * These values are the ones Atmel uses for its Linux port, which differ
+ * a little form the ones that are in the standard distribution. Also,
+ * the ones marked with 'TWEEK' are different based on experience.
+ */
+int at91_irq_prio[32] =
+{
+ 7, /* Advanced Interrupt Controller (FIQ) */
+ 7, /* System Peripherals */
+ 1, /* Parallel IO Controller A */
+ 1, /* Parallel IO Controller B */
+ 1, /* Parallel IO Controller C */
+ 1, /* Parallel IO Controller D */
+ 5, /* USART 0 */
+ 5, /* USART 1 */
+ 5, /* USART 2 */
+ 5, /* USART 3 */
+ 0, /* Multimedia Card Interface */
+ 2, /* USB Device Port */
+ 4, /* Two-Wire Interface */ /* TWEEK */
+ 5, /* Serial Peripheral Interface */
+ 4, /* Serial Synchronous Controller 0 */
+ 6, /* Serial Synchronous Controller 1 */ /* TWEEK */
+ 4, /* Serial Synchronous Controller 2 */
+ 0, /* Timer Counter 0 */
+ 6, /* Timer Counter 1 */ /* TWEEK */
+ 0, /* Timer Counter 2 */
+ 0, /* Timer Counter 3 */
+ 0, /* Timer Counter 4 */
+ 0, /* Timer Counter 5 */
+ 2, /* USB Host port */
+ 3, /* Ethernet MAC */
+ 0, /* Advanced Interrupt Controller (IRQ0) */
+ 0, /* Advanced Interrupt Controller (IRQ1) */
+ 0, /* Advanced Interrupt Controller (IRQ2) */
+ 0, /* Advanced Interrupt Controller (IRQ3) */
+ 0, /* Advanced Interrupt Controller (IRQ4) */
+ 0, /* Advanced Interrupt Controller (IRQ5) */
+ 0 /* Advanced Interrupt Controller (IRQ6) */
+};
+
+struct cpu_devs at91_devs[] =
+{
+ // All the "system" devices
+ {
+ "at91_st", 0,
+ AT91RM92_BASE + AT91RM92_ST_BASE, AT91RM92_ST_SIZE,
+ AT91RM92_IRQ_SYSTEM
+ },
+ {
+ "at91_pio", 0,
+ AT91RM92_BASE + AT91RM92_PIOA_BASE, AT91RM92_PIO_SIZE,
+ AT91RM92_IRQ_SYSTEM
+ },
+ {
+ "at91_pio", 1,
+ AT91RM92_BASE + AT91RM92_PIOB_BASE, AT91RM92_PIO_SIZE,
+ AT91RM92_IRQ_SYSTEM
+ },
+ {
+ "at91_pio", 2,
+ AT91RM92_BASE + AT91RM92_PIOC_BASE, AT91RM92_PIO_SIZE,
+ AT91RM92_IRQ_SYSTEM
+ },
+ {
+ "at91_pio", 3,
+ AT91RM92_BASE + AT91RM92_PIOD_BASE, AT91RM92_PIO_SIZE,
+ AT91RM92_IRQ_SYSTEM
+ },
+ {
+ "at91_pmc", 0,
+ AT91RM92_BASE + AT91RM92_PMC_BASE, AT91RM92_PMC_SIZE,
+ AT91RM92_IRQ_SYSTEM
+ },
+ {
+ "at91_aic", 0,
+ AT91RM92_BASE + AT91RM92_AIC_BASE, AT91RM92_AIC_SIZE,
+ 0 // Interrupt controller has no interrupts!
+ },
+ {
+ "at91_rtc", 0,
+ AT91RM92_BASE + AT91RM92_RTC_BASE, AT91RM92_RTC_SIZE,
+ AT91RM92_IRQ_SYSTEM
+ },
+ {
+ "at91_mc", 0,
+ AT91RM92_BASE + AT91RM92_MC_BASE, AT91RM92_MC_SIZE,
+ AT91RM92_IRQ_SYSTEM
+ },
+ // All other devices
+ {
+ "at91_tc", 0,
+ AT91RM92_BASE + AT91RM92_TC0_BASE, AT91RM92_TC_SIZE,
+ AT91RM92_IRQ_TC0, AT91RM92_IRQ_TC1, AT91RM92_IRQ_TC2
+ },
+ {
+ "at91_tc", 1,
+ AT91RM92_BASE + AT91RM92_TC1_BASE, AT91RM92_TC_SIZE,
+ AT91RM92_IRQ_TC3, AT91RM92_IRQ_TC4, AT91RM92_IRQ_TC5
+ },
+ {
+ "at91_udp", 0,
+ AT91RM92_BASE + AT91RM92_UDP_BASE, AT91RM92_UDP_SIZE,
+ AT91RM92_IRQ_UDP, AT91RM92_IRQ_PIOB
+ },
+ {
+ "at91_mci", 0,
+ AT91RM92_BASE + AT91RM92_MCI_BASE, AT91RM92_MCI_SIZE,
+ AT91RM92_IRQ_MCI
+ },
+ {
+ "at91_twi", 0,
+ AT91RM92_BASE + AT91RM92_TWI_BASE, AT91RM92_TWI_SIZE,
+ AT91RM92_IRQ_TWI
+ },
+ {
+ "ate", 0,
+ AT91RM92_BASE + AT91RM92_EMAC_BASE, AT91RM92_EMAC_SIZE,
+ AT91RM92_IRQ_EMAC
+ },
+#ifndef SKYEYE_WORKAROUNDS
+ {
+ "uart", 0,
+ AT91RM92_BASE + AT91RM92_DBGU_BASE, AT91RM92_DBGU_SIZE,
+ AT91RM92_IRQ_SYSTEM
+ },
+ {
+ "uart", 1,
+ AT91RM92_BASE + AT91RM92_USART0_BASE, AT91RM92_USART_SIZE,
+ AT91RM92_IRQ_USART0
+ },
+ {
+ "uart", 2,
+ AT91RM92_BASE + AT91RM92_USART1_BASE, AT91RM92_USART_SIZE,
+ AT91RM92_IRQ_USART1
+ },
+ {
+ "uart", 3,
+ AT91RM92_BASE + AT91RM92_USART2_BASE, AT91RM92_USART_SIZE,
+ AT91RM92_IRQ_USART2
+ },
+ {
+ "uart", 4,
+ AT91RM92_BASE + AT91RM92_USART3_BASE, AT91RM92_USART_SIZE,
+ AT91RM92_IRQ_USART3
+ },
+#else
+ {
+ "uart", 0,
+ AT91RM92_BASE + AT91RM92_USART0_BASE, AT91RM92_USART_SIZE,
+ AT91RM92_IRQ_USART0
+ },
+#endif
+ {
+ "at91_ssc", 0,
+ AT91RM92_BASE + AT91RM92_SSC0_BASE, AT91RM92_SSC_SIZE,
+ AT91RM92_IRQ_SSC0
+ },
+ {
+ "at91_ssc", 1,
+ AT91RM92_BASE + AT91RM92_SSC1_BASE, AT91RM92_SSC_SIZE,
+ AT91RM92_IRQ_SSC1
+ },
+ {
+ "at91_ssc", 2,
+ AT91RM92_BASE + AT91RM92_SSC2_BASE, AT91RM92_SSC_SIZE,
+ AT91RM92_IRQ_SSC2
+ },
+ {
+ "spi", 0,
+ AT91RM92_BASE + AT91RM92_SPI_BASE, AT91RM92_SPI_SIZE,
+ AT91RM92_IRQ_SPI
+ },
+ {
+ "ohci", 0,
+ AT91RM92_OHCI_BASE, AT91RM92_OHCI_SIZE,
+ AT91RM92_IRQ_UHP
+ },
+ {
+ "at91_cfata", 0,
+ AT91RM92_CF_BASE, AT91RM92_CF_SIZE,
+ -1
+ },
+ { 0, 0, 0, 0, 0 }
+};
+
+/*
+ * Attach stuff SoC dependant.
+ */
+void
+soc_attach(struct at91_softc *sc)
+{
+ if (rman_manage_region(&sc->sc_mem_rman, AT91RM92_OHCI_BASE,
+ AT91RM92_OHCI_BASE + AT91RM92_OHCI_SIZE - 1) != 0)
+ panic("at91_attach: failed to set up ohci memory");
+ if (rman_manage_region(&sc->sc_mem_rman, AT91RM92_CF_BASE,
+ AT91RM92_CF_BASE + AT91RM92_CF_SIZE - 1) != 0)
+ panic("at91_attach: failed to set up CompactFlash ATA memory");
+}
+
+/*
+ * Accessor for BASE SYS_BASE SYS_SIZE and IRQ_SYSTEM
+ */
+
+uint32_t
+at91_sys_base(void)
+{
+ return (AT91RM92_SYS_BASE);
+}
+
+uint32_t
+at91_sys_size(void)
+{
+ return (AT91RM92_SYS_SIZE);
+}
+
+uint32_t
+at91_base(void)
+{
+ return (AT91RM92_BASE);
+}
+
+uint32_t
+at91_irq_sys(void)
+{
+ return (AT91RM92_IRQ_SYSTEM);
+}
+
==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/soc_at91sam9261.c#2 (text+ko) ====
@@ -23,3 +23,10 @@
* SUCH DAMAGE.
*/
+/*
+ * Need to calcul the master clock instead of fixing an
+ * hard coded value.
+ */
+
+uint32_t at91_master_clock = 198656000/2;
+
==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/std.bwct#2 (text+ko) ====
@@ -8,3 +8,4 @@
options KERNVIRTADDR=0xc0000000
device at91_board_bwct
+device at91rm9200
==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/std.hl200#2 (text+ko) ====
@@ -9,3 +9,4 @@
options AT91C_MASTER_CLOCK=45000000
device at91_board_hl200
+device at91rm9200
==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/std.kb920x#2 (text) ====
@@ -8,3 +8,4 @@
options KERNVIRTADDR=0xc0000000
device at91_board_kb920x
+device at91rm9200
==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/std.tsc4370#2 (text+ko) ====
@@ -8,3 +8,4 @@
options KERNVIRTADDR=0xc0000000
device at91_board_tsc4370
+device at91rm9200
==== //depot/projects/soc2009/syl_usb/src/sys/arm/conf/BWCT#3 (text+ko) ====
==== //depot/projects/soc2009/syl_usb/src/sys/conf/options.arm#2 (text+ko) ====
More information about the p4-projects
mailing list