summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2008-07-10 06:17:47 +0000
committerThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2008-07-10 06:17:47 +0000
commit214cbd92bc4e92fd35e34335a96ee4df13900838 (patch)
tree273809e88c3f247f77f210d68da5c89c76a36a82 /c
parentSD Card driver (diff)
downloadrtems-214cbd92bc4e92fd35e34335a96ee4df13900838.tar.bz2
- Simple timing functions based on a time base reference.
- u-boot header file
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/ChangeLog7
-rw-r--r--c/src/lib/libbsp/powerpc/gen83xx/network/network.c2
-rw-r--r--c/src/lib/libbsp/powerpc/shared/include/tictac.h77
-rw-r--r--c/src/lib/libbsp/powerpc/shared/include/u-boot.h142
-rw-r--r--c/src/lib/libbsp/powerpc/shared/src/tictac.c31
5 files changed, 258 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog
index bd98525401..2eaa1247b1 100644
--- a/c/src/lib/libbsp/powerpc/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/ChangeLog
@@ -1,3 +1,10 @@
+2008-07-09 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * shared/clock/clock.c: Alternative clock driver. Uses exception handler
+ directly. Supports special variants for Book E and e300 cores. For
+ standard decrementer CPUs the new decrementer value is calculated with
+ reference to a time base so that a time drift is avoided.
+
2008-07-01 Joel Sherrill <joel.sherrill@oarcorp.com>
* shared/uboot_getenv.c: New file.
diff --git a/c/src/lib/libbsp/powerpc/gen83xx/network/network.c b/c/src/lib/libbsp/powerpc/gen83xx/network/network.c
index e5e2a0a91c..8e2009054e 100644
--- a/c/src/lib/libbsp/powerpc/gen83xx/network/network.c
+++ b/c/src/lib/libbsp/powerpc/gen83xx/network/network.c
@@ -30,7 +30,7 @@
#define TSEC_IFMODE_GMII 1
#if defined(MPC8349EAMDS)
-#define TSEC_IFMODE TSEC_IFMODE_GMII
+#define TSEC_IFMODE TSEC_IFMODE_RGMII
#endif
#if defined(HSC_CM01)
diff --git a/c/src/lib/libbsp/powerpc/shared/include/tictac.h b/c/src/lib/libbsp/powerpc/shared/include/tictac.h
new file mode 100644
index 0000000000..7ca5922557
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/shared/include/tictac.h
@@ -0,0 +1,77 @@
+/**
+ * @file
+ *
+ * @ingroup powerpc_shared
+ *
+ * @brief Header file for tic-tac code.
+ */
+
+/*
+ * Copyright (c) 2008
+ * Embedded Brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * rtems@embedded-brains.de
+ *
+ * The license and distribution terms for this file may be found in the file
+ * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
+ */
+
+/**
+ * @brief Reset reference ticks for tac().
+ */
+static inline void tic()
+{
+ uint32_t tmp;
+ asm volatile (
+ "mftb 0;"
+ "stw 0, ppc_tic_tac@sdarel(13);"
+ : "=r" (tmp)
+ );
+}
+
+/**
+ * @brief Returns number of ticks since last tic().
+ */
+static inline uint32_t tac()
+{
+ uint32_t ticks;
+ uint32_t tmp;
+ asm volatile (
+ "mftb %0;"
+ "lwz %1, ppc_tic_tac@sdarel(13);"
+ "subf %0, %1, %0;"
+ : "=r" (ticks), "=r" (tmp)
+ );
+ return ticks;
+}
+
+/**
+ * @brief Reset reference ticks for bam().
+ */
+static inline void boom()
+{
+ uint32_t tmp;
+ asm volatile (
+ "mftb 0;"
+ "stw 0, ppc_boom_bam@sdarel(13);"
+ : "=r" (tmp)
+ );
+}
+
+/**
+ * @brief Returns number of ticks since last boom().
+ */
+static inline uint32_t bam()
+{
+ uint32_t ticks;
+ uint32_t tmp;
+ asm volatile (
+ "mftb %0;"
+ "lwz %1, ppc_boom_bam@sdarel(13);"
+ "subf %0, %1, %0;"
+ : "=r" (ticks), "=r" (tmp)
+ );
+ return ticks;
+}
diff --git a/c/src/lib/libbsp/powerpc/shared/include/u-boot.h b/c/src/lib/libbsp/powerpc/shared/include/u-boot.h
new file mode 100644
index 0000000000..786ba030ea
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/shared/include/u-boot.h
@@ -0,0 +1,142 @@
+/*
+ * (C) Copyright 2000 - 2002
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ********************************************************************
+ * NOTE: This header file defines an interface to U-Boot. Including
+ * this (unmodified) header file in another file is considered normal
+ * use of U-Boot, and does *not* fall under the heading of "derived
+ * work".
+ ********************************************************************
+ */
+
+#ifndef __U_BOOT_H__
+#define __U_BOOT_H__
+
+/*
+ * Board information passed to Linux kernel from U-Boot
+ *
+ * include/asm-ppc/u-boot.h
+ */
+
+#ifndef __ASSEMBLY__
+
+typedef struct bd_info {
+ unsigned long bi_memstart; /* start of DRAM memory */
+ unsigned long bi_memsize; /* size of DRAM memory in bytes */
+ unsigned long bi_flashstart; /* start of FLASH memory */
+ unsigned long bi_flashsize; /* size of FLASH memory */
+ unsigned long bi_flashoffset; /* reserved area for startup monitor */
+ unsigned long bi_sramstart; /* start of SRAM memory */
+ unsigned long bi_sramsize; /* size of SRAM memory */
+#if defined(CONFIG_5xx) || defined(CONFIG_8xx) || defined(CONFIG_8260) \
+ || defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
+ unsigned long bi_immr_base; /* base of IMMR register */
+#endif
+#if defined(CONFIG_MPC5xxx)
+ unsigned long bi_mbar_base; /* base of internal registers */
+#endif
+#if defined(CONFIG_MPC83XX)
+ unsigned long bi_immrbar;
+#endif
+#if defined(CONFIG_MPC8220)
+ unsigned long bi_mbar_base; /* base of internal registers */
+ unsigned long bi_inpfreq; /* Input Freq, In MHz */
+ unsigned long bi_pcifreq; /* PCI Freq, in MHz */
+ unsigned long bi_pevfreq; /* PEV Freq, in MHz */
+ unsigned long bi_flbfreq; /* Flexbus Freq, in MHz */
+ unsigned long bi_vcofreq; /* VCO Freq, in MHz */
+#endif
+ unsigned long bi_bootflags; /* boot / reboot flag (for LynxOS) */
+ unsigned long bi_ip_addr; /* IP Address */
+ unsigned char bi_enetaddr[6]; /* Ethernet adress */
+ unsigned short bi_ethspeed; /* Ethernet speed in Mbps */
+ unsigned long bi_intfreq; /* Internal Freq, in MHz */
+ unsigned long bi_busfreq; /* Bus Freq, in MHz */
+#if defined(CONFIG_CPM2)
+ unsigned long bi_cpmfreq; /* CPM_CLK Freq, in MHz */
+ unsigned long bi_brgfreq; /* BRG_CLK Freq, in MHz */
+ unsigned long bi_sccfreq; /* SCC_CLK Freq, in MHz */
+ unsigned long bi_vco; /* VCO Out from PLL, in MHz */
+#endif
+#if defined(CONFIG_MPC512X)
+ unsigned long bi_ipsfreq; /* IPS Bus Freq, in MHz */
+#endif /* CONFIG_MPC512X */
+#if defined(CONFIG_MPC5xxx)
+ unsigned long bi_ipbfreq; /* IPB Bus Freq, in MHz */
+ unsigned long bi_pcifreq; /* PCI Bus Freq, in MHz */
+#endif
+ unsigned long bi_baudrate; /* Console Baudrate */
+#if defined(CONFIG_405) || \
+ defined(CONFIG_405GP) || \
+ defined(CONFIG_405CR) || \
+ defined(CONFIG_405EP) || \
+ defined(CONFIG_405EZ) || \
+ defined(CONFIG_405EX) || \
+ defined(CONFIG_440)
+ unsigned char bi_s_version[4]; /* Version of this structure */
+ unsigned char bi_r_version[32]; /* Version of the ROM (AMCC) */
+ unsigned int bi_procfreq; /* CPU (Internal) Freq, in Hz */
+ unsigned int bi_plb_busfreq; /* PLB Bus speed, in Hz */
+ unsigned int bi_pci_busfreq; /* PCI Bus speed, in Hz */
+ unsigned char bi_pci_enetaddr[6]; /* PCI Ethernet MAC address */
+#endif
+#if defined(CONFIG_HYMOD)
+ hymod_conf_t bi_hymod_conf; /* hymod configuration information */
+#endif
+
+#ifdef CONFIG_HAS_ETH1
+ /* second onboard ethernet port */
+ unsigned char bi_enet1addr[6];
+#endif
+#ifdef CONFIG_HAS_ETH2
+ /* third onboard ethernet port */
+ unsigned char bi_enet2addr[6];
+#endif
+#ifdef CONFIG_HAS_ETH3
+ unsigned char bi_enet3addr[6];
+#endif
+
+#if defined(CONFIG_405GP) || defined(CONFIG_405EP) || \
+ defined(CONFIG_405EZ) || defined(CONFIG_440GX) || \
+ defined(CONFIG_440EP) || defined(CONFIG_440GR) || \
+ defined(CONFIG_440EPX) || defined(CONFIG_440GRX) || \
+ defined(CONFIG_460EX) || defined(CONFIG_460GT)
+ unsigned int bi_opbfreq; /* OPB clock in Hz */
+ int bi_iic_fast[2]; /* Use fast i2c mode */
+#endif
+#if defined(CONFIG_NX823)
+ unsigned char bi_sernum[8];
+#endif
+#if defined(CONFIG_4xx)
+#if defined(CONFIG_440GX) || \
+ defined(CONFIG_460EX) || defined(CONFIG_460GT)
+ int bi_phynum[4]; /* Determines phy mapping */
+ int bi_phymode[4]; /* Determines phy mode */
+#elif defined(CONFIG_405EP) || defined(CONFIG_440)
+ int bi_phynum[2]; /* Determines phy mapping */
+ int bi_phymode[2]; /* Determines phy mode */
+#else
+ int bi_phynum[1]; /* Determines phy mapping */
+ int bi_phymode[1]; /* Determines phy mode */
+#endif
+#endif /* defined(CONFIG_4xx) */
+} bd_t;
+
+#endif /* __ASSEMBLY__ */
+#endif /* __U_BOOT_H__ */
diff --git a/c/src/lib/libbsp/powerpc/shared/src/tictac.c b/c/src/lib/libbsp/powerpc/shared/src/tictac.c
new file mode 100644
index 0000000000..06272df2b0
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/shared/src/tictac.c
@@ -0,0 +1,31 @@
+/**
+ * @file
+ *
+ * @ingroup powerpc_shared
+ *
+ * @brief Source file for tic-tac code.
+ */
+
+/*
+ * Copyright (c) 2008
+ * Embedded Brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * rtems@embedded-brains.de
+ *
+ * The license and distribution terms for this file may be found in the file
+ * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
+ */
+
+#include <stdint.h>
+
+/**
+ * @brief Referenc value for tac().
+ */
+uint32_t ppc_tic_tac = 0;
+
+/**
+ * @brief Referenc value for bam().
+ */
+uint32_t ppc_boom_bam = 0;