Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 May 2009 07:30:33 GMT
From:      Sylvestre Gallon <syl@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 162627 for review
Message-ID:  <200905240730.n4O7UXPd091741@repoman.freebsd.org>

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

Change 162627 by syl@syl_rincewind on 2009/05/24 07:30:23

	Implement SoC file for at91sam9261ek.
	Import header for sam9261 registers and pio.
	Add AT91SAM9261EK config file.

Affected files ...

.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/at91_pio_sam9261.h#1 add
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/at91sam9261reg.h#1 add
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/board_at91sam9261ek.c#2 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/files.at91#3 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/soc_at91rm9200.c#4 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/soc_at91sam9261.c#3 edit
.. //depot/projects/soc2009/syl_usb/src/sys/arm/at91/std.at91sam9261ek#1 add
.. //depot/projects/soc2009/syl_usb/src/sys/arm/conf/AT91SAM9261EK#1 add

Differences ...

==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/board_at91sam9261ek.c#2 (text+ko) ====

@@ -1,0 +1,36 @@
+/*-
+ * Copyright (c) 2009 Sylvestre Gallon. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#include <sys/param.h>
+#include <sys/systm.h>
+
+#include <arm/at91/at91board.h>
+
+long
+board_init(void)
+{
+	return (at91_ramsize());
+}

==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/files.at91#3 (text) ====

@@ -22,7 +22,7 @@
 # All the SoC we support
 #
 arm/at91/soc_at91rm9200.c	optional	at91rm9200
-arm/at91/soc_ar91sam9261.c	optional	at91sam9261
+arm/at91/soc_at91sam9261.c	optional	at91sam9261
 #
 # All the boards we support
 #
@@ -30,4 +30,4 @@
 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
+arm/at91/board_at91sam9261ek.c	optional	at91_board_at91sam9261ek

==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/soc_at91rm9200.c#4 (text+ko) ====

@@ -275,9 +275,6 @@
 	{	0, 0, 0, 0, 0 }
 };
 
-/*
- * Attach stuff SoC dependant.
- */
 void
 soc_attach(struct at91_softc *sc)
 {

==== //depot/projects/soc2009/syl_usb/src/sys/arm/at91/soc_at91sam9261.c#3 (text+ko) ====

@@ -23,10 +23,165 @@
  * SUCH DAMAGE.
  */
 
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+
+#include <arm/at91/at91sam9261reg.h>
+#include <arm/at91/at91var.h>
+
 /*
  *	Need to calcul the master clock instead of fixing an
  *	hard coded value.
  */
+uint32_t at91_master_clock = 198656000/2;
 
-uint32_t at91_master_clock = 198656000/2;
+/* Static device mappings. */
+const struct pmap_devmap at91_devmap[] = {
+	/*
+	 * Map the on-board devices VA == PA so that we can access them
+	 * with the MMU on or off.
+	 */
+	{
+		/*
+		 * This at least maps the interrupt controller, the UART
+		 * and the timer. Other devices should use newbus to
+		 * map their memory anyway.
+		 */
+		0xdff00000,
+		0xfff00000,
+		0x100000,
+		VM_PROT_READ|VM_PROT_WRITE,
+		PTE_NOCACHE,
+	},
+	/*
+	 * We can't just map the OHCI registers VA == PA, because
+	 * AT91RM92_OHCI_BASE belongs to the userland address space.
+	 * We could just choose a different virtual address, but a better
+	 * solution would probably be to just use pmap_mapdev() to allocate
+	 * KVA, as we don't need the OHCI controller before the vm
+	 * initialization is done. However, the AT91 resource allocation
+	 * system doesn't know how to use pmap_mapdev() yet.
+	 */
+	{
+		/*
+		 * Add the ohci controller, and anything else that might be
+		 * on this chip select for a VA/PA mapping.
+		 */
+		AT91SAM9261_OHCI_BASE,
+		AT91SAM9261_OHCI_PA_BASE,
+		AT91SAM9261_OHCI_SIZE,
+		VM_PROT_READ|VM_PROT_WRITE,
+		PTE_NOCACHE,
+	},
+	{
+		0,
+		0,
+		0,
+		0,
+		0,
+	}
+};
+
+/*
+ * 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 */
+	0,
+	5,	/* USART 0 */
+	5,	/* USART 1 */
+	5,	/* USART 2 */
+	0,	/* Multimedia Card Interface */
+	2,	/* USB Device Port */
+	6,	/* Two-Wire Interface */
+	5,	/* Serial Peripheral Interface 0 */
+	5,	/* Serial Peripheral Interface 1 */
+	4,	/* Serial Synchronous Controller 0 */
+	4,	/* Serial Synchronous Controller 1 */
+	4,	/* Serial Synchronous Controller 2 */
+	0,	/* Timer Counter 0 */
+	0,	/* Timer Counter 1 */
+	0,	/* Timer Counter 2 */
+	2,	/* USB Host Port */
+	3,	/* LCD Controller */
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,	/* Advanced Interface Controller (IRQ0) */
+	0,	/* Advanced Interface Controller (IRQ1) */
+	0	/* Advanced Interrupt Controller (IRQ2) */
+};
+
+struct cpu_devs at91_devs[] = 
+{
+	/* PIO need to be check */
+	{
+		"at91_udp", 0,
+		AT91SAM9261_BASE + AT91SAM9261_UDP_BASE, AT91SAM9261_UDP_SIZE,
+		AT91SAM9261_IRQ_UDP, AT91SAM9261_IRQ_PIOB
+	},
+	{
+		"ohci", 0,
+		AT91SAM9261_OHCI_BASE, AT91SAM9261_OHCI_SIZE,
+		AT91SAM9261_IRQ_UHP
+	},
+	{	0, 0, 0, 0, 0 }
+};
+
+void
+soc_attach(struct at91_softc *sc)
+{
+	if (rman_manage_region(&sc->sc_mem_rman, AT91SAM9261_OHCI_BASE,
+	    AT91SAM9261_OHCI_BASE + AT91SAM9261_OHCI_SIZE - 1) != 0)
+		panic("at91_attach: failed to set up ohci memory");
+}
+
+/*
+ * Accessor for BASE SYS_BASE SYS_SIZE and IRQ_SYSTEM
+ */
+
+uint32_t
+at91_sys_base(void)
+{
+	return (AT91SAM9261_SYS_BASE);
+}
+
+uint32_t
+at91_sys_size(void)
+{
+	return (AT91SAM9261_SYS_SIZE);
+}
+
+uint32_t
+at91_base(void)
+{
+	return (AT91SAM9261_BASE);
+}
+
+uint32_t
+at91_irq_sys(void)
+{
+	return (AT91SAM9261_IRQ_SYSTEM);
+}
 
+uint32_t
+at91_sdramc_base(void)
+{
+	return (AT91SAM9261_SDRAMC_BASE);
+}



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