Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 May 2009 16:26:46 GMT
From:      Sylvestre Gallon <syl@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 162580 for review
Message-ID:  <200905231626.n4NGQksJ058127@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=162580

Change 162580 by syl@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) ====




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200905231626.n4NGQksJ058127>