Move arch-specific global data into its own structure
Subsystems (19)
v2 cover Move arch-specific global data into its own structure
The previous generic board series hit a snag in that we needed generic code to access some of the architecture-specific fields in global_data.
The solution eventually arrived at was to move these fields into a separate structure, so that global_data has the generic fields, and within that there is an arch_global_data structure holding the architecture-specific ones.
This series makes that change. Assuming this is reasonable, the next step is to bring back the generic board patches on top of this.
A couple of things are left undone in this series:
- possibly unify brg_clk on powerpc (but that would involve unifying some ifdefs
- decide what to do about PCI clock being present with there is no CONFIG_PCI. It seem wrong to me, but I haven't changed it for this series.
I have completed a build of all commits for all builds and see no regressions. But the following boards had errors/warnings, so it seems I need to continue working on my toolchains:
blackfin: + bf561-acvilon + dnp5370 + cm-bf561 + blackstamp + br4
+ bct-brettl2 + cm-bf527 + bf506f-ezkit + ip04 + bf527-sdp + bf537-stamp + bf527-ezkit-v2 + cm-bf537e + tcm-bf518 + cm-bf537u + bf527-ezkit + bf537-pnav + cm-bf533 + pr1 + bf533-ezkit + ibf-dsp561 +
bf537-srv1 + cm-bf548 + bf537-minotaur + bf538f-ezkit + bf548-ezkit +
bf525-ucr2 + blackvme + tcm-bf537 + bf533-stamp + bf518f-ezbrd +
bf527-ad7160-eval + bf526-ezbrd + bf561-ezkit
avr32: + hammerhead + atngw100mkii + grasshopper + favr-32-ezkit
+ atstk1006 + atstk1004 + atstk1003 + atstk1002 + atngw100 + mimc200
m68k: + M5235EVB_Flash32 + M54455EVB_a66 + M5329AFEE + M5249EVB
+ idmr + M5208EVBE + eb_cpu5282 + M5475FFE + M54451EVB + astro_mcf5373l
+ M54418TWR_serial_rmii + M54455EVB_intel + M5282EVB + M54455EVB_i66 +
M5475GFE + M5253DEMO + M54455EVB_stm33 + M5253EVBE + M5485BFE +
M5485DFE + M5329BFEE + M52277EVB + M5475EFE + M5475CFE + cobra5272 +
M5485AFE + M53017EVB + M5475AFE + M5485HFE + M5235EVB + M5275EVB +
M5271EVB + M54418TWR_nand_mii + M54418TWR_nand_rmii_lowfreq + TASREG +
M5475BFE + M5475DFE + M52277EVB_stmicro + eb_cpu5282_internal +M54451EVB_stmicro + M5485GFE + M5373EVB + M5485EFE + M5485FFE + M54418TWR + M54418TWR_nand_rmii + M54418TWR_serial_mii + M5485CFE + M54455EVB + M5272C3
powerpc: + MVBLM7 + MVSMR
sparc: + grsim + grsim_leon2 + gr_cpci_ax2000 + gr_xc3s_1500 +
gr_ep2s60
sh: + rsk7269 + rsk7264 + sh7757lcr + rsk7203
microblaze: + microblaze-generic
openrisc: + openrisc-generic
mips: + incaip_150MHz + pb1000 + vct_premium_onenand +
vct_platinum + qemu_mips + vct_premium_small + dbau1100 +vct_platinumavc_small + vct_premium_onenand_small + incaip + vct_platinum_small + dbau1550 + dbau1500 + qemu_mips64el + vct_platinumavc_onenand_small + incaip_133MHz + vct_platinum_onenand_small
+ vct_premium + vct_platinumavc_onenand + qemu_mips64 + qi_lb60 +vct_platinumavc + incaip_100MHz + vct_platinum_onenand + qemu_mipsel + dbau1550_el + dbau1000
arm: + VCMA9 + smdk2410
nds32: + adp-ag101p + adp-ag102 + adp-ag101Changes in v2:
- Rebase to master
- Remove gdt_addr which is no longer used on x86
- Add new patch to move gd pointer by C to asm on x86
- Rebase to master
- Remove tabs after #ifdef and #define in generic global_data
- Rebase to master
Simon Glass (58):
Add architecture-specific global data
at91: Move at91 global data into arch_global_data
arm: Move timer_rate_hz into arch_global_data
arm: Move tbu to arch_global_data
arm: Move tbl to arch_global_data
arm: Move lastinc to arch_global_data
arm: Move timer_reset_value to arch_global_data
ixp: Move timestamp to arch_global_data
nds32: Drop tlb_addr from global data
arm: Move tlb_addr to arch_global_data
x86: Remove gdt_addr from arch_global_data
x86: Move gd_addr into arch_global_data
x86: Set up the global data pointer in C instead of asm
x86: Remove reset_status, relocoff from global_data
ppc: Move brg_clk to arch_global_data
ppc: Remove extra pci_clk fields from global_data
ppc: Move clock fields to arch_global_data
ppc: Move mpc83xx clock fields to arch_global_data
ppc: Move lbc_clk and cpu to arch_global_data
ppc: m68k: Move i2c1_clk, i2c2_clk to arch_global_data
ppc: Move CONFIG_QE to arch_global_data
ppc: Move used_laws to arch_global_data
ppc: Move used_tlb_cams to arch_global_data
ppc: Move mpc5xxx clocks to arch_global_data
ppc: Move mpc512x clocks to arch_global_data
ppc: Move mpc8220 clocks to arch_global_data
ppc: Move reset_status to arch_global_data
ppc: Move arbiter fields to arch_global_data
ppc: Move dp_alloc_base, dp_alloc_top to arch_global_data
arm: Move uart_clk to arch_global_data
ppc: Move mirror_hack to arch_global_data
ppc: Remove console_addr from global data
ppc: Move fpga_state to arch_global_data
ppc: Move wdt_last to arch_global_data
ppc: Move kbd_status to arch_global_data
ppc: arm: Move sdhc_clk into arch_global_data
sparc: Drop kbd_status and reset_status from global_data
m68k: Move CONFIG_EXTRA_CLOCK to arch_global_data
mips: Move per_clk and dev_clk to arch_global_data
avr32: Move stack_end to arch_global_data
avr32: Move cpu_hz to arch_global_data
sandbox: Move ram_buf to arch_global_data
Add generic global_data
Only use fb_base if we have a display
arm: Use generic global_data
avr32: Use generic global_data
blackfin: Use generic global_data
m68k: Use generic global_data
microblaze: Use generic global_data
mips: Use generic global_data
nds32: Use generic global_data
nios2: Use generic global_data
openrisc: Use generic global_data
powerpc: Use generic global_data
sandbox: Use generic global_data
sh: Use generic global_data
sparc: Use generic global_data
x86: Use generic global_data
arch/arm/cpu/arm1136/mx31/timer.c | 10 +- arch/arm/cpu/arm1136/mx35/generic.c | 6 +- arch/arm/cpu/arm1136/mx35/timer.c | 4 +- arch/arm/cpu/arm1136/omap24xx/timer.c | 23 +++-- arch/arm/cpu/arm920t/a320/timer.c | 18 ++-- arch/arm/cpu/arm920t/at91/clock.c | 24 +++-- arch/arm/cpu/arm920t/at91/timer.c | 14 ++-- arch/arm/cpu/arm920t/s3c24x0/timer.c | 30 +++--- arch/arm/cpu/arm926ejs/armada100/timer.c | 18 ++-- arch/arm/cpu/arm926ejs/at91/clock.c | 30 +++--- arch/arm/cpu/arm926ejs/at91/timer.c | 18 ++-- arch/arm/cpu/arm926ejs/davinci/timer.c | 21 ++-- arch/arm/cpu/arm926ejs/kirkwood/timer.c | 4 +- arch/arm/cpu/arm926ejs/mb86r0x/timer.c | 4 +- arch/arm/cpu/arm926ejs/mx25/generic.c | 4 +- arch/arm/cpu/arm926ejs/mx25/timer.c | 4 +- arch/arm/cpu/arm926ejs/mx27/timer.c | 4 +- arch/arm/cpu/arm926ejs/mxs/timer.c | 4 +- arch/arm/cpu/arm926ejs/omap/timer.c | 4 +- arch/arm/cpu/arm926ejs/orion5x/timer.c | 4 +- arch/arm/cpu/arm926ejs/pantheon/timer.c | 18 ++-- arch/arm/cpu/arm926ejs/spear/timer.c | 4 +- arch/arm/cpu/arm926ejs/versatile/timer.c | 4 +- arch/arm/cpu/armv7/omap-common/timer.c | 20 ++-- arch/arm/cpu/armv7/s5p-common/timer.c | 14 ++-- arch/arm/cpu/armv7/socfpga/timer.c | 15 ++-- arch/arm/cpu/armv7/u8500/timer.c | 16 ++-- arch/arm/cpu/armv7/zynq/timer.c | 14 ++-- arch/arm/cpu/ixp/timer.c | 12 +- arch/arm/cpu/pxa/timer.c | 4 +- arch/arm/cpu/tegra-common/timer.c | 12 +- arch/arm/imx-common/speed.c | 16 ++-- arch/arm/imx-common/timer.c | 4 +- arch/arm/include/asm/arch-at91/clk.h | 12 +- arch/arm/include/asm/global_data.h | 58 +++--------- arch/arm/lib/board.c | 2 +- arch/arm/lib/cache-cp15.c | 4 +- arch/avr32/cpu/cpu.c | 4 +- arch/avr32/cpu/exception.c | 6 +- arch/avr32/cpu/interrupts.c | 6 +- arch/avr32/include/asm/global_data.h | 34 +------ arch/avr32/lib/board.c | 2 +- arch/avr32/lib/bootm.c | 2 +- arch/blackfin/include/asm/global_data.h | 33 +------ arch/m68k/cpu/mcf5227x/cpu.c | 6 +- arch/m68k/cpu/mcf5227x/speed.c | 12 +- arch/m68k/cpu/mcf523x/speed.c | 2 +- arch/m68k/cpu/mcf52x2/speed.c | 4 +- arch/m68k/cpu/mcf532x/speed.c | 2 +- arch/m68k/cpu/mcf5445x/cpu.c | 10 +- arch/m68k/cpu/mcf5445x/speed.c | 14 ++-- arch/m68k/cpu/mcf547x_8x/speed.c | 2 +- arch/m68k/include/asm/global_data.h | 47 ++-------- arch/m68k/lib/board.c | 6 +- arch/microblaze/include/asm/global_data.h | 27 +----- arch/mips/cpu/xburst/timer.c | 20 ++-- arch/mips/include/asm/global_data.h | 38 +------- arch/nds32/include/asm/global_data.h | 35 +------ arch/nds32/lib/board.c | 11 -- arch/nios2/include/asm/global_data.h | 25 +---- arch/openrisc/include/asm/global_data.h | 25 +---- arch/powerpc/cpu/mpc512x/cpu.c | 4 +- arch/powerpc/cpu/mpc512x/cpu_init.c | 2 +- arch/powerpc/cpu/mpc512x/i2c.c | 2 +- arch/powerpc/cpu/mpc512x/ide.c | 2 +- arch/powerpc/cpu/mpc512x/serial.c | 2 +- arch/powerpc/cpu/mpc512x/speed.c | 15 ++- arch/powerpc/cpu/mpc5xxx/i2c.c | 2 +- arch/powerpc/cpu/mpc5xxx/ide.c | 2 +- arch/powerpc/cpu/mpc5xxx/serial.c | 4 +- arch/powerpc/cpu/mpc5xxx/speed.c | 18 +++- arch/powerpc/cpu/mpc8220/fec.c | 8 +- arch/powerpc/cpu/mpc8220/speed.c | 12 ++- arch/powerpc/cpu/mpc8260/commproc.c | 21 ++-- arch/powerpc/cpu/mpc8260/cpu_init.c | 4 +- arch/powerpc/cpu/mpc8260/i2c.c | 2 +- arch/powerpc/cpu/mpc8260/speed.c | 16 ++-- arch/powerpc/cpu/mpc83xx/cpu.c | 2 +- arch/powerpc/cpu/mpc83xx/cpu_init.c | 32 ++++--- arch/powerpc/cpu/mpc83xx/fdt.c | 2 +- arch/powerpc/cpu/mpc83xx/pcie.c | 4 +- arch/powerpc/cpu/mpc83xx/speed.c | 108 +++++++++++++--------- arch/powerpc/cpu/mpc85xx/commproc.c | 21 ++-- arch/powerpc/cpu/mpc85xx/cpu.c | 2 +- arch/powerpc/cpu/mpc85xx/fdt.c | 4 +- arch/powerpc/cpu/mpc85xx/speed.c | 28 +++--- arch/powerpc/cpu/mpc85xx/tlb.c | 8 +- arch/powerpc/cpu/mpc86xx/cpu.c | 2 +- arch/powerpc/cpu/mpc86xx/fdt.c | 4 +- arch/powerpc/cpu/mpc86xx/speed.c | 8 +- arch/powerpc/cpu/mpc8xx/commproc.c | 20 ++-- arch/powerpc/cpu/mpc8xx/fdt.c | 2 +- arch/powerpc/cpu/mpc8xx/speed.c | 2 +- arch/powerpc/cpu/mpc8xxx/cpu.c | 8 +- arch/powerpc/cpu/mpc8xxx/law.c | 16 ++-- arch/powerpc/cpu/ppc4xx/4xx_uart.c | 4 +- arch/powerpc/cpu/ppc4xx/fdt.c | 4 +- arch/powerpc/include/asm/global_data.h | 140 +++++++++------------------- arch/powerpc/lib/board.c | 33 ++++--- arch/sandbox/cpu/cpu.c | 2 +- arch/sandbox/include/asm/global_data.h | 25 +---- arch/sandbox/lib/board.c | 6 +- arch/sh/include/asm/global_data.h | 21 +---- arch/sparc/include/asm/global_data.h | 51 +--------- arch/x86/cpu/cpu.c | 4 +- arch/x86/cpu/start.S | 6 - arch/x86/include/asm/global_data.h | 43 ++------- board/evb64260/mpsc.c | 2 +- board/freescale/bsc9131rdb/bsc9131rdb.c | 2 +- board/freescale/corenet_ds/corenet_ds.c | 2 +- board/freescale/p1010rdb/ddr.c | 6 +- board/freescale/p1010rdb/p1010rdb.c | 6 +- board/freescale/p1_p2_rdb/ddr.c | 2 +- board/freescale/p1_p2_rdb/p1_p2_rdb.c | 2 +- board/freescale/p2041rdb/p2041rdb.c | 2 +- board/freescale/t4qds/t4qds.c | 2 +- board/gdsys/405ep/405ep.c | 15 ++-- board/gdsys/405ex/405ex.c | 13 ++- board/gdsys/405ex/io64.c | 2 +- board/inka4x0/inkadiag.c | 8 +- board/lwmon/lwmon.c | 10 +- board/lwmon5/kbd.c | 10 +- board/lwmon5/lwmon5.c | 8 +- common/cmd_bdinfo.c | 6 +- common/cmd_immap.c | 2 +- drivers/i2c/fsl_i2c.c | 7 +- drivers/input/ps2ser.c | 2 +- drivers/mmc/fsl_esdhc.c | 6 +- drivers/net/mpc512x_fec.c | 2 +- drivers/net/mpc5xxx_fec.c | 9 +- drivers/qe/fdt.c | 12 +- drivers/qe/qe.c | 21 ++-- examples/standalone/mem_to_mem_idma2intr.c | 4 +- include/asm-generic/global_data.h | 102 ++++++++++++++++++++ 134 files changed, 812 insertions(+), 1031 deletions(-) create mode 100644 include/asm-generic/global_data.h
Signature · 1 line
1.7.7.3
PATCH v2 1/58 Add architecture-specific global data
We plan to move architecture-specific data into a separate structure so that we can make the rest of it common.
As a first step, create struct arch_global_data to hold these fields. Initially it is empty.
This patch applies to all archs at once. I can split it if this is really a pain.
---
Changes in v2:
- Rebase to master
arch/arm/include/asm/global_data.h | 6 ++++++ arch/avr32/include/asm/global_data.h | 5 +++++ arch/blackfin/include/asm/global_data.h | 5 +++++ arch/m68k/include/asm/global_data.h | 6 ++++++ arch/microblaze/include/asm/global_data.h | 6 ++++++ arch/mips/include/asm/global_data.h | 5 +++++ arch/nds32/include/asm/global_data.h | 6 ++++++ arch/nios2/include/asm/global_data.h | 5 +++++ arch/openrisc/include/asm/global_data.h | 6 ++++++ arch/powerpc/include/asm/global_data.h | 5 +++++ arch/sandbox/include/asm/global_data.h | 6 ++++++ arch/sh/include/asm/global_data.h | 5 +++++ arch/sparc/include/asm/global_data.h | 5 +++++ arch/x86/include/asm/global_data.h | 10 ++++++++-- 14 files changed, 79 insertions(+), 2 deletions(-)
arch/arm/include/asm/global_data.h +6 -0
@@ -23,6 +23,11 @@#ifndef __ASM_GBL_DATA_H#define __ASM_GBL_DATA_H + +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory which is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -82,6 +87,7 @@ typedef struct global_data {unsigned long post_log_res;/* success of POST test */ unsigned long post_init_f_time;/* When post_init_f started */ #endif +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/avr32/include/asm/global_data.h +5 -0
@@ -22,6 +22,10 @@#ifndef __ASM_GLOBAL_DATA_H__#define __ASM_GLOBAL_DATA_H__ +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory wich is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -48,6 +52,7 @@ typedef struct global_data {#endif void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/blackfin/include/asm/global_data.h +5 -0
@@ -30,6 +30,10 @@#include <asm/u-boot.h> +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory wich is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -57,6 +61,7 @@ typedef struct global_data {void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/m68k/include/asm/global_data.h +6 -0
@@ -23,6 +23,11 @@#ifndef __ASM_GBL_DATA_H#define __ASM_GBL_DATA_H + +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory wich is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -66,6 +71,7 @@ typedef struct global_data {#endif void **jt;/* Standalone app jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/microblaze/include/asm/global_data.h +6 -0
@@ -24,6 +24,11 @@#ifndef __ASM_GBL_DATA_H#define __ASM_GBL_DATA_H + +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory wich is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -46,6 +51,7 @@ typedef struct global_data {unsigned long fb_base;/* base address of frame buffer */ void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/mips/include/asm/global_data.h +5 -0
@@ -26,6 +26,10 @@#include <asm/regdef.h> +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory wich is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -59,6 +63,7 @@ typedef struct global_data {unsigned long env_valid;/* Checksum of Environment valid? */ void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/nds32/include/asm/global_data.h +6 -0
@@ -33,6 +33,11 @@#ifndef __ASM_GBL_DATA_H#define __ASM_GBL_DATA_H + +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory wich is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -63,6 +68,7 @@ typedef struct global_data {void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/nios2/include/asm/global_data.h +5 -0
@@ -23,6 +23,10 @@ #ifndef __ASM_NIOS2_GLOBALDATA_H_ #define __ASM_NIOS2_GLOBALDATA_H_ +/* Architecture-specific global data */ +struct arch_global_data { +}; + typedef struct global_data { bd_t *bd; unsigned long flags;
@@ -42,6 +46,7 @@ typedef struct global_data {#endif void **jt;/* Standalone app jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/openrisc/include/asm/global_data.h +6 -0
@@ -24,6 +24,11 @@#ifndef __ASM_GBL_DATA_H#define __ASM_GBL_DATA_H + +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory wich is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -44,6 +49,7 @@ typedef struct global_data {unsigned long fb_base;/* base address of frame buffer */ void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/powerpc/include/asm/global_data.h +5 -0
@@ -27,6 +27,10 @@#include "config.h" #include "asm/types.h" +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory wich is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -184,6 +188,7 @@ typedef struct global_data {#endif void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/sandbox/include/asm/global_data.h +6 -0
@@ -25,6 +25,11 @@#ifndef __ASM_GBL_DATA_H#define __ASM_GBL_DATA_H + +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory wich is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -46,6 +51,7 @@ typedef struct global_data {const void *fdt_blob;/* Our device tree, NULL if none */ void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/sh/include/asm/global_data.h +5 -0
@@ -27,6 +27,10 @@ #ifndef __ASM_SH_GLOBALDATA_H_ #define __ASM_SH_GLOBALDATA_H_ +/* Architecture-specific global data */ +struct arch_global_data { +}; + typedef struct global_data { bd_t *bd;
@@ -42,6 +46,7 @@ typedef struct global_dataunsigned long env_valid;/* Checksum of Environment valid */ void **jt;/* Standalone app jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/sparc/include/asm/global_data.h +5 -0
@@ -29,6 +29,10 @@#include "asm/types.h" +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory wich is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -74,6 +78,7 @@ typedef struct global_data {#endif void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ } gd_t;#include <asm-generic/global_data_flags.h>
arch/x86/include/asm/global_data.h +8 -2
@@ -23,6 +23,13 @@#ifndef __ASM_GBL_DATA_H#define __ASM_GBL_DATA_H + +#ifndef __ASSEMBLY__ + +/* Architecture-specific global data */ +struct arch_global_data { +}; +/* * The following data structure is placed in some memory wich is * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
@@ -31,13 +38,12 @@* up the memory controller so that we can use RAM). */ -#ifndef __ASSEMBLY__ -#include <asm/u-boot.h> typedef struct global_data gd_t ;struct global_data { +struct arch_global_data arch;/* architecture-specific data */ /* NOTE: gd_addr MUST be first member of struct global_data! */ gd_t *gd_addr;/* Location of Global Data */ bd_t *bd;
Signature · 1 line
1.7.7.3
PATCH v2 2/58 at91: Move at91 global data into arch_global_data
In reply to Simon GlassMove these fields into arch_global_data.
---
Changes in v2: None
arch/arm/cpu/arm920t/at91/clock.c | 24 +++++++++++++----------- arch/arm/cpu/arm926ejs/at91/clock.c | 30 ++++++++++++++++-------------- arch/arm/cpu/arm926ejs/at91/timer.c | 2 +- arch/arm/include/asm/arch-at91/clk.h | 12 ++++++------ arch/arm/include/asm/global_data.h | 18 +++++++++--------- 5 files changed, 45 insertions(+), 41 deletions(-)
arch/arm/cpu/arm920t/at91/clock.c +13 -11
@@ -29,11 +29,11 @@ static unsigned long at91_css_to_rate(unsigned long css)case AT91_PMC_MCKR_CSS_SLOW :return CONFIG_SYS_AT91_SLOW_CLOCK ;case AT91_PMC_MCKR_CSS_MAIN : -return gd->main_clk_rate_hz; +return gd->arch.main_clk_rate_hz;case AT91_PMC_MCKR_CSS_PLLA : -return gd->plla_rate_hz; +return gd->arch.plla_rate_hz;case AT91_PMC_MCKR_CSS_PLLB : -return gd->pllb_rate_hz; +return gd->arch.pllb_rate_hz; }return 0 ;
@@ -124,10 +124,10 @@ int at91_clock_init(unsigned long main_clock) main_clock = tmp * (CONFIG_SYS_AT91_SLOW_CLOCK / 16); }#endif - gd->main_clk_rate_hz = main_clock; + gd->arch.main_clk_rate_hz = main_clock;/* report if PLLA is more than mildly overclocked */ - gd->plla_rate_hz =at91_pll_rate (main_clock,readl (&pmc->pllar)); + gd->arch.plla_rate_hz =at91_pll_rate (main_clock,readl (&pmc->pllar));#ifdef CONFIG_USB_ATMEL /*
@@ -136,9 +136,10 @@ int at91_clock_init(unsigned long main_clock)* * REVISIT: assumes MCK doesn't derive from PLLB! */ - gd->at91_pllb_usb_init =at91_pll_calc (main_clock,48000000 *2 ) | + gd->arch.at91_pllb_usb_init =at91_pll_calc (main_clock,48000000 *2 ) |AT91_PMC_PLLBR_USBDIV_2 ; - gd->pllb_rate_hz =at91_pll_rate (main_clock, gd->at91_pllb_usb_init); + gd->arch.pllb_rate_hz =at91_pll_rate (main_clock, + gd->arch.at91_pllb_usb_init);#endif /*
@@ -146,13 +147,14 @@ int at91_clock_init(unsigned long main_clock)* For now, assume this parentage won't change. */ mckr =readl (&pmc->mckr); - gd->mck_rate_hz =at91_css_to_rate (mckr &AT91_PMC_MCKR_CSS_MASK ); - freq = gd->mck_rate_hz; + gd->arch.mck_rate_hz =at91_css_to_rate (mckr &AT91_PMC_MCKR_CSS_MASK ); + freq = gd->arch.mck_rate_hz; freq /= (1 << ((mckr &AT91_PMC_MCKR_PRES_MASK ) >>2 ));/* prescale */ /* mdiv */ - gd->mck_rate_hz = freq / (1 + ((mckr &AT91_PMC_MCKR_MDIV_MASK ) >>8 )); - gd->cpu_clk_rate_hz = freq; + gd->arch.mck_rate_hz = freq / + (1 + ((mckr &AT91_PMC_MCKR_MDIV_MASK ) >>8 )); + gd->arch.cpu_clk_rate_hz = freq;return 0 ; }
arch/arm/cpu/arm926ejs/at91/clock.c +16 -14
@@ -29,11 +29,11 @@ static unsigned long at91_css_to_rate(unsigned long css)case AT91_PMC_MCKR_CSS_SLOW :return CONFIG_SYS_AT91_SLOW_CLOCK ;case AT91_PMC_MCKR_CSS_MAIN : -return gd->main_clk_rate_hz; +return gd->arch.main_clk_rate_hz;case AT91_PMC_MCKR_CSS_PLLA : -return gd->plla_rate_hz; +return gd->arch.plla_rate_hz;case AT91_PMC_MCKR_CSS_PLLB : -return gd->pllb_rate_hz; +return gd->arch.pllb_rate_hz; }return 0 ;
@@ -132,10 +132,10 @@ int at91_clock_init(unsigned long main_clock) main_clock = tmp * (CONFIG_SYS_AT91_SLOW_CLOCK / 16); }#endif - gd->main_clk_rate_hz = main_clock; + gd->arch.main_clk_rate_hz = main_clock;/* report if PLLA is more than mildly overclocked */ - gd->plla_rate_hz =at91_pll_rate (main_clock,readl (&pmc->pllar)); + gd->arch.plla_rate_hz =at91_pll_rate (main_clock,readl (&pmc->pllar));#ifdef CONFIG_USB_ATMEL /*
@@ -144,9 +144,10 @@ int at91_clock_init(unsigned long main_clock)* * REVISIT: assumes MCK doesn't derive from PLLB! */ - gd->at91_pllb_usb_init =at91_pll_calc (main_clock,48000000 *2 ) | + gd->arch.at91_pllb_usb_init =at91_pll_calc (main_clock,48000000 *2 ) |AT91_PMC_PLLBR_USBDIV_2 ; - gd->pllb_rate_hz =at91_pll_rate (main_clock, gd->at91_pllb_usb_init); + gd->arch.pllb_rate_hz =at91_pll_rate (main_clock, + gd->arch.at91_pllb_usb_init);#endif /*
@@ -157,15 +158,15 @@ int at91_clock_init(unsigned long main_clock)#if defined(CONFIG_AT91SAM9G45 ) || defined(CONFIG_AT91SAM9M10G45 ) \ || defined(CONFIG_AT91SAM9X5 )/* plla divisor by 2 */ - gd->plla_rate_hz /= (1 << ((mckr &1 <<12 ) >>12 )); + gd->arch.plla_rate_hz /= (1 << ((mckr &1 <<12 ) >>12 ));#endif - gd->mck_rate_hz =at91_css_to_rate (mckr &AT91_PMC_MCKR_CSS_MASK ); - freq = gd->mck_rate_hz; + gd->arch.mck_rate_hz =at91_css_to_rate (mckr &AT91_PMC_MCKR_CSS_MASK ); + freq = gd->arch.mck_rate_hz; freq /= (1 << ((mckr &AT91_PMC_MCKR_PRES_MASK ) >>2 ));/* prescale */ #if defined(CONFIG_AT91SAM9G20 )/* mdiv ; (x >> 7) = ((x >> 8) * 2) */ - gd->mck_rate_hz = (mckr &AT91_PMC_MCKR_MDIV_MASK ) ? + gd->arch.mck_rate_hz = (mckr &AT91_PMC_MCKR_MDIV_MASK ) ? freq / ((mckr &AT91_PMC_MCKR_MDIV_MASK ) >>7 ) : freq;if (mckr &AT91_PMC_MCKR_MDIV_MASK ) freq /=2 ;/* processor clock division */
@@ -177,14 +178,15 @@ int at91_clock_init(unsigned long main_clock)* 2 <==> 4 * 3 <==> 3 */ - gd->mck_rate_hz = (mckr &AT91_PMC_MCKR_MDIV_MASK ) == + gd->arch.mck_rate_hz = (mckr &AT91_PMC_MCKR_MDIV_MASK ) == (AT91_PMC_MCKR_MDIV_2 |AT91_PMC_MCKR_MDIV_4 ) ? freq /3 : freq / (1 << ((mckr &AT91_PMC_MCKR_MDIV_MASK ) >>8 ));#else - gd->mck_rate_hz = freq / (1 << ((mckr &AT91_PMC_MCKR_MDIV_MASK ) >>8 )); + gd->arch.mck_rate_hz = freq / + (1 << ((mckr &AT91_PMC_MCKR_MDIV_MASK ) >>8 ));#endif - gd->cpu_clk_rate_hz = freq; + gd->arch.cpu_clk_rate_hz = freq;return 0 ; }
arch/arm/cpu/arm926ejs/at91/timer.c +1 -1
@@ -79,7 +79,7 @@ int timer_init(void)/* Enable PITC */ writel (TIMER_LOAD_VAL |AT91_PIT_MR_EN , &pit->mr); - gd->timer_rate_hz = gd->mck_rate_hz /16 ; + gd->timer_rate_hz = gd->arch.mck_rate_hz /16 ; gd->tbu = gd->tbl =0 ;return 0 ;
arch/arm/include/asm/arch-at91/clk.h +6 -6
@@ -31,37 +31,37 @@static inline unsigned long get_cpu_clk_rate (void ) {DECLARE_GLOBAL_DATA_PTR ; -return gd->cpu_clk_rate_hz; +return gd->arch.cpu_clk_rate_hz; }static inline unsigned long get_main_clk_rate (void ) {DECLARE_GLOBAL_DATA_PTR ; -return gd->main_clk_rate_hz; +return gd->arch.main_clk_rate_hz; }static inline unsigned long get_mck_clk_rate (void ) {DECLARE_GLOBAL_DATA_PTR ; -return gd->mck_rate_hz; +return gd->arch.mck_rate_hz; }static inline unsigned long get_plla_clk_rate (void ) {DECLARE_GLOBAL_DATA_PTR ; -return gd->plla_rate_hz; +return gd->arch.plla_rate_hz; }static inline unsigned long get_pllb_clk_rate (void ) {DECLARE_GLOBAL_DATA_PTR ; -return gd->pllb_rate_hz; +return gd->arch.pllb_rate_hz; }static inline u32 get_pllb_init (void ) {DECLARE_GLOBAL_DATA_PTR ; -return gd->at91_pllb_usb_init; +return gd->arch.at91_pllb_usb_init; }static inline unsigned long get_macb_pclk_rate (unsigned int dev_id)
arch/arm/include/asm/global_data.h +9 -9
@@ -26,6 +26,15 @@/* Architecture-specific global data */ struct arch_global_data { +#ifdef CONFIG_AT91FAMILY +/* "static data" needed by at91's clock.c */ +unsigned long cpu_clk_rate_hz; +unsigned long main_clk_rate_hz; +unsigned long mck_rate_hz; +unsigned long plla_rate_hz; +unsigned long pllb_rate_hz; +unsigned long at91_pllb_usb_init; +#endif };/*
@@ -50,15 +59,6 @@ typedef struct global_data {#ifdef CONFIG_FSL_ESDHC unsigned long sdhc_clk;#endif -#ifdef CONFIG_AT91FAMILY -/* "static data" needed by at91's clock.c */ -unsigned long cpu_clk_rate_hz; -unsigned long main_clk_rate_hz; -unsigned long mck_rate_hz; -unsigned long plla_rate_hz; -unsigned long pllb_rate_hz; -unsigned long at91_pllb_usb_init; -#endif #ifdef CONFIG_ARM /* "static data" needed by most of timer.c on ARM platforms */ unsigned long timer_rate_hz;
Signature · 1 line
1.7.7.3
PATCH v2 3/58 arm: Move timer_rate_hz into arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/arm/cpu/arm920t/a320/timer.c | 8 ++++---- arch/arm/cpu/arm920t/s3c24x0/timer.c | 4 ++-- arch/arm/cpu/arm926ejs/at91/timer.c | 8 ++++---- arch/arm/cpu/arm926ejs/davinci/timer.c | 9 +++++---- arch/arm/include/asm/global_data.h | 3 ++- 5 files changed, 17 insertions(+), 15 deletions(-)
arch/arm/cpu/arm920t/a320/timer.c +4 -4
@@ -31,14 +31,14 @@ DECLARE_GLOBAL_DATA_PTR;static inline unsigned long long tick_to_time (unsigned long long tick) { tick *=CONFIG_SYS_HZ ; -do_div (tick, gd->timer_rate_hz); +do_div (tick, gd->arch.timer_rate_hz);return tick; }static inline unsigned long long usec_to_tick (unsigned long long usec) { - usec *= gd->timer_rate_hz; + usec *= gd->arch.timer_rate_hz;do_div (usec,1000000 );return usec;
@@ -74,7 +74,7 @@ int timer_init(void) cr |=FTTMR010_TM3_ENABLE ;writel (cr, &tmr->cr); - gd->timer_rate_hz =TIMER_CLOCK ; + gd->arch.timer_rate_hz =TIMER_CLOCK ; gd->tbu = gd->tbl =0 ;return 0 ;
@@ -126,5 +126,5 @@ ulong get_timer(ulong base)*/ ulong get_tbclk (void ) { -return gd->timer_rate_hz; +return gd->arch.timer_rate_hz; }
arch/arm/cpu/arm920t/s3c24x0/timer.c +2 -2
@@ -52,7 +52,7 @@ int timer_init(void)* @33.25MHz and 15625 @ 50 MHz */ gd->tbu =get_PCLK () / (2 *16 *100 ); - gd->timer_rate_hz =get_PCLK () / (2 *16 ); + gd->arch.timer_rate_hz =get_PCLK () / (2 *16 ); }/* load value for 10 ms timeout */ writel (gd->tbu, &timers->tcntb4);
@@ -93,7 +93,7 @@ ulong get_timer_masked(void) {ulong tmr =get_ticks (); -return tmr / (gd->timer_rate_hz /CONFIG_SYS_HZ ); +return tmr / (gd->arch.timer_rate_hz /CONFIG_SYS_HZ ); }void udelay_masked (unsigned long usec)
arch/arm/cpu/arm926ejs/at91/timer.c +4 -4
@@ -52,14 +52,14 @@ DECLARE_GLOBAL_DATA_PTR;static inline unsigned long long tick_to_time (unsigned long long tick) { tick *=CONFIG_SYS_HZ ; -do_div (tick, gd->timer_rate_hz); +do_div (tick, gd->arch.timer_rate_hz);return tick; }static inline unsigned long long usec_to_tick (unsigned long long usec) { - usec *= gd->timer_rate_hz; + usec *= gd->arch.timer_rate_hz;do_div (usec,1000000 );return usec;
@@ -79,7 +79,7 @@ int timer_init(void)/* Enable PITC */ writel (TIMER_LOAD_VAL |AT91_PIT_MR_EN , &pit->mr); - gd->timer_rate_hz = gd->arch.mck_rate_hz /16 ; + gd->arch.timer_rate_hz = gd->arch.mck_rate_hz /16 ; gd->tbu = gd->tbl =0 ;return 0 ;
@@ -132,5 +132,5 @@ ulong get_timer(ulong base)*/ ulong get_tbclk (void ) { -return gd->timer_rate_hz; +return gd->arch.timer_rate_hz; }
arch/arm/cpu/arm926ejs/davinci/timer.c +5 -4
@@ -60,7 +60,7 @@ int timer_init(void)writel (0x0 , &timer->tim34);writel (TIMER_LOAD_VAL , &timer->prd34);writel (2 <<22 , &timer->tcr); - gd->timer_rate_hz =CONFIG_SYS_HZ_CLOCK /TIM_CLK_DIV ; + gd->arch.timer_rate_hz =CONFIG_SYS_HZ_CLOCK /TIM_CLK_DIV ; gd->timer_reset_value =0 ;return (0 );
@@ -87,14 +87,15 @@ ulong get_timer(ulong base) timer_diff =get_ticks () - gd->timer_reset_value; -return lldiv (timer_diff, (gd->timer_rate_hz /CONFIG_SYS_HZ )) - base; +return lldiv (timer_diff, + (gd->arch.timer_rate_hz /CONFIG_SYS_HZ )) - base; }void __udelay (unsigned long usec) {unsigned long long endtime; - endtime =lldiv ((unsigned long long )usec * gd->timer_rate_hz, + endtime =lldiv ((unsigned long long )usec * gd->arch.timer_rate_hz,1000000UL ); endtime +=get_ticks ();
@@ -108,7 +109,7 @@ void __udelay(unsigned long usec)*/ ulong get_tbclk (void ) { -return gd->timer_rate_hz; +return gd->arch.timer_rate_hz; }#ifdef CONFIG_HW_WATCHDOG
arch/arm/include/asm/global_data.h +2 -1
@@ -35,6 +35,8 @@ struct arch_global_data {unsigned long pllb_rate_hz;unsigned long at91_pllb_usb_init;#endif +/* "static data" needed by most of timer.c on ARM platforms */ +unsigned long timer_rate_hz; };/*
@@ -61,7 +63,6 @@ typedef struct global_data {#endif #ifdef CONFIG_ARM /* "static data" needed by most of timer.c on ARM platforms */ -unsigned long timer_rate_hz;unsigned long tbl;unsigned long tbu;unsigned long long timer_reset_value;
Signature · 1 line
1.7.7.3
PATCH v2 4/58 arm: Move tbu to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/arm/cpu/arm920t/a320/timer.c | 6 +++--- arch/arm/cpu/arm920t/s3c24x0/timer.c | 14 +++++++------- arch/arm/cpu/arm926ejs/armada100/timer.c | 12 ++++++------ arch/arm/cpu/arm926ejs/at91/timer.c | 6 +++--- arch/arm/cpu/arm926ejs/davinci/timer.c | 4 ++-- arch/arm/cpu/arm926ejs/pantheon/timer.c | 12 ++++++------ arch/arm/cpu/armv7/u8500/timer.c | 2 +- arch/arm/include/asm/global_data.h | 2 +- 8 files changed, 29 insertions(+), 29 deletions(-)
arch/arm/cpu/arm920t/a320/timer.c +3 -3
@@ -75,7 +75,7 @@ int timer_init(void)writel (cr, &tmr->cr); gd->arch.timer_rate_hz =TIMER_CLOCK ; - gd->tbu = gd->tbl =0 ; + gd->arch.tbu = gd->tbl =0 ;return 0 ; }
@@ -90,9 +90,9 @@ unsigned long long get_ticks(void)/* increment tbu if tbl has rolled over */ if (now < gd->tbl) - gd->tbu++; + gd->arch.tbu++; gd->tbl = now; -return (((unsigned long long )gd->tbu) <<32 ) | gd->tbl; +return (((unsigned long long )gd->arch.tbu) <<32 ) | gd->tbl; }void __udelay (unsigned long usec)
arch/arm/cpu/arm920t/s3c24x0/timer.c +7 -7
@@ -45,17 +45,17 @@ int timer_init(void)/* use PWM Timer 4 because it has no output */ /* prescaler for Timer 4 is 16 */ writel (0x0f00 , &timers->tcfg0); -if (gd->tbu ==0 ) { +if (gd->arch.tbu ==0 ) {/* * for 10 ms clock period @ PCLK with 4 bit divider = 1/2 * (default) and prescaler = 16. Should be 10390 * @33.25MHz and 15625 @ 50 MHz */ - gd->tbu =get_PCLK () / (2 *16 *100 ); + gd->arch.tbu =get_PCLK () / (2 *16 *100 ); gd->arch.timer_rate_hz =get_PCLK () / (2 *16 ); }/* load value for 10 ms timeout */ -writel (gd->tbu, &timers->tcntb4); +writel (gd->arch.tbu, &timers->tcntb4);/* auto load, manual update of timer 4 */ tmr = (readl (&timers->tcon) & ~0x0700000 ) |0x0600000 ;writel (tmr, &timers->tcon);
@@ -82,7 +82,7 @@ void __udelay (unsigned long usec)ulong start =get_ticks (); tmo = usec /1000 ; - tmo *= (gd->tbu *100 ); + tmo *= (gd->arch.tbu *100 ); tmo /=1000 ;while ((ulong) (get_ticks () - start) < tmo)
@@ -104,10 +104,10 @@ void udelay_masked(unsigned long usec)if (usec >=1000 ) { tmo = usec /1000 ; - tmo *= (gd->tbu *100 ); + tmo *= (gd->arch.tbu *100 ); tmo /=1000 ; }else { - tmo = usec * (gd->tbu *100 ); + tmo = usec * (gd->arch.tbu *100 ); tmo /= (1000 *1000 ); }
@@ -133,7 +133,7 @@ unsigned long long get_ticks(void) gd->tbl += gd->lastinc - now; }else {/* we have an overflow ... */ - gd->tbl += gd->lastinc + gd->tbu - now; + gd->tbl += gd->lastinc + gd->arch.tbu - now; } gd->lastinc = now;
arch/arm/cpu/arm926ejs/armada100/timer.c +6 -6
@@ -61,7 +61,7 @@ struct armd1tmr_registers {#define COUNT_RD_REQ 0x1DECLARE_GLOBAL_DATA_PTR ; -/* Using gd->tbu from timestamp and gd->tbl for lastdec */ +/* Using gd->arch.tbu from timestamp and gd->tbl for lastdec */ /* For preventing risk of instability in reading counter value, * first set read request to register cvwr and then read same
@@ -84,14 +84,14 @@ ulong get_timer_masked(void)if (now >= gd->tbl) {/* normal mode */ - gd->tbu += now - gd->tbl; + gd->arch.tbu += now - gd->tbl; }else {/* we have an overflow ... */ - gd->tbu += now +TIMER_LOAD_VAL - gd->tbl; + gd->arch.tbu += now +TIMER_LOAD_VAL - gd->tbl; } gd->tbl = now; -return gd->tbu; +return gd->arch.tbu; }ulong get_timer (ulong base)
@@ -135,9 +135,9 @@ int timer_init(void)/* Enable timer 0 */ writel (0x1 , &armd1timers->cer); -/* init the gd->tbu and gd->tbl value */ +/* init the gd->arch.tbu and gd->tbl value */ gd->tbl =read_timer (); - gd->tbu =0 ; + gd->arch.tbu =0 ;return 0 ; }
arch/arm/cpu/arm926ejs/at91/timer.c +3 -3
@@ -80,7 +80,7 @@ int timer_init(void)writel (TIMER_LOAD_VAL |AT91_PIT_MR_EN , &pit->mr); gd->arch.timer_rate_hz = gd->arch.mck_rate_hz /16 ; - gd->tbu = gd->tbl =0 ; + gd->arch.tbu = gd->tbl =0 ;return 0 ; }
@@ -96,9 +96,9 @@ unsigned long long get_ticks(void)/* increment tbu if tbl has rolled over */ if (now < gd->tbl) - gd->tbu++; + gd->arch.tbu++; gd->tbl = now; -return (((unsigned long long )gd->tbu) <<32 ) | gd->tbl; +return (((unsigned long long )gd->arch.tbu) <<32 ) | gd->tbl; }void __udelay (unsigned long usec)
arch/arm/cpu/arm926ejs/davinci/timer.c +2 -2
@@ -75,10 +75,10 @@ unsigned long long get_ticks(void)/* increment tbu if tbl has rolled over */ if (now < gd->tbl) - gd->tbu++; + gd->arch.tbu++; gd->tbl = now; -return (((unsigned long long )gd->tbu) <<32 ) | gd->tbl; +return (((unsigned long long )gd->arch.tbu) <<32 ) | gd->tbl; }ulong get_timer (ulong base)
arch/arm/cpu/arm926ejs/pantheon/timer.c +6 -6
@@ -60,7 +60,7 @@ struct panthtmr_registers {#define COUNT_RD_REQ 0x1DECLARE_GLOBAL_DATA_PTR ; -/* Using gd->tbu from timestamp and gd->tbl for lastdec */ +/* Using gd->arch.tbu from timestamp and gd->tbl for lastdec */ /* * For preventing risk of instability in reading counter value,
@@ -92,14 +92,14 @@ ulong get_timer_masked(void)if (now >= gd->tbl) {/* normal mode */ - gd->tbu += now - gd->tbl; + gd->arch.tbu += now - gd->tbl; }else {/* we have an overflow ... */ - gd->tbu += now +TIMER_LOAD_VAL - gd->tbl; + gd->arch.tbu += now +TIMER_LOAD_VAL - gd->tbl; } gd->tbl = now; -return gd->tbu; +return gd->arch.tbu; }ulong get_timer (ulong base)
@@ -144,9 +144,9 @@ int timer_init(void)/* Enable timer 0 */ writel (0x1 , &panthtimers->cer); -/* init the gd->tbu and gd->tbl value */ +/* init the gd->arch.tbu and gd->tbl value */ gd->tbl =read_timer (); - gd->tbu =0 ; + gd->arch.tbu =0 ;return 0 ; }
arch/arm/cpu/armv7/u8500/timer.c +1 -1
@@ -132,7 +132,7 @@ ulong get_timer(ulong base)/* * Emulation of Power architecture long long timebase. * -* TODO: Support gd->tbu for real long long timebase. +* TODO: Support gd->arch.tbu for real long long timebase. */ unsigned long long get_ticks (void ) {
arch/arm/include/asm/global_data.h +1 -1
@@ -37,6 +37,7 @@ struct arch_global_data {#endif /* "static data" needed by most of timer.c on ARM platforms */ unsigned long timer_rate_hz; +unsigned long tbu; };/*
@@ -64,7 +65,6 @@ typedef struct global_data {#ifdef CONFIG_ARM /* "static data" needed by most of timer.c on ARM platforms */ unsigned long tbl; -unsigned long tbu;unsigned long long timer_reset_value;unsigned long lastinc;#endif
Signature · 1 line
1.7.7.3
PATCH v2 5/58 arm: Move tbl to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/arm/cpu/arm1136/mx31/timer.c | 6 +++--- arch/arm/cpu/arm1136/mx35/timer.c | 2 +- arch/arm/cpu/arm1136/omap24xx/timer.c | 17 ++++++++++------- arch/arm/cpu/arm920t/a320/timer.c | 8 ++++---- arch/arm/cpu/arm920t/at91/timer.c | 8 ++++---- arch/arm/cpu/arm920t/s3c24x0/timer.c | 8 ++++---- arch/arm/cpu/arm926ejs/armada100/timer.c | 14 +++++++------- arch/arm/cpu/arm926ejs/at91/timer.c | 8 ++++---- arch/arm/cpu/arm926ejs/davinci/timer.c | 6 +++--- arch/arm/cpu/arm926ejs/kirkwood/timer.c | 2 +- arch/arm/cpu/arm926ejs/mb86r0x/timer.c | 2 +- arch/arm/cpu/arm926ejs/mx25/timer.c | 2 +- arch/arm/cpu/arm926ejs/mx27/timer.c | 2 +- arch/arm/cpu/arm926ejs/mxs/timer.c | 2 +- arch/arm/cpu/arm926ejs/omap/timer.c | 2 +- arch/arm/cpu/arm926ejs/orion5x/timer.c | 2 +- arch/arm/cpu/arm926ejs/pantheon/timer.c | 14 +++++++------- arch/arm/cpu/arm926ejs/spear/timer.c | 2 +- arch/arm/cpu/arm926ejs/versatile/timer.c | 2 +- arch/arm/cpu/armv7/omap-common/timer.c | 15 ++++++++------- arch/arm/cpu/armv7/s5p-common/timer.c | 8 ++++---- arch/arm/cpu/armv7/socfpga/timer.c | 8 ++++---- arch/arm/cpu/armv7/u8500/timer.c | 12 +++++++----- arch/arm/cpu/armv7/zynq/timer.c | 8 ++++---- arch/arm/cpu/pxa/timer.c | 2 +- arch/arm/cpu/tegra-common/timer.c | 6 +++--- arch/arm/imx-common/timer.c | 2 +- arch/arm/include/asm/global_data.h | 2 +- arch/mips/cpu/xburst/timer.c | 12 ++++++------ 29 files changed, 95 insertions(+), 89 deletions(-)
arch/arm/cpu/arm1136/mx31/timer.c +3 -3
@@ -117,11 +117,11 @@ unsigned long long get_ticks(void)if (now >= gd->lastinc)/* normal mode (non roll) */ /* move stamp forward with absolut diff ticks */ - gd->tbl += (now - gd->lastinc); + gd->arch.tbl += (now - gd->lastinc);else /* we have rollover of incrementer */ - gd->tbl += (0xFFFFFFFF - gd->lastinc) + now; + gd->arch.tbl += (0xFFFFFFFF - gd->lastinc) + now; gd->lastinc = now; -return gd->tbl; +return gd->arch.tbl; }ulong get_timer_masked (void )
arch/arm/cpu/arm1136/mx35/timer.c +1 -1
@@ -32,7 +32,7 @@DECLARE_GLOBAL_DATA_PTR ; -#define timestamp (gd->tbl) +#define timestamp (gd->arch.tbl)#define lastinc (gd->lastinc)/* General purpose timers bitfields */
arch/arm/cpu/arm1136/omap24xx/timer.c +10 -7
@@ -52,7 +52,7 @@ int timer_init (void)/* reset time */ gd->lastinc =READ_TIMER ;/* capture current incrementer value */ - gd->tbl =0 ;/* start "advancing" time stamp */ + gd->arch.tbl =0 ;/* start "advancing" time stamp */ return (0 ); }
@@ -82,7 +82,7 @@ void __udelay (unsigned long usec)if ((tmo + tmp +1 ) < tmp) {/* if setting this forward will roll */ /* time stamp, then reset time */ gd->lastinc =READ_TIMER ;/* capture incrementer value */ - gd->tbl =0 ;/* start time stamp */ + gd->arch.tbl =0 ;/* start time stamp */ }else { tmo += tmp;/* else, set advancing stamp wake up time */ }
@@ -94,12 +94,15 @@ ulong get_timer_masked (void) {ulong now =READ_TIMER ;/* current tick value */ -if (now >= gd->lastinc)/* normal mode (non roll) */ - gd->tbl += (now - gd->lastinc);/* move stamp fordward with absoulte diff ticks */ -else /* we have rollover of incrementer */ - gd->tbl += (0xFFFFFFFF - gd->lastinc) + now; +if (now >= gd->lastinc) {/* normal mode (non roll) */ +/* move stamp fordward with absoulte diff ticks */ + gd->arch.tbl += (now - gd->lastinc); + }else { +/* we have rollover of incrementer */ + gd->arch.tbl += (0xFFFFFFFF - gd->lastinc) + now; + } gd->lastinc = now; -return gd->tbl; +return gd->arch.tbl; }/* waits specified delay value and resets timestamp */
arch/arm/cpu/arm920t/a320/timer.c +4 -4
@@ -75,7 +75,7 @@ int timer_init(void)writel (cr, &tmr->cr); gd->arch.timer_rate_hz =TIMER_CLOCK ; - gd->arch.tbu = gd->tbl =0 ; + gd->arch.tbu = gd->arch.tbl =0 ;return 0 ; }
@@ -89,10 +89,10 @@ unsigned long long get_ticks(void)ulong now =TIMER_LOAD_VAL -readl (&tmr->timer3_counter);/* increment tbu if tbl has rolled over */ -if (now < gd->tbl) +if (now < gd->arch.tbl) gd->arch.tbu++; - gd->tbl = now; -return (((unsigned long long )gd->arch.tbu) <<32 ) | gd->tbl; + gd->arch.tbl = now; +return (((unsigned long long )gd->arch.tbu) <<32 ) | gd->arch.tbl; }void __udelay (unsigned long usec)
arch/arm/cpu/arm920t/at91/timer.c +4 -4
@@ -64,7 +64,7 @@ int timer_init(void)writel (AT91_TC_CCR_SWTRG |AT91_TC_CCR_CLKEN , &tc->tc[0 ].ccr); gd->lastinc =0 ; - gd->tbl =0 ; + gd->arch.tbl =0 ;return 0 ; }
@@ -91,14 +91,14 @@ ulong get_timer_raw(void)if (now >= gd->lastinc) {/* normal mode */ - gd->tbl += now - gd->lastinc; + gd->arch.tbl += now - gd->lastinc; }else {/* we have an overflow ... */ - gd->tbl += now +TIMER_LOAD_VAL - gd->lastinc; + gd->arch.tbl += now +TIMER_LOAD_VAL - gd->lastinc; } gd->lastinc = now; -return gd->tbl; +return gd->arch.tbl; }ulong get_timer_masked (void )
arch/arm/cpu/arm920t/s3c24x0/timer.c +4 -4
@@ -63,7 +63,7 @@ int timer_init(void) tmr = (tmr & ~0x0700000 ) |0x0500000 ;writel (tmr, &timers->tcon); gd->lastinc =0 ; - gd->tbl =0 ; + gd->arch.tbl =0 ;return 0 ; }
@@ -130,14 +130,14 @@ unsigned long long get_ticks(void)if (gd->lastinc >= now) {/* normal mode */ - gd->tbl += gd->lastinc - now; + gd->arch.tbl += gd->lastinc - now; }else {/* we have an overflow ... */ - gd->tbl += gd->lastinc + gd->arch.tbu - now; + gd->arch.tbl += gd->lastinc + gd->arch.tbu - now; } gd->lastinc = now; -return gd->tbl; +return gd->arch.tbl; }/*
arch/arm/cpu/arm926ejs/armada100/timer.c +7 -7
@@ -61,7 +61,7 @@ struct armd1tmr_registers {#define COUNT_RD_REQ 0x1DECLARE_GLOBAL_DATA_PTR ; -/* Using gd->arch.tbu from timestamp and gd->tbl for lastdec */ +/* Using gd->arch.tbu from timestamp and gd->arch.tbl for lastdec */ /* For preventing risk of instability in reading counter value, * first set read request to register cvwr and then read same
@@ -82,14 +82,14 @@ ulong get_timer_masked(void) {ulong now =read_timer (); -if (now >= gd->tbl) { +if (now >= gd->arch.tbl) {/* normal mode */ - gd->arch.tbu += now - gd->tbl; + gd->arch.tbu += now - gd->arch.tbl; }else {/* we have an overflow ... */ - gd->arch.tbu += now +TIMER_LOAD_VAL - gd->tbl; + gd->arch.tbu += now +TIMER_LOAD_VAL - gd->arch.tbl; } - gd->tbl = now; + gd->arch.tbl = now;return gd->arch.tbu; }
@@ -135,8 +135,8 @@ int timer_init(void)/* Enable timer 0 */ writel (0x1 , &armd1timers->cer); -/* init the gd->arch.tbu and gd->tbl value */ - gd->tbl =read_timer (); +/* init the gd->arch.tbu and gd->arch.tbl value */ + gd->arch.tbl =read_timer (); gd->arch.tbu =0 ;return 0 ;
arch/arm/cpu/arm926ejs/at91/timer.c +4 -4
@@ -80,7 +80,7 @@ int timer_init(void)writel (TIMER_LOAD_VAL |AT91_PIT_MR_EN , &pit->mr); gd->arch.timer_rate_hz = gd->arch.mck_rate_hz /16 ; - gd->arch.tbu = gd->tbl =0 ; + gd->arch.tbu = gd->arch.tbl =0 ;return 0 ; }
@@ -95,10 +95,10 @@ unsigned long long get_ticks(void)ulong now =readl (&pit->piir);/* increment tbu if tbl has rolled over */ -if (now < gd->tbl) +if (now < gd->arch.tbl) gd->arch.tbu++; - gd->tbl = now; -return (((unsigned long long )gd->arch.tbu) <<32 ) | gd->tbl; + gd->arch.tbl = now; +return (((unsigned long long )gd->arch.tbu) <<32 ) | gd->arch.tbl; }void __udelay (unsigned long usec)
arch/arm/cpu/arm926ejs/davinci/timer.c +3 -3
@@ -74,11 +74,11 @@ unsigned long long get_ticks(void)unsigned long now =readl (&timer->tim34);/* increment tbu if tbl has rolled over */ -if (now < gd->tbl) +if (now < gd->arch.tbl) gd->arch.tbu++; - gd->tbl = now; + gd->arch.tbl = now; -return (((unsigned long long )gd->arch.tbu) <<32 ) | gd->tbl; +return (((unsigned long long )gd->arch.tbu) <<32 ) | gd->arch.tbl; }ulong get_timer (ulong base)
arch/arm/cpu/arm926ejs/kirkwood/timer.c +1 -1
@@ -86,7 +86,7 @@ struct kwtmr_registers *kwtmr_regs = (struct kwtmr_registers *)KW_TIMER_BASE;DECLARE_GLOBAL_DATA_PTR ; -#define timestamp gd->tbl +#define timestamp gd->arch.tbl#define lastdec gd->lastinculong get_timer_masked (void )
arch/arm/cpu/arm926ejs/mb86r0x/timer.c +1 -1
@@ -35,7 +35,7 @@DECLARE_GLOBAL_DATA_PTR ; -#define timestamp gd->tbl +#define timestamp gd->arch.tbl#define lastdec gd->lastincstatic inline unsigned long long tick_to_time (unsigned long long tick)
arch/arm/cpu/arm926ejs/mx25/timer.c +1 -1
@@ -44,7 +44,7 @@DECLARE_GLOBAL_DATA_PTR ; -#define timestamp (gd->tbl) +#define timestamp (gd->arch.tbl)#define lastinc (gd->lastinc)/*
arch/arm/cpu/arm926ejs/mx27/timer.c +1 -1
@@ -45,7 +45,7 @@DECLARE_GLOBAL_DATA_PTR ; -#define timestamp (gd->tbl) +#define timestamp (gd->arch.tbl)#define lastinc (gd->lastinc)/*
arch/arm/cpu/arm926ejs/mxs/timer.c +1 -1
@@ -36,7 +36,7 @@DECLARE_GLOBAL_DATA_PTR ; -#define timestamp (gd->tbl) +#define timestamp (gd->arch.tbl)#define lastdec (gd->lastinc)/*
arch/arm/cpu/arm926ejs/omap/timer.c +1 -1
@@ -44,7 +44,7 @@DECLARE_GLOBAL_DATA_PTR ; -#define timestamp gd->tbl +#define timestamp gd->arch.tbl#define lastdec gd->lastincint timer_init (void )
arch/arm/cpu/arm926ejs/orion5x/timer.c +1 -1
@@ -92,7 +92,7 @@ static inline ulong read_timer(void)DECLARE_GLOBAL_DATA_PTR ; -#define timestamp gd->tbl +#define timestamp gd->arch.tbl#define lastdec gd->lastinculong get_timer_masked (void )
arch/arm/cpu/arm926ejs/pantheon/timer.c +7 -7
@@ -60,7 +60,7 @@ struct panthtmr_registers {#define COUNT_RD_REQ 0x1DECLARE_GLOBAL_DATA_PTR ; -/* Using gd->arch.tbu from timestamp and gd->tbl for lastdec */ +/* Using gd->arch.tbu from timestamp and gd->arch.tbl for lastdec */ /* * For preventing risk of instability in reading counter value,
@@ -90,14 +90,14 @@ ulong get_timer_masked(void) {ulong now =read_timer (); -if (now >= gd->tbl) { +if (now >= gd->arch.tbl) {/* normal mode */ - gd->arch.tbu += now - gd->tbl; + gd->arch.tbu += now - gd->arch.tbl; }else {/* we have an overflow ... */ - gd->arch.tbu += now +TIMER_LOAD_VAL - gd->tbl; + gd->arch.tbu += now +TIMER_LOAD_VAL - gd->arch.tbl; } - gd->tbl = now; + gd->arch.tbl = now;return gd->arch.tbu; }
@@ -144,8 +144,8 @@ int timer_init(void)/* Enable timer 0 */ writel (0x1 , &panthtimers->cer); -/* init the gd->arch.tbu and gd->tbl value */ - gd->tbl =read_timer (); +/* init the gd->arch.tbu and gd->arch.tbl value */ + gd->arch.tbl =read_timer (); gd->arch.tbu =0 ;return 0 ;
arch/arm/cpu/arm926ejs/spear/timer.c +1 -1
@@ -38,7 +38,7 @@ static struct misc_regs *const misc_regs_p =DECLARE_GLOBAL_DATA_PTR ; -#define timestamp gd->tbl +#define timestamp gd->arch.tbl#define lastdec gd->lastincint timer_init (void )
arch/arm/cpu/arm926ejs/versatile/timer.c +1 -1
@@ -44,7 +44,7 @@DECLARE_GLOBAL_DATA_PTR ; -#define timestamp gd->tbl +#define timestamp gd->arch.tbl#define lastdec gd->lastinc#define TIMER_ENABLE (1 << 7)
arch/arm/cpu/armv7/omap-common/timer.c +8 -7
@@ -57,7 +57,7 @@ int timer_init(void)/* reset time, capture current incrementer value time */ gd->lastinc =readl (&timer_base->tcrr) / (TIMER_CLOCK /CONFIG_SYS_HZ ); - gd->tbl =0 ;/* start "advancing" time stamp from 0 */ + gd->arch.tbl =0 ;/* start "advancing" time stamp from 0 */ return 0 ; }
@@ -91,14 +91,15 @@ ulong get_timer_masked(void)/* current tick value */ ulong now =readl (&timer_base->tcrr) / (TIMER_CLOCK /CONFIG_SYS_HZ ); -if (now >= gd->lastinc)/* normal mode (non roll) */ +if (now >= gd->lastinc) {/* normal mode (non roll) */ /* move stamp fordward with absoulte diff ticks */ - gd->tbl += (now - gd->lastinc); -else /* we have rollover of incrementer */ - gd->tbl += ((TIMER_LOAD_VAL / (TIMER_CLOCK /CONFIG_SYS_HZ )) - - gd->lastinc) + now; + gd->arch.tbl += (now - gd->lastinc); + }else {/* we have rollover of incrementer */ + gd->arch.tbl += ((TIMER_LOAD_VAL / (TIMER_CLOCK / +CONFIG_SYS_HZ )) - gd->lastinc) + now; + } gd->lastinc = now; -return gd->tbl; +return gd->arch.tbl; }/*
arch/arm/cpu/armv7/s5p-common/timer.c +4 -4
@@ -106,7 +106,7 @@ void reset_timer_masked(void)/* reset time */ gd->lastinc =readl (&timer->tcnto4); - gd->tbl =0 ; + gd->arch.tbl =0 ; }unsigned long get_timer_masked (void )
@@ -124,13 +124,13 @@ unsigned long get_current_tick(void)unsigned long count_value =readl (&timer->tcntb4);if (gd->lastinc >= now) - gd->tbl += gd->lastinc - now; + gd->arch.tbl += gd->lastinc - now;else - gd->tbl += gd->lastinc + count_value - now; + gd->arch.tbl += gd->lastinc + count_value - now; gd->lastinc = now; -return gd->tbl; +return gd->arch.tbl; }/*
arch/arm/cpu/armv7/socfpga/timer.c +4 -4
@@ -83,13 +83,13 @@ ulong get_timer_masked(void)if (gd->lastinc >= now) {/* normal mode (non roll) */ /* move stamp forward with absolute diff ticks */ - gd->tbl += gd->lastinc - now; + gd->arch.tbl += gd->lastinc - now; }else {/* we have overflow of the count down timer */ - gd->tbl +=TIMER_LOAD_VAL - gd->lastinc + now; + gd->arch.tbl +=TIMER_LOAD_VAL - gd->lastinc + now; } gd->lastinc = now; -return gd->tbl; +return gd->arch.tbl; }/*
@@ -100,5 +100,5 @@ void reset_timer(void)/* capture current decrementer value time */ gd->lastinc =read_timer () / (CONFIG_TIMER_CLOCK_KHZ /CONFIG_SYS_HZ );/* start "advancing" time stamp from 0 */ - gd->tbl =0 ; + gd->arch.tbl =0 ; }
arch/arm/cpu/armv7/u8500/timer.c +7 -5
@@ -100,12 +100,14 @@ ulong get_timer_masked(void)/* current tick value */ ulong now =TICKS_TO_HZ (READ_TIMER ()); -if (now >= gd->lastinc)/* normal (non rollover) */ - gd->tbl += (now - gd->lastinc); -else /* rollover */ - gd->tbl += (TICKS_TO_HZ (TIMER_LOAD_VAL ) - gd->lastinc) + now; +if (now >= gd->lastinc) {/* normal (non rollover) */ + gd->arch.tbl += (now - gd->lastinc); + }else {/* rollover */ + gd->arch.tbl += (TICKS_TO_HZ (TIMER_LOAD_VAL ) - gd->lastinc) + + now; + } gd->lastinc = now; -return gd->tbl; +return gd->arch.tbl; }/* Delay x useconds */
arch/arm/cpu/armv7/zynq/timer.c +4 -4
@@ -85,7 +85,7 @@ int timer_init(void)/* Reset time */ gd->lastinc =readl (&timer_base->counter) / (TIMER_TICK_HZ /CONFIG_SYS_HZ ); - gd->tbl =0 ; + gd->arch.tbl =0 ;return 0 ; }
@@ -102,14 +102,14 @@ ulong get_timer_masked(void)if (gd->lastinc >= now) {/* Normal mode */ - gd->tbl += gd->lastinc - now; + gd->arch.tbl += gd->lastinc - now; }else {/* We have an overflow ... */ - gd->tbl += gd->lastinc +TIMER_LOAD_VAL - now; + gd->arch.tbl += gd->lastinc +TIMER_LOAD_VAL - now; } gd->lastinc = now; -return gd->tbl; +return gd->arch.tbl; }void __udelay (unsigned long usec)
arch/arm/cpu/pxa/timer.c +1 -1
@@ -31,7 +31,7 @@ DECLARE_GLOBAL_DATA_PTR;#define TIMER_LOAD_VAL 0xffffffff -#define timestamp (gd->tbl) +#define timestamp (gd->arch.tbl)#define lastinc (gd->lastinc)#if defined(CONFIG_CPU_PXA27X ) || defined(CONFIG_CPU_MONAHANS )
arch/arm/cpu/tegra-common/timer.c +3 -3
@@ -77,12 +77,12 @@ ulong get_timer_masked(void)if (now >= gd->lastinc)/* normal mode (non roll) */ /* move stamp forward with absolute diff ticks */ - gd->tbl += (now - gd->lastinc); + gd->arch.tbl += (now - gd->lastinc);else /* we have rollover of incrementer */ - gd->tbl += ((TIMER_LOAD_VAL / (TIMER_CLK /CONFIG_SYS_HZ )) + gd->arch.tbl += ((TIMER_LOAD_VAL / (TIMER_CLK /CONFIG_SYS_HZ )) - gd->lastinc) + now; gd->lastinc = now; -return gd->tbl; +return gd->arch.tbl; }/*
arch/arm/imx-common/timer.c +1 -1
@@ -48,7 +48,7 @@ static struct mxc_gpt *cur_gpt = (struct mxc_gpt *)GPT1_BASE_ADDR;DECLARE_GLOBAL_DATA_PTR ; -#define timestamp (gd->tbl) +#define timestamp (gd->arch.tbl)#define lastinc (gd->lastinc)static inline unsigned long long tick_to_time (unsigned long long tick)
arch/arm/include/asm/global_data.h +1 -1
@@ -38,6 +38,7 @@ struct arch_global_data {/* "static data" needed by most of timer.c on ARM platforms */ unsigned long timer_rate_hz;unsigned long tbu; +unsigned long tbl; };/*
@@ -64,7 +65,6 @@ typedef struct global_data {#endif #ifdef CONFIG_ARM /* "static data" needed by most of timer.c on ARM platforms */ -unsigned long tbl;unsigned long long timer_reset_value;unsigned long lastinc;#endif
arch/mips/cpu/xburst/timer.c +6 -6
@@ -35,7 +35,7 @@ void reset_timer_masked(void) {/* reset time */ gd->lastinc =readl (&tcu->tcnt0); - gd->tbl =0 ; + gd->arch.tbl =0 ; }ulong get_timer_masked (void )
@@ -43,15 +43,15 @@ ulong get_timer_masked(void)ulong now =readl (&tcu->tcnt0);if (gd->lastinc <= now) - gd->tbl += now - gd->lastinc;/* normal mode */ + gd->arch.tbl += now - gd->lastinc;/* normal mode */ else {/* we have an overflow ... */ - gd->tbl +=TIMER_FDATA + now - gd->lastinc; + gd->arch.tbl +=TIMER_FDATA + now - gd->lastinc; } gd->lastinc = now; -return gd->tbl; +return gd->arch.tbl; }void udelay_masked (unsigned long usec)
@@ -95,7 +95,7 @@ int timer_init(void)writeb (1 <<TIMER_CHAN , &tcu->tesr);/* start counting up */ gd->lastinc =0 ; - gd->tbl =0 ; + gd->arch.tbl =0 ;return 0 ; }
@@ -112,7 +112,7 @@ ulong get_timer(ulong base)void set_timer (ulong t) { - gd->tbl = t; + gd->arch.tbl = t; }void __udelay (unsigned long usec)
Signature · 1 line
1.7.7.3
PATCH v2 6/58 arm: Move lastinc to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/arm/cpu/arm1136/mx31/timer.c | 8 ++++---- arch/arm/cpu/arm1136/mx35/timer.c | 2 +- arch/arm/cpu/arm1136/omap24xx/timer.c | 12 ++++++------ arch/arm/cpu/arm920t/at91/timer.c | 10 +++++----- arch/arm/cpu/arm920t/s3c24x0/timer.c | 10 +++++----- arch/arm/cpu/arm926ejs/kirkwood/timer.c | 2 +- arch/arm/cpu/arm926ejs/mb86r0x/timer.c | 2 +- arch/arm/cpu/arm926ejs/mx25/timer.c | 2 +- arch/arm/cpu/arm926ejs/mx27/timer.c | 2 +- arch/arm/cpu/arm926ejs/mxs/timer.c | 2 +- arch/arm/cpu/arm926ejs/omap/timer.c | 2 +- arch/arm/cpu/arm926ejs/orion5x/timer.c | 2 +- arch/arm/cpu/arm926ejs/spear/timer.c | 2 +- arch/arm/cpu/arm926ejs/versatile/timer.c | 2 +- arch/arm/cpu/armv7/omap-common/timer.c | 11 ++++++----- arch/arm/cpu/armv7/s5p-common/timer.c | 10 +++++----- arch/arm/cpu/armv7/socfpga/timer.c | 11 ++++++----- arch/arm/cpu/armv7/u8500/timer.c | 10 +++++----- arch/arm/cpu/armv7/zynq/timer.c | 10 +++++----- arch/arm/cpu/ixp/timer.c | 8 ++++---- arch/arm/cpu/pxa/timer.c | 2 +- arch/arm/cpu/tegra-common/timer.c | 8 ++++---- arch/arm/imx-common/timer.c | 2 +- arch/arm/include/asm/global_data.h | 2 +- arch/mips/cpu/xburst/timer.c | 12 ++++++------ 25 files changed, 74 insertions(+), 72 deletions(-)
arch/arm/cpu/arm1136/mx31/timer.c +4 -4
@@ -115,12 +115,12 @@ unsigned long long get_ticks(void) {ulong now =GPTCNT ;/* current tick value */ -if (now >= gd->lastinc)/* normal mode (non roll) */ +if (now >= gd->arch.lastinc)/* normal mode (non roll) */ /* move stamp forward with absolut diff ticks */ - gd->arch.tbl += (now - gd->lastinc); + gd->arch.tbl += (now - gd->arch.lastinc);else /* we have rollover of incrementer */ - gd->arch.tbl += (0xFFFFFFFF - gd->lastinc) + now; - gd->lastinc = now; + gd->arch.tbl += (0xFFFFFFFF - gd->arch.lastinc) + now; + gd->arch.lastinc = now;return gd->arch.tbl; }
arch/arm/cpu/arm1136/mx35/timer.c +1 -1
@@ -33,7 +33,7 @@DECLARE_GLOBAL_DATA_PTR ;#define timestamp (gd->arch.tbl) -#define lastinc (gd->lastinc) +#define lastinc (gd->arch.lastinc)/* General purpose timers bitfields */ #define GPTCR_SWR (1<<15)/* Software reset */
arch/arm/cpu/arm1136/omap24xx/timer.c +6 -6
@@ -51,7 +51,7 @@ int timer_init (void) *((int32_t *) (CONFIG_SYS_TIMERBASE +TCLR )) = val;/* start timer */ /* reset time */ - gd->lastinc =READ_TIMER ;/* capture current incrementer value */ + gd->arch.lastinc =READ_TIMER ;/* capture current incrementer value */ gd->arch.tbl =0 ;/* start "advancing" time stamp */ return (0 );
@@ -81,7 +81,7 @@ void __udelay (unsigned long usec) tmp =get_timer (0 );/* get current timestamp */ if ((tmo + tmp +1 ) < tmp) {/* if setting this forward will roll */ /* time stamp, then reset time */ - gd->lastinc =READ_TIMER ;/* capture incrementer value */ + gd->arch.lastinc =READ_TIMER ;/* capture incrementer value */ gd->arch.tbl =0 ;/* start time stamp */ }else { tmo += tmp;/* else, set advancing stamp wake up time */
@@ -94,14 +94,14 @@ ulong get_timer_masked (void) {ulong now =READ_TIMER ;/* current tick value */ -if (now >= gd->lastinc) {/* normal mode (non roll) */ +if (now >= gd->arch.lastinc) {/* normal mode (non roll) */ /* move stamp fordward with absoulte diff ticks */ - gd->arch.tbl += (now - gd->lastinc); + gd->arch.tbl += (now - gd->arch.lastinc); }else {/* we have rollover of incrementer */ - gd->arch.tbl += (0xFFFFFFFF - gd->lastinc) + now; + gd->arch.tbl += (0xFFFFFFFF - gd->arch.lastinc) + now; } - gd->lastinc = now; + gd->arch.lastinc = now;return gd->arch.tbl; }
arch/arm/cpu/arm920t/at91/timer.c +5 -5
@@ -63,7 +63,7 @@ int timer_init(void)writel (TIMER_LOAD_VAL , &tc->tc[0 ].rc);writel (AT91_TC_CCR_SWTRG |AT91_TC_CCR_CLKEN , &tc->tc[0 ].ccr); - gd->lastinc =0 ; + gd->arch.lastinc =0 ; gd->arch.tbl =0 ;return 0 ;
@@ -89,14 +89,14 @@ ulong get_timer_raw(void) now =readl (&tc->tc[0 ].cv) &0x0000ffff ; -if (now >= gd->lastinc) { +if (now >= gd->arch.lastinc) {/* normal mode */ - gd->arch.tbl += now - gd->lastinc; + gd->arch.tbl += now - gd->arch.lastinc; }else {/* we have an overflow ... */ - gd->arch.tbl += now +TIMER_LOAD_VAL - gd->lastinc; + gd->arch.tbl += now +TIMER_LOAD_VAL - gd->arch.lastinc; } - gd->lastinc = now; + gd->arch.lastinc = now;return gd->arch.tbl; }
arch/arm/cpu/arm920t/s3c24x0/timer.c +5 -5
@@ -62,7 +62,7 @@ int timer_init(void)/* auto load, start timer 4 */ tmr = (tmr & ~0x0700000 ) |0x0500000 ;writel (tmr, &timers->tcon); - gd->lastinc =0 ; + gd->arch.lastinc =0 ; gd->arch.tbl =0 ;return 0 ;
@@ -128,14 +128,14 @@ unsigned long long get_ticks(void)struct s3c24x0_timers *timers =s3c24x0_get_base_timers ();ulong now =readl (&timers->tcnto4) &0xffff ; -if (gd->lastinc >= now) { +if (gd->arch.lastinc >= now) {/* normal mode */ - gd->arch.tbl += gd->lastinc - now; + gd->arch.tbl += gd->arch.lastinc - now; }else {/* we have an overflow ... */ - gd->arch.tbl += gd->lastinc + gd->arch.tbu - now; + gd->arch.tbl += gd->arch.lastinc + gd->arch.tbu - now; } - gd->lastinc = now; + gd->arch.lastinc = now;return gd->arch.tbl; }
arch/arm/cpu/arm926ejs/kirkwood/timer.c +1 -1
@@ -87,7 +87,7 @@ struct kwtmr_registers *kwtmr_regs = (struct kwtmr_registers *)KW_TIMER_BASE;DECLARE_GLOBAL_DATA_PTR ;#define timestamp gd->arch.tbl -#define lastdec gd->lastinc +#define lastdec gd->arch.lastinculong get_timer_masked (void ) {
arch/arm/cpu/arm926ejs/mb86r0x/timer.c +1 -1
@@ -36,7 +36,7 @@DECLARE_GLOBAL_DATA_PTR ;#define timestamp gd->arch.tbl -#define lastdec gd->lastinc +#define lastdec gd->arch.lastincstatic inline unsigned long long tick_to_time (unsigned long long tick) {
arch/arm/cpu/arm926ejs/mx25/timer.c +1 -1
@@ -45,7 +45,7 @@DECLARE_GLOBAL_DATA_PTR ;#define timestamp (gd->arch.tbl) -#define lastinc (gd->lastinc) +#define lastinc (gd->arch.lastinc)/* * "time" is measured in 1 / CONFIG_SYS_HZ seconds,
arch/arm/cpu/arm926ejs/mx27/timer.c +1 -1
@@ -46,7 +46,7 @@DECLARE_GLOBAL_DATA_PTR ;#define timestamp (gd->arch.tbl) -#define lastinc (gd->lastinc) +#define lastinc (gd->arch.lastinc)/* * "time" is measured in 1 / CONFIG_SYS_HZ seconds,
arch/arm/cpu/arm926ejs/mxs/timer.c +1 -1
@@ -37,7 +37,7 @@DECLARE_GLOBAL_DATA_PTR ;#define timestamp (gd->arch.tbl) -#define lastdec (gd->lastinc) +#define lastdec (gd->arch.lastinc)/* * This driver uses 1kHz clock source.
arch/arm/cpu/arm926ejs/omap/timer.c +1 -1
@@ -45,7 +45,7 @@DECLARE_GLOBAL_DATA_PTR ;#define timestamp gd->arch.tbl -#define lastdec gd->lastinc +#define lastdec gd->arch.lastincint timer_init (void ) {
arch/arm/cpu/arm926ejs/orion5x/timer.c +1 -1
@@ -93,7 +93,7 @@ static inline ulong read_timer(void)DECLARE_GLOBAL_DATA_PTR ;#define timestamp gd->arch.tbl -#define lastdec gd->lastinc +#define lastdec gd->arch.lastinculong get_timer_masked (void ) {
arch/arm/cpu/arm926ejs/spear/timer.c +1 -1
@@ -39,7 +39,7 @@ static struct misc_regs *const misc_regs_p =DECLARE_GLOBAL_DATA_PTR ;#define timestamp gd->arch.tbl -#define lastdec gd->lastinc +#define lastdec gd->arch.lastincint timer_init (void ) {
arch/arm/cpu/arm926ejs/versatile/timer.c +1 -1
@@ -45,7 +45,7 @@DECLARE_GLOBAL_DATA_PTR ;#define timestamp gd->arch.tbl -#define lastdec gd->lastinc +#define lastdec gd->arch.lastinc#define TIMER_ENABLE (1 << 7)#define TIMER_MODE_MSK (1 << 6)
arch/arm/cpu/armv7/omap-common/timer.c +6 -5
@@ -56,7 +56,8 @@ int timer_init(void) &timer_base->tclr);/* reset time, capture current incrementer value time */ - gd->lastinc =readl (&timer_base->tcrr) / (TIMER_CLOCK /CONFIG_SYS_HZ ); + gd->arch.lastinc =readl (&timer_base->tcrr) / + (TIMER_CLOCK /CONFIG_SYS_HZ ); gd->arch.tbl =0 ;/* start "advancing" time stamp from 0 */ return 0 ;
@@ -91,14 +92,14 @@ ulong get_timer_masked(void)/* current tick value */ ulong now =readl (&timer_base->tcrr) / (TIMER_CLOCK /CONFIG_SYS_HZ ); -if (now >= gd->lastinc) {/* normal mode (non roll) */ +if (now >= gd->arch.lastinc) {/* normal mode (non roll) */ /* move stamp fordward with absoulte diff ticks */ - gd->arch.tbl += (now - gd->lastinc); + gd->arch.tbl += (now - gd->arch.lastinc); }else {/* we have rollover of incrementer */ gd->arch.tbl += ((TIMER_LOAD_VAL / (TIMER_CLOCK / -CONFIG_SYS_HZ )) - gd->lastinc) + now; +CONFIG_SYS_HZ )) - gd->arch.lastinc) + now; } - gd->lastinc = now; + gd->arch.lastinc = now;return gd->arch.tbl; }
arch/arm/cpu/armv7/s5p-common/timer.c +5 -5
@@ -105,7 +105,7 @@ void reset_timer_masked(void)struct s5p_timer *const timer =s5p_get_base_timer ();/* reset time */ - gd->lastinc =readl (&timer->tcnto4); + gd->arch.lastinc =readl (&timer->tcnto4); gd->arch.tbl =0 ; }
@@ -123,12 +123,12 @@ unsigned long get_current_tick(void)unsigned long now =readl (&timer->tcnto4);unsigned long count_value =readl (&timer->tcntb4); -if (gd->lastinc >= now) - gd->arch.tbl += gd->lastinc - now; +if (gd->arch.lastinc >= now) + gd->arch.tbl += gd->arch.lastinc - now;else - gd->arch.tbl += gd->lastinc + count_value - now; + gd->arch.tbl += gd->arch.lastinc + count_value - now; - gd->lastinc = now; + gd->arch.lastinc = now;return gd->arch.tbl; }
arch/arm/cpu/armv7/socfpga/timer.c +6 -5
@@ -80,15 +80,15 @@ ulong get_timer_masked(void) {/* current tick value */ ulong now =read_timer () / (CONFIG_TIMER_CLOCK_KHZ /CONFIG_SYS_HZ ); -if (gd->lastinc >= now) { +if (gd->arch.lastinc >= now) {/* normal mode (non roll) */ /* move stamp forward with absolute diff ticks */ - gd->arch.tbl += gd->lastinc - now; + gd->arch.tbl += gd->arch.lastinc - now; }else {/* we have overflow of the count down timer */ - gd->arch.tbl +=TIMER_LOAD_VAL - gd->lastinc + now; + gd->arch.tbl +=TIMER_LOAD_VAL - gd->arch.lastinc + now; } - gd->lastinc = now; + gd->arch.lastinc = now;return gd->arch.tbl; }
@@ -98,7 +98,8 @@ ulong get_timer_masked(void)void reset_timer (void ) {/* capture current decrementer value time */ - gd->lastinc =read_timer () / (CONFIG_TIMER_CLOCK_KHZ /CONFIG_SYS_HZ ); + gd->arch.lastinc =read_timer () / + (CONFIG_TIMER_CLOCK_KHZ /CONFIG_SYS_HZ );/* start "advancing" time stamp from 0 */ gd->arch.tbl =0 ; }
arch/arm/cpu/armv7/u8500/timer.c +5 -5
@@ -100,13 +100,13 @@ ulong get_timer_masked(void)/* current tick value */ ulong now =TICKS_TO_HZ (READ_TIMER ()); -if (now >= gd->lastinc) {/* normal (non rollover) */ - gd->arch.tbl += (now - gd->lastinc); +if (now >= gd->arch.lastinc) {/* normal (non rollover) */ + gd->arch.tbl += (now - gd->arch.lastinc); }else {/* rollover */ - gd->arch.tbl += (TICKS_TO_HZ (TIMER_LOAD_VAL ) - gd->lastinc) - + now; + gd->arch.tbl += (TICKS_TO_HZ (TIMER_LOAD_VAL ) - + gd->arch.lastinc) + now; } - gd->lastinc = now; + gd->arch.lastinc = now;return gd->arch.tbl; }
arch/arm/cpu/armv7/zynq/timer.c +5 -5
@@ -83,7 +83,7 @@ int timer_init(void) emask);/* Reset time */ - gd->lastinc =readl (&timer_base->counter) / + gd->arch.lastinc =readl (&timer_base->counter) / (TIMER_TICK_HZ /CONFIG_SYS_HZ ); gd->arch.tbl =0 ;
@@ -100,14 +100,14 @@ ulong get_timer_masked(void) now =readl (&timer_base->counter) / (TIMER_TICK_HZ /CONFIG_SYS_HZ ); -if (gd->lastinc >= now) { +if (gd->arch.lastinc >= now) {/* Normal mode */ - gd->arch.tbl += gd->lastinc - now; + gd->arch.tbl += gd->arch.lastinc - now; }else {/* We have an overflow ... */ - gd->arch.tbl += gd->lastinc +TIMER_LOAD_VAL - now; + gd->arch.tbl += gd->arch.lastinc +TIMER_LOAD_VAL - now; } - gd->lastinc = now; + gd->arch.lastinc = now;return gd->arch.tbl; }
arch/arm/cpu/ixp/timer.c +4 -4
@@ -70,13 +70,13 @@ unsigned long long get_ticks(void)if (readl (IXP425_OSST ) &IXP425_OSST_TIMER_TS_PEND ) {/* rollover of timestamp timer register */ - gd->timestamp += (0xFFFFFFFF - gd->lastinc) + now +1 ; + gd->timestamp += (0xFFFFFFFF - gd->arch.lastinc) + now +1 ;writel (IXP425_OSST_TIMER_TS_PEND ,IXP425_OSST ); }else {/* move stamp forward with absolut diff ticks */ - gd->timestamp += (now - gd->lastinc); + gd->timestamp += (now - gd->arch.lastinc); } - gd->lastinc = now; + gd->arch.lastinc = now;return gd->timestamp; }
@@ -84,7 +84,7 @@ unsigned long long get_ticks(void)void reset_timer_masked (void ) {/* capture current timestamp counter */ - gd->lastinc =readl (IXP425_OSTS_B ); + gd->arch.lastinc =readl (IXP425_OSTS_B );/* start "advancing" time stamp from 0 */ gd->timestamp =0 ; }
arch/arm/cpu/pxa/timer.c +1 -1
@@ -32,7 +32,7 @@ DECLARE_GLOBAL_DATA_PTR;#define TIMER_LOAD_VAL 0xffffffff#define timestamp (gd->arch.tbl) -#define lastinc (gd->lastinc) +#define lastinc (gd->arch.lastinc)#if defined(CONFIG_CPU_PXA27X ) || defined(CONFIG_CPU_MONAHANS )#define TIMER_FREQ_HZ 3250000
arch/arm/cpu/tegra-common/timer.c +4 -4
@@ -75,13 +75,13 @@ ulong get_timer_masked(void)/* current tick value */ now =timer_get_us () / (TIMER_CLK /CONFIG_SYS_HZ ); -if (now >= gd->lastinc)/* normal mode (non roll) */ +if (now >= gd->arch.lastinc)/* normal mode (non roll) */ /* move stamp forward with absolute diff ticks */ - gd->arch.tbl += (now - gd->lastinc); + gd->arch.tbl += (now - gd->arch.lastinc);else /* we have rollover of incrementer */ gd->arch.tbl += ((TIMER_LOAD_VAL / (TIMER_CLK /CONFIG_SYS_HZ )) - - gd->lastinc) + now; - gd->lastinc = now; + - gd->arch.lastinc) + now; + gd->arch.lastinc = now;return gd->arch.tbl; }
arch/arm/imx-common/timer.c +1 -1
@@ -49,7 +49,7 @@ static struct mxc_gpt *cur_gpt = (struct mxc_gpt *)GPT1_BASE_ADDR;DECLARE_GLOBAL_DATA_PTR ;#define timestamp (gd->arch.tbl) -#define lastinc (gd->lastinc) +#define lastinc (gd->arch.lastinc)static inline unsigned long long tick_to_time (unsigned long long tick) {
arch/arm/include/asm/global_data.h +1 -1
@@ -39,6 +39,7 @@ struct arch_global_data {unsigned long timer_rate_hz;unsigned long tbu;unsigned long tbl; +unsigned long lastinc; };/*
@@ -66,7 +67,6 @@ typedef struct global_data {#ifdef CONFIG_ARM /* "static data" needed by most of timer.c on ARM platforms */ unsigned long long timer_reset_value; -unsigned long lastinc;#endif #ifdef CONFIG_IXP425 unsigned long timestamp;
arch/mips/cpu/xburst/timer.c +6 -6
@@ -34,7 +34,7 @@ static struct jz4740_tcu *tcu = (struct jz4740_tcu *)JZ4740_TCU_BASE;void reset_timer_masked (void ) {/* reset time */ - gd->lastinc =readl (&tcu->tcnt0); + gd->arch.lastinc =readl (&tcu->tcnt0); gd->arch.tbl =0 ; }
@@ -42,14 +42,14 @@ ulong get_timer_masked(void) {ulong now =readl (&tcu->tcnt0); -if (gd->lastinc <= now) - gd->arch.tbl += now - gd->lastinc;/* normal mode */ +if (gd->arch.lastinc <= now) + gd->arch.tbl += now - gd->arch.lastinc;/* normal mode */ else {/* we have an overflow ... */ - gd->arch.tbl +=TIMER_FDATA + now - gd->lastinc; + gd->arch.tbl +=TIMER_FDATA + now - gd->arch.lastinc; } - gd->lastinc = now; + gd->arch.lastinc = now;return gd->arch.tbl; }
@@ -94,7 +94,7 @@ int timer_init(void)writel (1 <<TIMER_CHAN , &tcu->tscr);/* enable timer clock */ writeb (1 <<TIMER_CHAN , &tcu->tesr);/* start counting up */ - gd->lastinc =0 ; + gd->arch.lastinc =0 ; gd->arch.tbl =0 ;return 0 ;
Signature · 1 line
1.7.7.3
PATCH v2 7/58 arm: Move timer_reset_value to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/arm/cpu/arm926ejs/davinci/timer.c | 4 ++-- arch/arm/include/asm/global_data.h | 5 +---- 2 files changed, 3 insertions(+), 6 deletions(-)
arch/arm/cpu/arm926ejs/davinci/timer.c +2 -2
@@ -61,7 +61,7 @@ int timer_init(void)writel (TIMER_LOAD_VAL , &timer->prd34);writel (2 <<22 , &timer->tcr); gd->arch.timer_rate_hz =CONFIG_SYS_HZ_CLOCK /TIM_CLK_DIV ; - gd->timer_reset_value =0 ; + gd->arch.timer_reset_value =0 ;return (0 ); }
@@ -85,7 +85,7 @@ ulong get_timer(ulong base) {unsigned long long timer_diff; - timer_diff =get_ticks () - gd->timer_reset_value; + timer_diff =get_ticks () - gd->arch.timer_reset_value;return lldiv (timer_diff, (gd->arch.timer_rate_hz /CONFIG_SYS_HZ )) - base;
arch/arm/include/asm/global_data.h +1 -4
@@ -40,6 +40,7 @@ struct arch_global_data {unsigned long tbu;unsigned long tbl;unsigned long lastinc; +unsigned long long timer_reset_value; };/*
@@ -64,10 +65,6 @@ typedef struct global_data {#ifdef CONFIG_FSL_ESDHC unsigned long sdhc_clk;#endif -#ifdef CONFIG_ARM -/* "static data" needed by most of timer.c on ARM platforms */ -unsigned long long timer_reset_value; -#endif #ifdef CONFIG_IXP425 unsigned long timestamp;#endif
Signature · 1 line
1.7.7.3
PATCH v2 8/58 ixp: Move timestamp to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/arm/cpu/ixp/timer.c | 8 ++++---- arch/arm/include/asm/global_data.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-)
arch/arm/cpu/ixp/timer.c +4 -4
@@ -70,14 +70,14 @@ unsigned long long get_ticks(void)if (readl (IXP425_OSST ) &IXP425_OSST_TIMER_TS_PEND ) {/* rollover of timestamp timer register */ - gd->timestamp += (0xFFFFFFFF - gd->arch.lastinc) + now +1 ; + gd->arch.timestamp += (0xFFFFFFFF - gd->arch.lastinc) + now +1 ;writel (IXP425_OSST_TIMER_TS_PEND ,IXP425_OSST ); }else {/* move stamp forward with absolut diff ticks */ - gd->timestamp += (now - gd->arch.lastinc); + gd->arch.timestamp += (now - gd->arch.lastinc); } gd->arch.lastinc = now; -return gd->timestamp; +return gd->arch.timestamp; }
@@ -86,7 +86,7 @@ void reset_timer_masked(void)/* capture current timestamp counter */ gd->arch.lastinc =readl (IXP425_OSTS_B );/* start "advancing" time stamp from 0 */ - gd->timestamp =0 ; + gd->arch.timestamp =0 ; }ulong get_timer_masked (void )
arch/arm/include/asm/global_data.h +3 -3
@@ -41,6 +41,9 @@ struct arch_global_data {unsigned long tbl;unsigned long lastinc;unsigned long long timer_reset_value; +#ifdef CONFIG_IXP425 +unsigned long timestamp; +#endif };/*
@@ -65,9 +68,6 @@ typedef struct global_data {#ifdef CONFIG_FSL_ESDHC unsigned long sdhc_clk;#endif -#ifdef CONFIG_IXP425 -unsigned long timestamp; -#endif unsigned long relocaddr;/* Start address of U-Boot in RAM */ phys_size_t ram_size;/* RAM size */ unsigned long mon_len;/* monitor len */
Signature · 1 line
1.7.7.3
PATCH v2 8/58 ixp: Move timestamp to arch_global_data
Dear Simon Glass,
Quoted 3 lines
Move this field into
arch_global_dataand tidy up.Signed-off-by Simon Glass <[email protected]>
I think we should kill IXP. Did the IXP custodian show any activity? If not, let's just remove this piece of junk.
Otherwise Acked-by: Marek Vasut <[email protected]>
Quoted 53 lines
---
Changes in v2: Nonearch/arm/cpu/ixp/timer.c | 8 ++++---- arch/arm/include/asm/global_data.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-)arch/arm/cpu/ixp/timer.c +4
-4@@ -70,14 +70,14 @@ unsigned long long get_ticks(void)if (readl (IXP425_OSST ) &IXP425_OSST_TIMER_TS_PEND ) {/* rollover of timestamp timer register */ - gd->timestamp += (0xFFFFFFFF - gd->arch.lastinc) + now +1 ; + gd->arch.timestamp += (0xFFFFFFFF - gd->arch.lastinc) + now +1 ;writel (IXP425_OSST_TIMER_TS_PEND ,IXP425_OSST ); }else {/* move stamp forward with absolut diff ticks */ - gd->timestamp += (now - gd->arch.lastinc); + gd->arch.timestamp += (now - gd->arch.lastinc); } gd->arch.lastinc = now; -return gd->timestamp; +return gd->arch.timestamp; }@@ -86,7 +86,7 @@ void reset_timer_masked(void)/* capture current timestamp counter */ gd->arch.lastinc =readl (IXP425_OSTS_B );/* start "advancing" time stamp from 0 */ - gd->timestamp =0 ; + gd->arch.timestamp =0 ; }ulong get_timer_masked (void )(quoted diff) +0
-0
b/arch/arm/include/asm/global_data.hindex 95e23e1..35d07d0 100644arch/arm/include/asm/global_data.h +3
-0@@ -41,6 +41,9 @@ struct arch_global_data {unsigned long tbl;unsigned long lastinc;unsigned long long timer_reset_value; +#ifdef CONFIG_IXP425 +unsigned long timestamp; +#endif };/*
arch/arm/include/asm/global_data.h typedef struct global_data { · line 73
Quoted 9 lines
arch/arm/include/asm/global_data.h +0
-3@@ -65,9 +68,6 @@ typedef struct global_data {#ifdef CONFIG_FSL_ESDHC unsigned long sdhc_clk;#endif -#ifdef CONFIG_IXP425 -unsigned long timestamp; -#endif unsigned long relocaddr;/* Start address of U-Boot in RAM */ phys_size_t ram_size;/* RAM size */ unsigned long mon_len;/* monitor len */
Best regards,
Marek Vasut
PATCH v2 8/58 ixp: Move timestamp to arch_global_data
Hi Marek,
Quoted 8 lines · Marek Vasut
Dear Simon Glass,
Quoted 3 lines
Move this field into
arch_global_dataand tidy up.Signed-off-by Simon Glass <[email protected]>I think we should kill IXP. Did the IXP custodian show any activity? If not, let's just remove this piece of junk.
Not sure, quite possibly. I have tried to keep everything building for now.
Quoted 3 lines
Otherwise Acked-by: Marek Vasut <[email protected]>
Regards,
Simon
Quoted 65 lines
Quoted 53 lines
---
Changes in v2: Nonearch/arm/cpu/ixp/timer.c | 8 ++++---- arch/arm/include/asm/global_data.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-)arch/arm/cpu/ixp/timer.c +4
-4@@ -70,14 +70,14 @@ unsigned long long get_ticks(void)if (readl (IXP425_OSST ) &IXP425_OSST_TIMER_TS_PEND ) {/* rollover of timestamp timer register */ - gd->timestamp += (0xFFFFFFFF - gd->arch.lastinc) + now +1 ; + gd->arch.timestamp += (0xFFFFFFFF - gd->arch.lastinc) + now +1 ;writel (IXP425_OSST_TIMER_TS_PEND ,IXP425_OSST ); }else {/* move stamp forward with absolut diff ticks */ - gd->timestamp += (now - gd->arch.lastinc); + gd->arch.timestamp += (now - gd->arch.lastinc); } gd->arch.lastinc = now; -return gd->timestamp; +return gd->arch.timestamp; }@@ -86,7 +86,7 @@ void reset_timer_masked(void)/* capture current timestamp counter */ gd->arch.lastinc =readl (IXP425_OSTS_B );/* start "advancing" time stamp from 0 */ - gd->timestamp =0 ; + gd->arch.timestamp =0 ; }ulong get_timer_masked (void )(quoted diff) +0
-0
b/arch/arm/include/asm/global_data.hindex 95e23e1..35d07d0 100644arch/arm/include/asm/global_data.h +3
-0@@ -41,6 +41,9 @@ struct arch_global_data {unsigned long tbl;unsigned long lastinc;unsigned long long timer_reset_value; +#ifdef CONFIG_IXP425 +unsigned long timestamp; +#endif };/* arch/arm/include/asm/global_data.h typedef struct global_data { · line 73
Quoted 9 lines
arch/arm/include/asm/global_data.h +0
-3@@ -65,9 +68,6 @@ typedef struct global_data {#ifdef CONFIG_FSL_ESDHC unsigned long sdhc_clk;#endif -#ifdef CONFIG_IXP425 -unsigned long timestamp; -#endif unsigned long relocaddr;/* Start address of U-Boot in RAM */ phys_size_t ram_size;/* RAM size */ unsigned long mon_len;/* monitor len */ Best regards,
Marek Vasut
PATCH v2 9/58 nds32: Drop tlb_addr from global data
In reply to Simon GlassThis field doesn't appear to be used for anything important, so drop it.
---
Changes in v2: None
arch/nds32/include/asm/global_data.h | 3 --- arch/nds32/lib/board.c | 11 ----------- 2 files changed, 0 insertions(+), 14 deletions(-)
arch/nds32/include/asm/global_data.h +0 -3
@@ -62,9 +62,6 @@ typedef struct global_data {unsigned long mon_len;/* monitor len */ unsigned long irq_sp;/* irq stack pointer */ unsigned long start_addr_sp;/* start_addr_stackpointer */ -#if !(defined(CONFIG_SYS_ICACHE_OFF ) && defined(CONFIG_SYS_DCACHE_OFF )) -unsigned long tlb_addr; -#endif void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */
arch/nds32/lib/board.c +0 -11
@@ -207,17 +207,6 @@ void board_init_f(ulong bootflag) addr =CONFIG_SYS_SDRAM_BASE + gd->ram_size; -#if !(defined(CONFIG_SYS_ICACHE_OFF ) && defined(CONFIG_SYS_DCACHE_OFF )) -/* reserve TLB table */ - addr -= (4096 *4 ); - -/* round down to next 64 kB limit */ - addr &= ~(0x10000 -1 ); - - gd->tlb_addr = addr; -debug ("TLB table at: %08lx\n" , addr); -#endif -/* round down to next 4 kB limit */ addr &= ~(4096 -1 );debug ("Top of RAM usable for U-Boot at: %08lx\n" , addr);
Signature · 1 line
1.7.7.3
PATCH v2 10/58 arm: Move tlb_addr to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/arm/include/asm/global_data.h | 6 +++--- arch/arm/lib/board.c | 2 +- arch/arm/lib/cache-cp15.c | 4 ++-- common/cmd_bdinfo.c | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-)
arch/arm/include/asm/global_data.h +3 -3
@@ -44,6 +44,9 @@ struct arch_global_data {#ifdef CONFIG_IXP425 unsigned long timestamp;#endif +#if !(defined(CONFIG_SYS_ICACHE_OFF ) && defined(CONFIG_SYS_DCACHE_OFF )) +unsigned long tlb_addr; +#endif };/*
@@ -74,9 +77,6 @@ typedef struct global_data {unsigned long irq_sp;/* irq stack pointer */ unsigned long start_addr_sp;/* start_addr_stackpointer */ unsigned long reloc_off; -#if !(defined(CONFIG_SYS_ICACHE_OFF ) && defined(CONFIG_SYS_DCACHE_OFF )) -unsigned long tlb_addr; -#endif const void *fdt_blob;/* Our device tree, NULL if none */ void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */
arch/arm/lib/board.c +1 -1
@@ -358,7 +358,7 @@ void board_init_f(ulong bootflag)/* round down to next 64 kB limit */ addr &= ~(0x10000 -1 ); - gd->tlb_addr = addr; + gd->arch.tlb_addr = addr;debug ("TLB table at: %08lx\n" , addr);#endif
arch/arm/lib/cache-cp15.c +2 -2
@@ -52,7 +52,7 @@ static void cp_delay (void)static inline void dram_bank_mmu_setup (int bank) { -u32 *page_table = (u32 *)gd->tlb_addr; +u32 *page_table = (u32 *)gd->arch.tlb_addr;bd_t *bd = gd->bd;int i;
@@ -67,7 +67,7 @@ static inline void dram_bank_mmu_setup(int bank)/* to activate the MMU we need to set up virtual memory: use 1M areas */ static inline void mmu_setup (void ) { -u32 *page_table = (u32 *)gd->tlb_addr; +u32 *page_table = (u32 *)gd->arch.tlb_addr;int i;u32 reg;
common/cmd_bdinfo.c +1 -1
@@ -371,7 +371,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])#endif printf ("baudrate = %u bps\n" , bd->bi_baudrate);#if !(defined(CONFIG_SYS_ICACHE_OFF ) && defined(CONFIG_SYS_DCACHE_OFF )) -print_num ("TLB addr" , gd->tlb_addr); +print_num ("TLB addr" , gd->arch.tlb_addr);#endif print_num ("relocaddr" , gd->relocaddr);print_num ("reloc off" , gd->reloc_off);
Signature · 1 line
1.7.7.3
PATCH v2 10/58 arm: Move tlb_addr to arch_global_data
Quoted 3 lines · Simon Glass
Move this field into
arch_global_dataand tidy up.Signed-off-by Simon Glass <[email protected]>
Note that for ToT, this also needs to address tlb_size. I've done so locally and am build testing all of ARM.
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130201/db15b231/attachment.pgp>
PATCH v2 10/58 arm: Move tlb_addr to arch_global_data
Hi Tom,
Quoted 8 lines · Tom Rini
Quoted 3 lines · Simon Glass
Move this field into
arch_global_dataand tidy up.Signed-off-by Simon Glass <[email protected]>Note that for ToT, this also needs to address
tlb_size. I've done so locally and am build testing all of ARM.
Thanks - I do have a new version but that (and removing some tabs in 'Add generic global_data') is the only change.
Regards,
Simon
Quoted 3 lines
--
Tom
PATCH v2 11/58 x86: Remove gdt_addr from arch_global_data
In reply to Simon GlassRemove this unused field.
---
Changes in v2:
- Remove gdt_addr which is no longer used on x86
arch/x86/include/asm/global_data.h | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
arch/x86/include/asm/global_data.h +0 -1
@@ -61,7 +61,6 @@ struct global_data {unsigned long bus_clk;unsigned long relocaddr;/* Start address of U-Boot in RAM */ unsigned long start_addr_sp;/* start_addr_stackpointer */ -unsigned long gdt_addr;/* Location of GDT */ phys_size_t ram_size;/* RAM size */ unsigned long reset_status;/* reset status register at boot */ const void *fdt_blob;/* Our device tree, NULL if none */
Signature · 1 line
1.7.7.3
PATCH v2 12/58 x86: Move gd_addr into arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/x86/include/asm/global_data.h | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)
arch/x86/include/asm/global_data.h +1 -2
@@ -28,6 +28,7 @@/* Architecture-specific global data */ struct arch_global_data { +struct global_data *gd_addr;/* Location of Global Data */ };/*
@@ -44,8 +45,6 @@ typedef struct global_data gd_t;struct global_data {struct arch_global_data arch;/* architecture-specific data */ -/* NOTE: gd_addr MUST be first member of struct global_data! */ -gd_t *gd_addr;/* Location of Global Data */ bd_t *bd;unsigned long flags;unsigned int baudrate;
Signature · 1 line
1.7.7.3
Graeme Russ
NAKPATCH v2 12/58 x86: Move gd_addr into arch_global_data
Hi Simon,
Quoted 23 lines · Simon Glass
Move this field into
arch_global_dataand tidy up.Signed-off-by Simon Glass <[email protected]>---
Changes in v2: Nonearch/x86/include/asm/global_data.h | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)arch/x86/include/asm/global_data.h +1
-0@@ -28,6 +28,7 @@/* Architecture-specific global data */ struct arch_global_data { +struct global_data *gd_addr;/* Location of Global Data */ };/*
arch/x86/include/asm/global_data.h typedef struct global_data gd_t; · line 50
Quoted 8 lines
arch/x86/include/asm/global_data.h +0
-2@@ -44,8 +45,6 @@ typedef struct global_data gd_t;struct global_data {struct arch_global_data arch;/* architecture-specific data */ -/* NOTE: gd_addr MUST be first member of struct global_data! */ -gd_t *gd_addr;/* Location of Global Data */ bd_t *bd;unsigned long flags;unsigned int baudrate;
NAK - You've broken bisectability - patch 13 (slightly modified) needs to come first
Regards,
Graeme
PATCH v2 12/58 x86: Move gd_addr into arch_global_data
Hi Graeme,
Quoted 26 lines · Graeme Russ
Hi Simon,
Quoted 23 lines · Simon Glass
Move this field into
arch_global_dataand tidy up.Signed-off-by Simon Glass <[email protected]>---
Changes in v2: Nonearch/x86/include/asm/global_data.h | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)arch/x86/include/asm/global_data.h +1
-0@@ -28,6 +28,7 @@/* Architecture-specific global data */ struct arch_global_data { +struct global_data *gd_addr;/* Location of Global Data */ };/* @@ -44,8 +45,6 @@ typedef struct global_data gd_t;
Quoted 11 lines
arch/x86/include/asm/global_data.h typedef struct global_data gd_t; · line 50
Quoted 8 lines
arch/x86/include/asm/global_data.h +0
-2struct global_data {struct arch_global_data arch;/* architecture-specific data */ -/* NOTE: gd_addr MUST be first member of struct global_data! */ -gd_t *gd_addr;/* Location of Global Data */ bd_t *bd;unsigned long flags;unsigned int baudrate;NAK - You've broken bisectability - patch 13 (slightly modified) needs to come first
I build tested each commit, but did not run-test each unfortunately. Yes I agree it would be annoying to break this even within a series, unless it is unavoidable. I will retest, assuming the basic concept passes muster.
Regards,
Simon
Quoted 5 lines
Regards,
Graeme
PATCH v2 13/58 x86: Set up the global data pointer in C instead of asm
In reply to Simon GlassWe currently assume that the global data pointer is at the start of struct global_data. We want to remove this restriction, and it is easiest to do this in C.
Remove the asm code and add equivalent code in C.
This idea was proposed by Graeme Russ here:
http://patchwork.ozlabs.org/patch/199741/
---
Changes in v2:
- Add new patch to move gd pointer by C to asm on x86
arch/x86/cpu/cpu.c | 4 +++- arch/x86/cpu/start.S | 6 ------ 2 files changed, 3 insertions(+), 7 deletions(-)
arch/x86/cpu/cpu.c +3 -1
@@ -100,7 +100,9 @@ void setup_gdt(gd_t *id, u64 *gdt_addr) gdt_addr[X86_GDT_ENTRY_32BIT_DS ] =GDT_ENTRY (0xc093 ,0 ,0xfffff );/* FS: data, read/write, 4 GB, base (Global Data Pointer) */ - gdt_addr[X86_GDT_ENTRY_32BIT_FS ] =GDT_ENTRY (0xc093 , (ulong )id,0xfffff ); + id->arch.gd_addr = id; + gdt_addr[X86_GDT_ENTRY_32BIT_FS ] =GDT_ENTRY (0xc093 , + (ulong)&id->arch.gd_addr,0xfffff );/* 16-bit CS: code, read/execute, 64 kB, base 0 */ gdt_addr[X86_GDT_ENTRY_16BIT_CS ] =GDT_ENTRY (0x109b ,0 ,0x0ffff );
arch/x86/cpu/start.S +0 -6
@@ -113,9 +113,6 @@ car_init_ret: /* Set second parameter to setup_gdt */ movl %esp, %edx - /* gd->gd_addr = gd (Required to allow gd->xyz to work) */ - movl %eax, (%eax) - /* Setup global descriptor table so gd->xyz works */ call setup_gdt
@@ -171,9 +168,6 @@ board_init_f_r_trampoline: /* Set second parameter to setup_gdt */ movl %esp, %edx - /* gd->gd_addr = gd (Required to allow gd->xyz to work) */ - movl %eax, (%eax) - /* Setup global descriptor table so gd->xyz works */ call setup_gdt
Signature · 1 line
1.7.7.3
PATCH v2 13/58 x86: Set up the global data pointer in C instead of asm
Hi Simon,
Quoted 23 lines · Simon Glass
We currently assume that the global data pointer is at the start of struct
global_data. We want to remove this restriction, and it is easiest to do this in C.Remove the asm code and add equivalent code in C.
This idea was proposed by Graeme Russ here:
http://patchwork.ozlabs.org/patch/199741/Signed-off-by Simon Glass <[email protected]>---
Changes in v2:
- Add new patch to move gd pointer by C to asm on x86arch/x86/cpu/cpu.c | 4 +++- arch/x86/cpu/start.S | 6 ------ 2 files changed, 3 insertions(+), 7 deletions(-)arch/x86/cpu/cpu.c +0
-0
arch/x86/cpu/cpu.c void setup_gdt(gd_t *id, u64 *gdt_addr) · line 105
Quoted 7 lines
arch/x86/cpu/cpu.c +3
-1@@ -100,7 +100,9 @@ void setup_gdt(gd_t *id, u64 *gdt_addr) gdt_addr[X86_GDT_ENTRY_32BIT_DS ] =GDT_ENTRY (0xc093 ,0 ,0xfffff );/* FS: data, read/write, 4 GB, base (Global Data Pointer) */ - gdt_addr[X86_GDT_ENTRY_32BIT_FS ] =GDT_ENTRY (0xc093 , (ulong )id,0xfffff ); + id->arch.gd_addr = id; + gdt_addr[X86_GDT_ENTRY_32BIT_FS ] =GDT_ENTRY (0xc093 , + (ulong)&id->arch.gd_addr,0xfffff );
This patch needs to come before #12 as:
- gdt_addr[X86_GDT_ENTRY_32BIT_FS] = GDT_ENTRY(0xc093, (ulong)id, 0xfffff);
+ id->gd_addr = id;
+ gdt_addr[X86_GDT_ENTRY_32BIT_FS] = GDT_ENTRY(0xc093,
+ (ulong)&id->gd_addr, 0xfffff);
Then you can move gd_addr into arch-specific global data
Regards,
Graeme
PATCH v2 14/58 x86: Remove reset_status, relocoff from global_data
In reply to Simon GlassThese fields are not used on x86, so punt them.
---
Changes in v2:
- Rebase to master
arch/x86/include/asm/global_data.h | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-)
arch/x86/include/asm/global_data.h +0 -2
@@ -53,7 +53,6 @@ struct global_data {unsigned long precon_buf_idx;/* Pre-Console buffer index */ #endif unsigned long reloc_off;/* Relocation Offset */ -unsigned long load_off;/* Load Offset */ unsigned long env_addr;/* Address of Environment struct */ unsigned long env_valid;/* Checksum of Environment valid? */ unsigned long cpu_clk;/* CPU clock in Hz! */
@@ -61,7 +60,6 @@ struct global_data {unsigned long relocaddr;/* Start address of U-Boot in RAM */ unsigned long start_addr_sp;/* start_addr_stackpointer */ phys_size_t ram_size;/* RAM size */ -unsigned long reset_status;/* reset status register at boot */ const void *fdt_blob;/* Our device tree, NULL if none */ void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */
Signature · 1 line
1.7.7.3
PATCH v2 15/58 ppc: Move brg_clk to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/cpu/mpc8260/commproc.c | 2 +- arch/powerpc/cpu/mpc8260/i2c.c | 2 +- arch/powerpc/cpu/mpc8260/speed.c | 4 ++-- arch/powerpc/cpu/mpc83xx/speed.c | 5 +++-- arch/powerpc/cpu/mpc85xx/commproc.c | 2 +- arch/powerpc/cpu/mpc85xx/speed.c | 4 ++-- arch/powerpc/cpu/mpc8xx/fdt.c | 2 +- arch/powerpc/cpu/mpc8xx/speed.c | 2 +- arch/powerpc/include/asm/global_data.h | 14 +++++++++----- arch/powerpc/lib/board.c | 2 +- common/cmd_immap.c | 2 +- drivers/qe/fdt.c | 4 ++-- drivers/qe/qe.c | 2 +- 13 files changed, 26 insertions(+), 21 deletions(-)
arch/powerpc/cpu/mpc8260/commproc.c +1 -1
@@ -101,7 +101,7 @@ m8260_cpm_hostalloc(uint size, uint align)* Baud rate clocks are zero-based in the driver code (as that maps * to port numbers). Documentation uses 1-based numbering. */ -#define BRG_INT_CLK gd->brg_clk +#define BRG_INT_CLK gd->arch.brg_clk#define BRG_UART_CLK (BRG_INT_CLK / 16)/* This function is used by UARTs, or anything else that uses a 16x
arch/powerpc/cpu/mpc8260/i2c.c +1 -1
@@ -259,7 +259,7 @@ void i2c_init(int speed, int slaveadd)* divide BRGCLK by 1) */ debug ("[I2C] Setting rate...\n" ); -i2c_setrate (gd->brg_clk,CONFIG_SYS_I2C_SPEED ); +i2c_setrate (gd->arch.brg_clk,CONFIG_SYS_I2C_SPEED );/* Set I2C controller in master mode */ i2c->i2c_i2com =0x01 ;
arch/powerpc/cpu/mpc8260/speed.c +2 -2
@@ -145,7 +145,7 @@ int get_clocks (void) gd->cpm_clk = gd->vco_out /2 ; gd->bus_clk = clkin; gd->scc_clk = gd->vco_out /4 ; - gd->brg_clk = gd->vco_out / (1 << (2 * (dfbrg +1 ))); + gd->arch.brg_clk = gd->vco_out / (1 << (2 * (dfbrg +1 )));if (cp->b2c_mult >0 ) { gd->cpu_clk = (clkin * cp->b2c_mult) /2 ;
@@ -231,7 +231,7 @@ int prt_8260_clks (void) plldf, pllmf, pcidf);printf (" - vco_out %10ld, scc_clk %10ld, brg_clk %10ld\n" , - gd->vco_out, gd->scc_clk, gd->brg_clk); + gd->vco_out, gd->scc_clk, gd->arch.brg_clk);printf (" - cpu_clk %10ld, cpm_clk %10ld, bus_clk %10ld\n" , gd->cpu_clk, gd->cpm_clk, gd->bus_clk);
arch/powerpc/cpu/mpc83xx/speed.c +3 -2
@@ -496,7 +496,7 @@ int get_clocks(void)#endif #if defined(CONFIG_QE ) gd->qe_clk = qe_clk; - gd->brg_clk = brg_clk; + gd->arch.brg_clk = brg_clk;#endif #if defined(CONFIG_MPC8308 ) || defined(CONFIG_MPC831x) || \ defined(CONFIG_MPC837x)
@@ -540,7 +540,8 @@ static int do_clocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])printf (" Coherent System Bus: %-4s MHz\n" ,strmhz (buf, gd->csb_clk));#if defined(CONFIG_QE )printf (" QE: %-4s MHz\n" ,strmhz (buf, gd->qe_clk)); -printf (" BRG: %-4s MHz\n" ,strmhz (buf, gd->brg_clk)); +printf (" BRG: %-4s MHz\n" , +strmhz (buf, gd->arch.brg_clk));#endif printf (" Local Bus Controller:%-4s MHz\n" ,strmhz (buf, gd->lbiu_clk));printf (" Local Bus: %-4s MHz\n" ,strmhz (buf, gd->lclk_clk));
arch/powerpc/cpu/mpc85xx/commproc.c +1 -1
@@ -110,7 +110,7 @@ m8560_cpm_hostalloc(uint size, uint align)* Baud rate clocks are zero-based in the driver code (as that maps * to port numbers). Documentation uses 1-based numbering. */ -#define BRG_INT_CLK gd->brg_clk +#define BRG_INT_CLK gd->arch.brg_clk#define BRG_UART_CLK ((BRG_INT_CLK + 15) / 16)/* This function is used by UARTS, or anything else that uses a 16x
arch/powerpc/cpu/mpc85xx/speed.c +2 -2
@@ -395,7 +395,7 @@ int get_clocks (void)#ifdef CONFIG_QE gd->qe_clk = sys_info.freqQE; - gd->brg_clk = gd->qe_clk /2 ; + gd->arch.brg_clk = gd->qe_clk /2 ;#endif /* * The base clock for I2C depends on the actual SOC. Unfortunately,
@@ -438,7 +438,7 @@ int get_clocks (void) gd->vco_out =2 *sys_info.freqSystemBus; gd->cpm_clk = gd->vco_out /2 ; gd->scc_clk = gd->vco_out /4 ; - gd->brg_clk = gd->vco_out / (1 << (2 * (dfbrg +1 ))); + gd->arch.brg_clk = gd->vco_out / (1 << (2 * (dfbrg +1 )));#endif if (gd->cpu_clk !=0 )return (0 );
arch/powerpc/cpu/mpc8xx/fdt.c +1 -1
@@ -37,7 +37,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)do_fixup_by_prop_u32 (blob,"device_type" ,"cpu" ,4 ,"clock-frequency" , bd->bi_intfreq,1 );do_fixup_by_compat_u32 (blob,"fsl,cpm-brg" ,"clock-frequency" , - gd->brg_clk,1 ); + gd->arch.brg_clk,1 );/* Fixup ethernet MAC addresses */ fdt_fixup_ethernet (blob);
arch/powerpc/cpu/mpc8xx/speed.c +1 -1
@@ -192,7 +192,7 @@ void get_brgclk(uint sccr) divider =64 ;break ; } - gd->brg_clk = gd->cpu_clk/divider; + gd->arch.brg_clk = gd->cpu_clk/divider; }#if !defined(CONFIG_8xx_CPUCLK_DEFAULT)
arch/powerpc/include/asm/global_data.h +9 -5
@@ -29,6 +29,15 @@/* Architecture-specific global data */ struct arch_global_data { +#if defined(CONFIG_8xx) +unsigned long brg_clk; +#endif +#if defined(CONFIG_CPM2 ) +unsigned long brg_clk; +#endif +#if defined(CONFIG_QE ) +u32 brg_clk; +#endif };/*
@@ -45,15 +54,11 @@ typedef struct global_data {unsigned int baudrate;unsigned long cpu_clk;/* CPU clock in Hz! */ unsigned long bus_clk; -#if defined(CONFIG_8xx) -unsigned long brg_clk; -#endif #if defined(CONFIG_CPM2 )/* There are many clocks on the MPC8260 - see page 9-5 */ unsigned long vco_out;unsigned long cpm_clk;unsigned long scc_clk; -unsigned long brg_clk;#ifdef CONFIG_PCI unsigned long pci_clk;#endif
@@ -106,7 +111,6 @@ typedef struct global_data {#endif #if defined(CONFIG_QE )u32 qe_clk; -u32 brg_clk;uint mp_alloc_base;uint mp_alloc_top;#endif /* CONFIG_QE */
arch/powerpc/lib/board.c +1 -1
@@ -581,7 +581,7 @@ void board_init_f(ulong bootflag) bd->bi_busfreq = gd->bus_clk;/* Bus Freq, in Hz */ #if defined(CONFIG_CPM2 ) bd->bi_cpmfreq = gd->cpm_clk; - bd->bi_brgfreq = gd->brg_clk; + bd->bi_brgfreq = gd->arch.brg_clk; bd->bi_sccfreq = gd->scc_clk; bd->bi_vco = gd->vco_out;#endif /* CONFIG_CPM2 */
common/cmd_immap.c +1 -1
@@ -453,7 +453,7 @@ static void prbrg (int n, uint val)#if defined(CONFIG_8xx)ulong clock = gd->cpu_clk;#elif defined(CONFIG_8260 ) -ulong clock = gd->brg_clk; +ulong clock = gd->arch.brg_clk;#endif printf ("BRG%d:" , n);
drivers/qe/fdt.c +2 -2
@@ -77,13 +77,13 @@ void ft_qe_setup(void *blob)do_fixup_by_prop_u32 (blob,"device_type" ,"qe" ,4 ,"bus-frequency" , gd->qe_clk,1 );do_fixup_by_prop_u32 (blob,"device_type" ,"qe" ,4 , -"brg-frequency" , gd->brg_clk,1 ); +"brg-frequency" , gd->arch.brg_clk,1 );do_fixup_by_compat_u32 (blob,"fsl,qe" ,"clock-frequency" , gd->qe_clk,1 );do_fixup_by_compat_u32 (blob,"fsl,qe" ,"bus-frequency" , gd->qe_clk,1 );do_fixup_by_compat_u32 (blob,"fsl,qe" , -"brg-frequency" , gd->brg_clk,1 ); +"brg-frequency" , gd->arch.brg_clk,1 );do_fixup_by_compat_u32 (blob,"fsl,qe-gtm" ,"clock-frequency" , gd->qe_clk /2 ,1 );fdt_fixup_qe_firmware (blob);
drivers/qe/qe.c +1 -1
@@ -220,7 +220,7 @@ void qe_assign_page(uint snum, uint para_ram_base)from CLKn pin, we have te change the function. */ -#define BRG_CLK (gd->brg_clk) +#define BRG_CLK (gd->arch.brg_clk)int qe_set_brg (uint brg,uint rate) {
Signature · 1 line
1.7.7.3
PATCH v2 16/58 ppc: Remove extra pci_clk fields from global_data
In reply to Simon GlassPPC has several of these fields, selected by chip type, although only one is ever compiled in.
Instead, use a single field. It would be nice if this could be selected by CONFIG_PCI, but some chips (e.g. mpc5xxx) use pci_clk even when CONFIG_PCI is not enabled.
---
Changes in v2: None
arch/powerpc/include/asm/global_data.h | 9 ++------- 1 files changed, 2 insertions(+), 7 deletions(-)
arch/powerpc/include/asm/global_data.h +2 -7
@@ -54,14 +54,13 @@ typedef struct global_data {unsigned int baudrate;unsigned long cpu_clk;/* CPU clock in Hz! */ unsigned long bus_clk; +/* We cannot bracket this with CONFIG_PCI due to mpc5xxx */ +unsigned long pci_clk;#if defined(CONFIG_CPM2 )/* There are many clocks on the MPC8260 - see page 9-5 */ unsigned long vco_out;unsigned long cpm_clk;unsigned long scc_clk; -#ifdef CONFIG_PCI -unsigned long pci_clk; -#endif #endif unsigned long mem_clk;#if defined(CONFIG_MPC83xx)
@@ -85,7 +84,6 @@ typedef struct global_data {u32 enc_clk;u32 lbiu_clk;u32 lclk_clk; -u32 pci_clk;#if defined(CONFIG_MPC8308 ) || defined(CONFIG_MPC831x) || \ defined(CONFIG_MPC837x)u32 pciexp1_clk;
@@ -122,17 +120,14 @@ typedef struct global_data {#endif #if defined(CONFIG_MPC5xxx)unsigned long ipb_clk; -unsigned long pci_clk;#endif #if defined(CONFIG_MPC512X )u32 ips_clk;u32 csb_clk; -u32 pci_clk;#endif /* CONFIG_MPC512X */ #if defined(CONFIG_MPC8220 )unsigned long bExtUart;unsigned long inp_clk; -unsigned long pci_clk;unsigned long vco_clk;unsigned long pev_clk;unsigned long flb_clk;
Signature · 1 line
1.7.7.3
PATCH v2 17/58 ppc: Move clock fields to arch_global_data
In reply to Simon GlassMove vco_out, cpm_clk, scc_clk, brg_clk into arch_global_data and tidy up. Leave pci_clk on its own since this should really depend only on CONFIG_PCI and not any particular chip type.
---
Changes in v2: None
arch/powerpc/cpu/mpc8260/speed.c | 16 ++++++++-------- arch/powerpc/cpu/mpc85xx/speed.c | 8 ++++---- arch/powerpc/include/asm/global_data.h | 4 ++++ arch/powerpc/lib/board.c | 6 +++--- 4 files changed, 19 insertions(+), 15 deletions(-)
arch/powerpc/cpu/mpc8260/speed.c +8 -8
@@ -135,17 +135,17 @@ int get_clocks (void) (get_pvr () == PVR_8260_HIP7R1) || (get_pvr () == PVR_8260_HIP7RA)) { pllmf = (scmr & SCMR_PLLMF_MSKH7) >> SCMR_PLLMF_SHIFT; - gd->vco_out = clkin * (pllmf + 1); + gd->arch.vco_out = clkin * (pllmf + 1); } else { /* HiP3, HiP4 */ pllmf = (scmr &SCMR_PLLMF_MSK ) >>SCMR_PLLMF_SHIFT ; plldf = (scmr &SCMR_PLLDF ) ?1 :0 ; - gd->vco_out = (clkin *2 * (pllmf +1 )) / (plldf +1 ); + gd->arch.vco_out = (clkin *2 * (pllmf +1 )) / (plldf +1 ); } - gd->cpm_clk = gd->vco_out /2 ; + gd->arch.cpm_clk = gd->arch.vco_out /2 ; gd->bus_clk = clkin; - gd->scc_clk = gd->vco_out /4 ; - gd->arch.brg_clk = gd->vco_out / (1 << (2 * (dfbrg +1 ))); + gd->arch.scc_clk = gd->arch.vco_out /4 ; + gd->arch.brg_clk = gd->arch.vco_out / (1 << (2 * (dfbrg +1 )));if (cp->b2c_mult >0 ) { gd->cpu_clk = (clkin * cp->b2c_mult) /2 ;
@@ -173,7 +173,7 @@ int get_clocks (void) pci_div = pcidf + 1; } - gd->pci_clk = (gd->cpm_clk *2 ) / pci_div; + gd->pci_clk = (gd->arch.cpm_clk *2 ) / pci_div; }#endif
@@ -231,10 +231,10 @@ int prt_8260_clks (void) plldf, pllmf, pcidf);printf (" - vco_out %10ld, scc_clk %10ld, brg_clk %10ld\n" , - gd->vco_out, gd->scc_clk, gd->arch.brg_clk); + gd->arch.vco_out, gd->arch.scc_clk, gd->arch.brg_clk);printf (" - cpu_clk %10ld, cpm_clk %10ld, bus_clk %10ld\n" , - gd->cpu_clk, gd->cpm_clk, gd->bus_clk); + gd->cpu_clk, gd->arch.cpm_clk, gd->bus_clk);#ifdef CONFIG_PCI printf (" - pci_clk %10ld\n" , gd->pci_clk);#endif
arch/powerpc/cpu/mpc85xx/speed.c +4 -4
@@ -435,10 +435,10 @@ int get_clocks (void)#endif /* defined(CONFIG_FSL_ESDHC) */ #if defined(CONFIG_CPM2 ) - gd->vco_out =2 *sys_info.freqSystemBus; - gd->cpm_clk = gd->vco_out /2 ; - gd->scc_clk = gd->vco_out /4 ; - gd->arch.brg_clk = gd->vco_out / (1 << (2 * (dfbrg +1 ))); + gd->arch.vco_out =2 *sys_info.freqSystemBus; + gd->arch.cpm_clk = gd->arch.vco_out /2 ; + gd->arch.scc_clk = gd->arch.vco_out /4 ; + gd->arch.brg_clk = gd->arch.vco_out / (1 << (2 * (dfbrg +1 )));#endif if (gd->cpu_clk !=0 )return (0 );
arch/powerpc/include/asm/global_data.h +4 -0
@@ -33,6 +33,10 @@ struct arch_global_data {unsigned long brg_clk;#endif #if defined(CONFIG_CPM2 ) +/* There are many clocks on the MPC8260 - see page 9-5 */ +unsigned long vco_out; +unsigned long cpm_clk; +unsigned long scc_clk;unsigned long brg_clk;#endif #if defined(CONFIG_QE )
arch/powerpc/lib/board.c +3 -3
@@ -580,10 +580,10 @@ void board_init_f(ulong bootflag) bd->bi_intfreq = gd->cpu_clk;/* Internal Freq, in Hz */ bd->bi_busfreq = gd->bus_clk;/* Bus Freq, in Hz */ #if defined(CONFIG_CPM2 ) - bd->bi_cpmfreq = gd->cpm_clk; + bd->bi_cpmfreq = gd->arch.cpm_clk; bd->bi_brgfreq = gd->arch.brg_clk; - bd->bi_sccfreq = gd->scc_clk; - bd->bi_vco = gd->vco_out; + bd->bi_sccfreq = gd->arch.scc_clk; + bd->bi_vco = gd->arch.vco_out;#endif /* CONFIG_CPM2 */ #if defined(CONFIG_MPC512X ) bd->bi_ipsfreq = gd->ips_clk;
Signature · 1 line
1.7.7.3
PATCH v2 18/58 ppc: Move mpc83xx clock fields to arch_global_data
In reply to Simon GlassMove al mpc83xx fields into arch_global_data and tidy up. Also indent the nested #ifdef for clarity.
---
Changes in v2: None
arch/powerpc/cpu/mpc83xx/cpu.c | 2 +- arch/powerpc/cpu/mpc83xx/fdt.c | 2 +- arch/powerpc/cpu/mpc83xx/pcie.c | 4 +- arch/powerpc/cpu/mpc83xx/speed.c | 81 +++++++++++++++++++------------- arch/powerpc/include/asm/global_data.h | 73 +++++++++++++--------------- 5 files changed, 86 insertions(+), 76 deletions(-)
arch/powerpc/cpu/mpc83xx/cpu.c +1 -1
@@ -122,7 +122,7 @@ int checkcpu(void)printf (" at %s MHz, " ,strmhz (buf, clock)); -printf ("CSB: %s MHz\n" ,strmhz (buf, gd->csb_clk)); +printf ("CSB: %s MHz\n" ,strmhz (buf, gd->arch.csb_clk));return 0 ; }
arch/powerpc/cpu/mpc83xx/fdt.c +1 -1
@@ -118,7 +118,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)do_fixup_by_prop_u32 (blob,"device_type" ,"cpu" ,4 ,"bus-frequency" , bd->bi_busfreq,1 );do_fixup_by_prop_u32 (blob,"device_type" ,"cpu" ,4 , -"clock-frequency" , gd->core_clk,1 ); +"clock-frequency" , gd->arch.core_clk,1 );do_fixup_by_prop_u32 (blob,"device_type" ,"soc" ,4 ,"bus-frequency" , bd->bi_busfreq,1 ); do_fixup_by_compat_u32(blob, "fsl,soc",
arch/powerpc/cpu/mpc83xx/pcie.c +2 -2
@@ -286,8 +286,8 @@ static void mpc83xx_pcie_init_bus(int bus, struct pci_region *reg)get_clocks ();/* Configure the PCIE controller core clock ratio */ out_le32 (hose_cfg_base +PEX_GCLK_RATIO , - (((bus ? gd->pciexp2_clk : gd->pciexp1_clk) /1000000 ) *16 ) - /333 ); + (((bus ? gd->arch.pciexp2_clk : gd->arch.pciexp1_clk) + /1000000 ) *16 ) /333 );udelay (1000000 );/* Do Type 1 bridge configuration */
arch/powerpc/cpu/mpc83xx/speed.c +48 -33
157 lines not on this page · raw message
arch/powerpc/include/asm/global_data.h +34 -39
98 lines not on this page · raw message
Signature · 1 line
1.7.7.3
PATCH v2 19/58 ppc: Move lbc_clk and cpu to arch_global_data
In reply to Simon GlassMove these fields into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/cpu/mpc85xx/cpu.c | 2 +- arch/powerpc/cpu/mpc85xx/fdt.c | 4 ++-- arch/powerpc/cpu/mpc85xx/speed.c | 2 +- arch/powerpc/cpu/mpc86xx/cpu.c | 2 +- arch/powerpc/cpu/mpc86xx/fdt.c | 4 ++-- arch/powerpc/cpu/mpc86xx/speed.c | 2 +- arch/powerpc/cpu/mpc8xxx/cpu.c | 8 ++++---- arch/powerpc/include/asm/global_data.h | 8 ++++---- arch/powerpc/lib/board.c | 7 ++++--- board/freescale/bsc9131rdb/bsc9131rdb.c | 2 +- board/freescale/corenet_ds/corenet_ds.c | 2 +- board/freescale/p1010rdb/ddr.c | 6 +++--- board/freescale/p1010rdb/p1010rdb.c | 6 +++--- board/freescale/p1_p2_rdb/ddr.c | 2 +- board/freescale/p1_p2_rdb/p1_p2_rdb.c | 2 +- board/freescale/p2041rdb/p2041rdb.c | 2 +- board/freescale/t4qds/t4qds.c | 2 +- 17 files changed, 32 insertions(+), 31 deletions(-)
arch/powerpc/cpu/mpc85xx/cpu.c +1 -1
@@ -104,7 +104,7 @@ int checkcpu (void)puts ("CPU: " ); } - cpu = gd->cpu; + cpu = gd->arch.cpu;puts (cpu->name);if (IS_E_PROCESSOR (svr))
arch/powerpc/cpu/mpc85xx/fdt.c +2 -2
@@ -613,9 +613,9 @@ void ft_cpu_setup(void *blob, bd_t *bd) "bus-frequency", bd->bi_busfreq, 1);do_fixup_by_compat_u32 (blob,"fsl,pq3-localbus" , -"bus-frequency" , gd->lbc_clk,1 ); +"bus-frequency" , gd->arch.lbc_clk,1 );do_fixup_by_compat_u32 (blob,"fsl,elbc" , -"bus-frequency" , gd->lbc_clk,1 ); +"bus-frequency" , gd->arch.lbc_clk,1 );#ifdef CONFIG_QE ft_qe_setup (blob);ft_fixup_qe_snum (blob);
arch/powerpc/cpu/mpc85xx/speed.c +1 -1
@@ -391,7 +391,7 @@ int get_clocks (void) gd->cpu_clk = sys_info.freqProcessor[0 ]; gd->bus_clk = sys_info.freqSystemBus; gd->mem_clk = sys_info.freqDDRBus; - gd->lbc_clk = sys_info.freqLocalBus; + gd->arch.lbc_clk = sys_info.freqLocalBus;#ifdef CONFIG_QE gd->qe_clk = sys_info.freqQE;
arch/powerpc/cpu/mpc86xx/cpu.c +1 -1
@@ -67,7 +67,7 @@ checkcpu(void) }puts ("CPU: " ); - cpu = gd->cpu; + cpu = gd->arch.cpu;puts (cpu->name);
arch/powerpc/cpu/mpc86xx/fdt.c +2 -2
@@ -34,10 +34,10 @@ void ft_cpu_setup(void *blob, bd_t *bd)#if defined(CONFIG_MPC8641 )do_fixup_by_compat_u32 (blob,"fsl,mpc8641-localbus" , -"bus-frequency" , gd->lbc_clk,1 ); +"bus-frequency" , gd->arch.lbc_clk,1 );#endif do_fixup_by_compat_u32 (blob,"fsl,elbc" , -"bus-frequency" , gd->lbc_clk,1 ); +"bus-frequency" , gd->arch.lbc_clk,1 );fdt_fixup_memory (blob, (u64 )bd->bi_memstart, (u64 )bd->bi_memsize);
arch/powerpc/cpu/mpc86xx/speed.c +1 -1
@@ -120,7 +120,7 @@ int get_clocks(void)get_sys_info (&sys_info); gd->cpu_clk = sys_info.freqProcessor; gd->bus_clk = sys_info.freqSystemBus; - gd->lbc_clk = sys_info.freqLocalBus; + gd->arch.lbc_clk = sys_info.freqLocalBus;/* * The base clock for I2C depends on the actual SOC. Unfortunately,
arch/powerpc/cpu/mpc8xxx/cpu.c +4 -4
@@ -146,7 +146,7 @@ struct cpu_type *identify_cpu(u32 ver)u32 cpu_mask (void ) {ccsr_pic_t __iomem *pic = (void *)CONFIG_SYS_MPC8xxx_PIC_ADDR; -struct cpu_type *cpu = gd->cpu; +struct cpu_type *cpu = gd->arch.cpu;/* better to query feature reporting register than just assume 1 */ if (cpu == &cpu_type_unknown)
@@ -164,7 +164,7 @@ u32 cpu_mask(void)*/ int cpu_numcores (void ) { -struct cpu_type *cpu = gd->cpu; +struct cpu_type *cpu = gd->arch.cpu;/* * Report # of cores in terms of the cpu_mask if we haven't
@@ -194,7 +194,7 @@ int probecpu (void) svr =get_svr (); ver =SVR_SOC_VER (svr); - gd->cpu =identify_cpu (ver); + gd->arch.cpu =identify_cpu (ver);return 0 ; }
@@ -202,7 +202,7 @@ int probecpu (void)/* Once in memory, compute mask & # cores once and save them off */ int fixup_cpu (void ) { -struct cpu_type *cpu = gd->cpu; +struct cpu_type *cpu = gd->arch.cpu;if (cpu->num_cores ==0 ) { cpu->mask =cpu_mask ();
arch/powerpc/include/asm/global_data.h +4 -4
@@ -76,6 +76,10 @@ struct arch_global_data {u32 mem_sec_clk;# endif /* CONFIG_MPC8360 */ #endif +#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) +u32 lbc_clk; +void *cpu; +#endif /* CONFIG_MPC85xx || CONFIG_MPC86xx */ };/*
@@ -98,10 +102,6 @@ typedef struct global_data {#if defined(CONFIG_FSL_ESDHC )u32 sdhc_clk;#endif -#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) -u32 lbc_clk; -void *cpu; -#endif /* CONFIG_MPC85xx || CONFIG_MPC86xx */ #if defined(CONFIG_MPC83xx) || defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)u32 i2c1_clk;u32 i2c2_clk;
arch/powerpc/lib/board.c +4 -3
@@ -649,10 +649,11 @@ void board_init_r(gd_t *id, ulong dest_addr)#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)/* -* The gd->cpu pointer is set to an address in flash before relocation. -* We need to update it to point to the same CPU entry in RAM. +* The gd->arch.cpu pointer is set to an address in flash before +* relocation. We need to update it to point to the same CPU entry +* in RAM. */ - gd->cpu += dest_addr -CONFIG_SYS_MONITOR_BASE ; + gd->arch.cpu += dest_addr -CONFIG_SYS_MONITOR_BASE ;/* * If we didn't know the cpu mask & # cores, we can save them of
board/freescale/bsc9131rdb/bsc9131rdb.c +1 -1
@@ -59,7 +59,7 @@ int checkboard(void) {struct cpu_type *cpu; - cpu = gd->cpu; + cpu = gd->arch.cpu;printf ("Board: %sRDB\n" , cpu->name);return 0 ;
board/freescale/corenet_ds/corenet_ds.c +1 -1
@@ -42,7 +42,7 @@ DECLARE_GLOBAL_DATA_PTR;int checkboard (void ) {u8 sw; -struct cpu_type *cpu = gd->cpu; +struct cpu_type *cpu = gd->arch.cpu;ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;unsigned int i;static const char *const freq[] = {"100" ,"125" ,"156.25" ,"212.5" };
board/freescale/p1010rdb/ddr.c +3 -3
@@ -99,7 +99,7 @@ unsigned long get_sdram_size(void)struct cpu_type *cpu;phys_size_t ddr_size; - cpu = gd->cpu; + cpu = gd->arch.cpu;/* P1014 and it's derivatives support max 16it DDR width */ if (cpu->soc_ver ==SVR_P1014 ) ddr_size = (CONFIG_SYS_DRAM_SIZE /2 );
@@ -144,7 +144,7 @@ phys_size_t fixed_sdram(void)panic ("Unsupported DDR data rate %s MT/s data rate\n" ,strmhz (buf, ddr_freq)); - cpu = gd->cpu; + cpu = gd->arch.cpu;/* P1014 and it's derivatives support max 16bit DDR width */ if (cpu->soc_ver ==SVR_P1014 ) { ddr_cfg_regs.ddr_sdram_cfg &= ~SDRAM_CFG_DBW_MASK ;
@@ -237,7 +237,7 @@ void fsl_ddr_board_options(memctl_options_t *popts, popts->trwt_override =1 ; popts->trwt =0 ; - cpu = gd->cpu; + cpu = gd->arch.cpu;/* P1014 and it's derivatives support max 16it DDR width */ if (cpu->soc_ver ==SVR_P1014 ) popts->data_bus_width =DDR_DATA_BUS_WIDTH_16 ;
board/freescale/p1010rdb/p1010rdb.c +3 -3
@@ -164,7 +164,7 @@ int checkboard(void) {struct cpu_type *cpu; - cpu = gd->cpu; + cpu = gd->arch.cpu;printf ("Board: %sRDB\n" , cpu->name);return 0 ;
@@ -178,7 +178,7 @@ int board_eth_init(bd_t *bis)struct cpu_type *cpu;int num =0 ; - cpu = gd->cpu; + cpu = gd->arch.cpu;#ifdef CONFIG_TSEC1 SET_STD_TSEC_INFO (tsec_info[num],1 );
@@ -283,7 +283,7 @@ void ft_board_setup(void *blob, bd_t *bd)phys_size_t size;struct cpu_type *cpu; - cpu = gd->cpu; + cpu = gd->arch.cpu;ft_cpu_setup (blob, bd);
board/freescale/p1_p2_rdb/ddr.c +1 -1
@@ -202,7 +202,7 @@ phys_size_t fixed_sdram (void)struct cpu_type *cpu;ulong ddr_freq, ddr_freq_mhz; - cpu = gd->cpu; + cpu = gd->arch.cpu;/* P1020 and it's derivatives support max 32bit DDR width */ if (cpu->soc_ver ==SVR_P1020 || cpu->soc_ver ==SVR_P1011 ) { ddr_size = (CONFIG_SYS_SDRAM_SIZE *1024 *1024 /2 );
board/freescale/p1_p2_rdb/p1_p2_rdb.c +1 -1
@@ -108,7 +108,7 @@ int checkboard (void)else panic ("Unexpected Board REV %x detected!!\n" , board_rev_gpio); - cpu = gd->cpu; + cpu = gd->arch.cpu;printf ("Board: %sRDB Rev%c\n" , cpu->name, board_rev);setbits_be32 (&pgpio->gpdir,GPIO_DIR );
board/freescale/p2041rdb/p2041rdb.c +1 -1
@@ -43,7 +43,7 @@ DECLARE_GLOBAL_DATA_PTR;int checkboard (void ) {u8 sw; -struct cpu_type *cpu = gd->cpu; +struct cpu_type *cpu = gd->arch.cpu;ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;unsigned int i;
board/freescale/t4qds/t4qds.c +1 -1
@@ -45,7 +45,7 @@ DECLARE_GLOBAL_DATA_PTR;int checkboard (void ) {u8 sw; -struct cpu_type *cpu = gd->cpu; +struct cpu_type *cpu = gd->arch.cpu;ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;unsigned int i;
Signature · 1 line
1.7.7.3
PATCH v2 20/58 ppc: m68k: Move i2c1_clk, i2c2_clk to arch_global_data
In reply to Simon GlassMove these fields into arch_global_data and tidy up. This is needed for both ppc and m68k since they share the i2c driver.
---
Changes in v2: None
arch/m68k/cpu/mcf5227x/speed.c | 2 +- arch/m68k/cpu/mcf523x/speed.c | 2 +- arch/m68k/cpu/mcf52x2/speed.c | 4 ++-- arch/m68k/cpu/mcf532x/speed.c | 2 +- arch/m68k/cpu/mcf5445x/speed.c | 4 ++-- arch/m68k/cpu/mcf547x_8x/speed.c | 2 +- arch/m68k/include/asm/global_data.h | 8 ++++---- arch/powerpc/cpu/mpc83xx/speed.c | 10 ++++++---- arch/powerpc/cpu/mpc85xx/speed.c | 10 +++++----- arch/powerpc/cpu/mpc86xx/speed.c | 6 +++--- arch/powerpc/include/asm/global_data.h | 9 +++++---- drivers/i2c/fsl_i2c.c | 7 ++++--- 12 files changed, 35 insertions(+), 31 deletions(-)
arch/m68k/cpu/mcf5227x/speed.c +1 -1
@@ -135,7 +135,7 @@ int get_clocks(void) }#ifdef CONFIG_FSL_I2C - gd->i2c1_clk = gd->bus_clk; + gd->arch.i2c1_clk = gd->bus_clk;#endif return (0 );
arch/m68k/cpu/mcf523x/speed.c +1 -1
@@ -48,7 +48,7 @@ int get_clocks(void) gd->cpu_clk = (gd->bus_clk *2 );#ifdef CONFIG_FSL_I2C - gd->i2c1_clk = gd->bus_clk; + gd->arch.i2c1_clk = gd->bus_clk;#endif return (0 );
arch/m68k/cpu/mcf52x2/speed.c +2 -2
@@ -91,9 +91,9 @@ int get_clocks (void)#endif #ifdef CONFIG_FSL_I2C - gd->i2c1_clk = gd->bus_clk; + gd->arch.i2c1_clk = gd->bus_clk;#ifdef CONFIG_SYS_I2C2_OFFSET - gd->i2c2_clk = gd->bus_clk; + gd->arch.i2c2_clk = gd->bus_clk;#endif #endif
arch/m68k/cpu/mcf532x/speed.c +1 -1
@@ -271,7 +271,7 @@ int get_clocks(void) gd->cpu_clk = (gd->bus_clk *3 );#ifdef CONFIG_FSL_I2C - gd->i2c1_clk = gd->bus_clk; + gd->arch.i2c1_clk = gd->bus_clk;#endif return (0 );
arch/m68k/cpu/mcf5445x/speed.c +2 -2
@@ -274,7 +274,7 @@ void setup_5445x_clocks(void) }#ifdef CONFIG_FSL_I2C - gd->i2c1_clk = gd->bus_clk; + gd->arch.i2c1_clk = gd->bus_clk;#endif }#endif
@@ -290,7 +290,7 @@ int get_clocks(void)#endif #ifdef CONFIG_FSL_I2C - gd->i2c1_clk = gd->bus_clk; + gd->arch.i2c1_clk = gd->bus_clk;#endif return (0 );
arch/m68k/cpu/mcf547x_8x/speed.c +1 -1
@@ -41,7 +41,7 @@ int get_clocks(void) gd->cpu_clk = (gd->bus_clk *2 );#ifdef CONFIG_FSL_I2C - gd->i2c1_clk = gd->bus_clk; + gd->arch.i2c1_clk = gd->bus_clk;#endif return (0 );
arch/m68k/include/asm/global_data.h +4 -4
@@ -26,6 +26,10 @@/* Architecture-specific global data */ struct arch_global_data { +#ifdef CONFIG_FSL_I2C +unsigned long i2c1_clk; +unsigned long i2c2_clk; +#endif };/*
@@ -50,10 +54,6 @@ typedef struct global_data {unsigned long vco_clk;unsigned long flb_clk;#endif -#ifdef CONFIG_FSL_I2C -unsigned long i2c1_clk; -unsigned long i2c2_clk; -#endif phys_size_t ram_size;/* RAM size */ unsigned long reloc_off;/* Relocation Offset */ unsigned long reset_status;/* reset status register at boot */
arch/powerpc/cpu/mpc83xx/speed.c +6 -4
@@ -481,9 +481,9 @@ int get_clocks(void) gd->sdhc_clk = sdhc_clk;#endif gd->arch.core_clk = core_clk; - gd->i2c1_clk = i2c1_clk; + gd->arch.i2c1_clk = i2c1_clk;#if !defined(CONFIG_MPC832x) - gd->i2c2_clk = i2c2_clk; + gd->arch.i2c2_clk = i2c2_clk;#endif #if !defined(CONFIG_MPC8309 ) gd->arch.enc_clk = enc_clk;
@@ -558,9 +558,11 @@ static int do_clocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])printf (" SEC: %-4s MHz\n" ,strmhz (buf, gd->arch.enc_clk));#endif -printf (" I2C1: %-4s MHz\n" ,strmhz (buf, gd->i2c1_clk)); +printf (" I2C1: %-4s MHz\n" , +strmhz (buf, gd->arch.i2c1_clk));#if !defined(CONFIG_MPC832x) -printf (" I2C2: %-4s MHz\n" ,strmhz (buf, gd->i2c2_clk)); +printf (" I2C2: %-4s MHz\n" , +strmhz (buf, gd->arch.i2c2_clk));#endif #if defined(CONFIG_MPC8315 ) printf(" TDM: %-4s MHz\n",
arch/powerpc/cpu/mpc85xx/speed.c +5 -5
@@ -406,7 +406,7 @@ int get_clocks (void)*/ #if defined(CONFIG_MPC8540 ) || defined(CONFIG_MPC8541 ) || \ defined(CONFIG_MPC8560 ) || defined(CONFIG_MPC8555 ) - gd->i2c1_clk = sys_info.freqSystemBus; + gd->arch.i2c1_clk = sys_info.freqSystemBus;#elif defined(CONFIG_MPC8544 )/* * On the 8544, the I2C clock is the same as the SEC clock. This can be
@@ -416,14 +416,14 @@ int get_clocks (void)* PORDEVSR2_SEC_CFG bit is 0 on all 85xx boards that are not an 8544. */ if (gur->pordevsr2 & MPC85xx_PORDEVSR2_SEC_CFG) - gd->i2c1_clk = sys_info.freqSystemBus /3 ; + gd->arch.i2c1_clk = sys_info.freqSystemBus /3 ;else - gd->i2c1_clk = sys_info.freqSystemBus /2 ; + gd->arch.i2c1_clk = sys_info.freqSystemBus /2 ;#else /* Most 85xx SOCs use CCB/2, so this is the default behavior. */ - gd->i2c1_clk = sys_info.freqSystemBus /2 ; + gd->arch.i2c1_clk = sys_info.freqSystemBus /2 ;#endif - gd->i2c2_clk = gd->i2c1_clk; + gd->arch.i2c2_clk = gd->arch.i2c1_clk;#if defined(CONFIG_FSL_ESDHC ) #if defined(CONFIG_MPC8569) || defined(CONFIG_P1010) ||\
arch/powerpc/cpu/mpc86xx/speed.c +3 -3
@@ -130,11 +130,11 @@ int get_clocks(void)* AN2919. */ #ifdef CONFIG_MPC8610 - gd->i2c1_clk = sys_info.freqSystemBus; + gd->arch.i2c1_clk = sys_info.freqSystemBus;#else - gd->i2c1_clk = sys_info.freqSystemBus /2 ; + gd->arch.i2c1_clk = sys_info.freqSystemBus /2 ;#endif - gd->i2c2_clk = gd->i2c1_clk; + gd->arch.i2c2_clk = gd->arch.i2c1_clk;if (gd->cpu_clk !=0 )return 0 ;
arch/powerpc/include/asm/global_data.h +5 -4
@@ -80,6 +80,11 @@ struct arch_global_data {u32 lbc_clk;void *cpu;#endif /* CONFIG_MPC85xx || CONFIG_MPC86xx */ +#if defined(CONFIG_MPC83xx) || defined(CONFIG_MPC85xx) || \ + defined(CONFIG_MPC86xx) +u32 i2c1_clk; +u32 i2c2_clk; +#endif };/*
@@ -102,10 +107,6 @@ typedef struct global_data {#if defined(CONFIG_FSL_ESDHC )u32 sdhc_clk;#endif -#if defined(CONFIG_MPC83xx) || defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) -u32 i2c1_clk; -u32 i2c2_clk; -#endif #if defined(CONFIG_QE )u32 qe_clk;uint mp_alloc_base;
drivers/i2c/fsl_i2c.c +4 -3
@@ -217,9 +217,9 @@ static unsigned int set_i2c_bus_speed(const struct fsl_i2c *dev,static unsigned int get_i2c_clock (int bus) {if (bus) -return gd->i2c2_clk;/* I2C2 clock */ +return gd->arch.i2c2_clk;/* I2C2 clock */ else -return gd->i2c1_clk;/* I2C1 clock */ +return gd->arch.i2c1_clk;/* I2C1 clock */ }void
@@ -468,7 +468,8 @@ int i2c_set_bus_num(unsigned int bus)int i2c_set_bus_speed (unsigned int speed) { -unsigned int i2c_clk = (i2c_bus_num ==1 ) ? gd->i2c2_clk : gd->i2c1_clk; +unsigned int i2c_clk = (i2c_bus_num ==1 ) + ? gd->arch.i2c2_clk : gd->arch.i2c1_clk;writeb (0 , &i2c_dev[i2c_bus_num]->cr);/* stop controller */ i2c_bus_speed[i2c_bus_num] =
Signature · 1 line
1.7.7.3
PATCH v2 21/58 ppc: Move CONFIG_QE to arch_global_data
In reply to Simon GlassMove the quantative easing fields into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/cpu/mpc83xx/speed.c | 5 +++-- arch/powerpc/cpu/mpc85xx/speed.c | 4 ++-- arch/powerpc/include/asm/global_data.h | 14 ++++++-------- drivers/qe/fdt.c | 8 ++++---- drivers/qe/qe.c | 19 ++++++++++--------- 5 files changed, 25 insertions(+), 25 deletions(-)
arch/powerpc/cpu/mpc83xx/speed.c +3 -2
@@ -495,7 +495,7 @@ int get_clocks(void) gd->arch.mem_sec_clk = mem_sec_clk;#endif #if defined(CONFIG_QE ) - gd->qe_clk = qe_clk; + gd->arch.qe_clk = qe_clk; gd->arch.brg_clk = brg_clk;#endif #if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \
@@ -541,7 +541,8 @@ static int do_clocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])printf (" Coherent System Bus: %-4s MHz\n" ,strmhz (buf, gd->arch.csb_clk));#if defined(CONFIG_QE ) -printf (" QE: %-4s MHz\n" ,strmhz (buf, gd->qe_clk)); +printf (" QE: %-4s MHz\n" , +strmhz (buf, gd->arch.qe_clk));printf (" BRG: %-4s MHz\n" ,strmhz (buf, gd->arch.brg_clk));#endif
arch/powerpc/cpu/mpc85xx/speed.c +2 -2
@@ -394,8 +394,8 @@ int get_clocks (void) gd->arch.lbc_clk = sys_info.freqLocalBus;#ifdef CONFIG_QE - gd->qe_clk = sys_info.freqQE; - gd->arch.brg_clk = gd->qe_clk /2 ; + gd->arch.qe_clk = sys_info.freqQE; + gd->arch.brg_clk = gd->arch.qe_clk /2 ;#endif /* * The base clock for I2C depends on the actual SOC. Unfortunately,
arch/powerpc/include/asm/global_data.h +6 -8
@@ -39,9 +39,6 @@ struct arch_global_data {unsigned long scc_clk;unsigned long brg_clk;#endif -#if defined(CONFIG_QE ) -u32 brg_clk; -#endif /* TODO: sjg at chromium.org: Should these be unslgned long? */ #if defined(CONFIG_MPC83xx)/* There are other clocks in the MPC83XX */
@@ -85,6 +82,12 @@ struct arch_global_data {u32 i2c1_clk;u32 i2c2_clk;#endif +#if defined(CONFIG_QE ) +u32 qe_clk; +u32 brg_clk; +uint mp_alloc_base; +uint mp_alloc_top; +#endif /* CONFIG_QE */ };/*
@@ -107,11 +110,6 @@ typedef struct global_data {#if defined(CONFIG_FSL_ESDHC )u32 sdhc_clk;#endif -#if defined(CONFIG_QE ) -u32 qe_clk; -uint mp_alloc_base; -uint mp_alloc_top; -#endif /* CONFIG_QE */ #if defined(CONFIG_FSL_LAW )u32 used_laws;#endif
drivers/qe/fdt.c +4 -4
@@ -75,16 +75,16 @@ error:void ft_qe_setup (void *blob) {do_fixup_by_prop_u32 (blob,"device_type" ,"qe" ,4 , -"bus-frequency" , gd->qe_clk,1 ); +"bus-frequency" , gd->arch.qe_clk,1 );do_fixup_by_prop_u32 (blob,"device_type" ,"qe" ,4 ,"brg-frequency" , gd->arch.brg_clk,1 );do_fixup_by_compat_u32 (blob,"fsl,qe" , -"clock-frequency" , gd->qe_clk,1 ); +"clock-frequency" , gd->arch.qe_clk,1 );do_fixup_by_compat_u32 (blob,"fsl,qe" , -"bus-frequency" , gd->qe_clk,1 ); +"bus-frequency" , gd->arch.qe_clk,1 );do_fixup_by_compat_u32 (blob,"fsl,qe" ,"brg-frequency" , gd->arch.brg_clk,1 );do_fixup_by_compat_u32 (blob,"fsl,qe-gtm" , -"clock-frequency" , gd->qe_clk /2 ,1 ); +"clock-frequency" , gd->arch.qe_clk /2 ,1 );fdt_fixup_qe_firmware (blob); }
drivers/qe/qe.c +10 -9
@@ -58,21 +58,22 @@ uint qe_muram_alloc(uint size, uint align)uint savebase; align_mask = align -1 ; - savebase = gd->mp_alloc_base; + savebase = gd->arch.mp_alloc_base; -if ((off = (gd->mp_alloc_base & align_mask)) !=0 ) - gd->mp_alloc_base += (align - off); + off = gd->arch.mp_alloc_base & align_mask; +if (off !=0 ) + gd->arch.mp_alloc_base += (align - off);if ((off = size & align_mask) !=0 ) size += (align - off); -if ((gd->mp_alloc_base + size) >= gd->mp_alloc_top) { - gd->mp_alloc_base = savebase; +if ((gd->arch.mp_alloc_base + size) >= gd->arch.mp_alloc_top) { + gd->arch.mp_alloc_base = savebase;printf ("%s: ran out of ram.\n" , __FUNCTION__); } - retloc = gd->mp_alloc_base; - gd->mp_alloc_base += size; + retloc = gd->arch.mp_alloc_base; + gd->arch.mp_alloc_base += size;memset ((void *)&qe_immr->muram[retloc],0 , size);
@@ -183,8 +184,8 @@ void qe_init(uint qe_base)out_be32 (&qe_immr->iram.iready,QE_IRAM_READY );#endif - gd->mp_alloc_base =QE_DATAONLY_BASE ; - gd->mp_alloc_top = gd->mp_alloc_base +QE_DATAONLY_SIZE ; + gd->arch.mp_alloc_base =QE_DATAONLY_BASE ; + gd->arch.mp_alloc_top = gd->arch.mp_alloc_base +QE_DATAONLY_SIZE ;qe_sdma_init ();qe_snums_init ();
Signature · 1 line
1.7.7.3
PATCH v2 22/58 ppc: Move used_laws to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/cpu/mpc8xxx/law.c | 16 ++++++++-------- arch/powerpc/include/asm/global_data.h | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-)
arch/powerpc/cpu/mpc8xxx/law.c +8 -8
@@ -69,7 +69,7 @@ static inline void set_law_base_addr(int idx, phys_addr_t addr)void set_law (u8 idx,phys_addr_t addr,enum law_size sz,enum law_trgt_if id) { - gd->used_laws |= (1 << idx); + gd->arch.used_laws |= (1 << idx);out_be32 (LAWAR_ADDR (idx),0 );set_law_base_addr (idx, addr);
@@ -81,7 +81,7 @@ void set_law(u8 idx, phys_addr_t addr, enum law_size sz, enum law_trgt_if id)void disable_law (u8 idx) { - gd->used_laws &= ~(1 << idx); + gd->arch.used_laws &= ~(1 << idx);out_be32 (LAWAR_ADDR (idx),0 );set_law_base_addr (idx,0 );
@@ -112,7 +112,7 @@ static int get_law_entry(u8 i, struct law_entry *e)int set_next_law (phys_addr_t addr,enum law_size sz,enum law_trgt_if id) { -u32 idx =ffz (gd->used_laws); +u32 idx =ffz (gd->arch.used_laws);if (idx >=FSL_HW_NUM_LAWS )return -1 ;
@@ -128,11 +128,11 @@ int set_last_law(phys_addr_t addr, enum law_size sz, enum law_trgt_if id)u32 idx;/* we have no LAWs free */ -if (gd->used_laws ==-1 ) +if (gd->arch.used_laws ==-1 )return -1 ;/* grab the last free law */ - idx =__ilog2 (~(gd->used_laws)); + idx =__ilog2 (~(gd->arch.used_laws));if (idx >=FSL_HW_NUM_LAWS )return -1 ;
@@ -240,9 +240,9 @@ void init_laws(void)int i;#if FSL_HW_NUM_LAWS <32 - gd->used_laws = ~((1 <<FSL_HW_NUM_LAWS ) -1 ); + gd->arch.used_laws = ~((1 <<FSL_HW_NUM_LAWS ) -1 );#elif FSL_HW_NUM_LAWS ==32 - gd->used_laws =0 ; + gd->arch.used_laws =0 ;#else #error FSL_HW_NUM_LAWS can not be greater than 32 w/o code changes#endif
@@ -255,7 +255,7 @@ void init_laws(void)u32 lawar =in_be32 (LAWAR_ADDR (i));if (lawar &LAW_EN ) - gd->used_laws |= (1 << i); + gd->arch.used_laws |= (1 << i); } #if (defined(CONFIG_NAND_U_BOOT) && !defined(CONFIG_NAND_SPL)) || \
arch/powerpc/include/asm/global_data.h +3 -3
@@ -88,6 +88,9 @@ struct arch_global_data {uint mp_alloc_base;uint mp_alloc_top;#endif /* CONFIG_QE */ +#if defined(CONFIG_FSL_LAW ) +u32 used_laws; +#endif };/*
@@ -110,9 +113,6 @@ typedef struct global_data {#if defined(CONFIG_FSL_ESDHC )u32 sdhc_clk;#endif -#if defined(CONFIG_FSL_LAW ) -u32 used_laws; -#endif #if defined(CONFIG_E500 )u32 used_tlb_cams[(CONFIG_SYS_NUM_TLBCAMS +31 )/32 ];#endif
Signature · 1 line
1.7.7.3
PATCH v2 23/58 ppc: Move used_tlb_cams to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/cpu/mpc85xx/tlb.c | 8 ++++---- arch/powerpc/include/asm/global_data.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-)
arch/powerpc/cpu/mpc85xx/tlb.c +4 -4
@@ -99,7 +99,7 @@ static inline void use_tlb_cam(u8 idx)int i = idx /32 ;int bit = idx %32 ; - gd->used_tlb_cams[i] |= (1 << bit); + gd->arch.used_tlb_cams[i] |= (1 << bit); }static inline void free_tlb_cam (u8 idx)
@@ -107,7 +107,7 @@ static inline void free_tlb_cam(u8 idx)int i = idx /32 ;int bit = idx %32 ; - gd->used_tlb_cams[i] &= ~(1 << bit); + gd->arch.used_tlb_cams[i] &= ~(1 << bit); }void init_used_tlb_cams (void )
@@ -116,7 +116,7 @@ void init_used_tlb_cams(void)unsigned int num_cam =mfspr (SPRN_TLB1CFG ) &0xfff ;for (i =0 ; i < ((CONFIG_SYS_NUM_TLBCAMS +31 )/32 ); i++) - gd->used_tlb_cams[i] =0 ; + gd->arch.used_tlb_cams[i] =0 ;/* walk all the entries */ for (i =0 ; i < num_cam; i++) {
@@ -133,7 +133,7 @@ int find_free_tlbcam(void)u32 idx;for (i =0 ; i < ((CONFIG_SYS_NUM_TLBCAMS +31 )/32 ); i++) { - idx =ffz (gd->used_tlb_cams[i]); + idx =ffz (gd->arch.used_tlb_cams[i]);if (idx !=32 )break ;
arch/powerpc/include/asm/global_data.h +3 -3
@@ -91,6 +91,9 @@ struct arch_global_data {#if defined(CONFIG_FSL_LAW )u32 used_laws;#endif +#if defined(CONFIG_E500 ) +u32 used_tlb_cams[(CONFIG_SYS_NUM_TLBCAMS +31 )/32 ]; +#endif };/*
@@ -113,9 +116,6 @@ typedef struct global_data {#if defined(CONFIG_FSL_ESDHC )u32 sdhc_clk;#endif -#if defined(CONFIG_E500 ) -u32 used_tlb_cams[(CONFIG_SYS_NUM_TLBCAMS +31 )/32 ]; -#endif #if defined(CONFIG_MPC5xxx)unsigned long ipb_clk;#endif
Signature · 1 line
1.7.7.3
PATCH v2 24/58 ppc: Move mpc5xxx clocks to arch_global_data
In reply to Simon GlassMove ipb_clk and pci_clk into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/cpu/mpc5xxx/i2c.c | 2 +- arch/powerpc/cpu/mpc5xxx/ide.c | 2 +- arch/powerpc/cpu/mpc5xxx/serial.c | 4 ++-- arch/powerpc/cpu/mpc5xxx/speed.c | 18 ++++++++++++------ arch/powerpc/cpu/mpc8220/fec.c | 8 +++++--- arch/powerpc/include/asm/global_data.h | 6 +++--- arch/powerpc/lib/board.c | 2 +- board/inka4x0/inkadiag.c | 8 ++++---- drivers/input/ps2ser.c | 2 +- drivers/net/mpc5xxx_fec.c | 9 ++++++--- 10 files changed, 36 insertions(+), 25 deletions(-)
arch/powerpc/cpu/mpc5xxx/i2c.c +1 -1
@@ -310,7 +310,7 @@ static int mpc_get_fdr(int speed) {126, 128} }; - ipb = gd->ipb_clk; + ipb = gd->arch.ipb_clk;for (i =7 ; i >=0 ; i--) {for (j =7 ; j >=0 ; j--) { scl = 2 * (scltap[j].scl2tap +
arch/powerpc/cpu/mpc5xxx/ide.c +1 -1
@@ -75,7 +75,7 @@ int ide_preinit (void) psdma->PtdCntrl |=1 ;/* Init timings : we use PIO mode 0 timings */ - period =1000000000 / gd->ipb_clk;/* period in ns */ + period =1000000000 / gd->arch.ipb_clk;/* period in ns */ t0 =CALC_TIMING (600 ); t2_8 =CALC_TIMING (290 );
arch/powerpc/cpu/mpc5xxx/serial.c +2 -2
@@ -89,7 +89,7 @@ int serial_init_dev (unsigned long dev_base)/* select clock sources */ psc->psc_clock_select =0 ; - baseclk = (gd->ipb_clk +16 ) /32 ; + baseclk = (gd->arch.ipb_clk +16 ) /32 ;/* switch to UART mode */ psc->sicr =0 ;
@@ -169,7 +169,7 @@ void serial_setbrg_dev (unsigned long dev_base)volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)dev_base;unsigned long baseclk, div; - baseclk = (gd->ipb_clk +16 ) /32 ; + baseclk = (gd->arch.ipb_clk +16 ) /32 ;/* set up UART divisor */ div = (baseclk + (gd->baudrate/2 )) / gd->baudrate;
arch/powerpc/cpu/mpc5xxx/speed.c +12 -6
@@ -66,14 +66,20 @@ int get_clocks (void) val = *(vu_long *)MPC5XXX_CDM_CFG ;if (val & (1 <<8 )) { - gd->ipb_clk = gd->bus_clk /2 ; + gd->arch.ipb_clk = gd->bus_clk /2 ; }else { - gd->ipb_clk = gd->bus_clk; + gd->arch.ipb_clk = gd->bus_clk; }switch (val &3 ) { -case 0 : gd->pci_clk = gd->ipb_clk;break ; -case 1 : gd->pci_clk = gd->ipb_clk /2 ;break ; -default : gd->pci_clk = gd->bus_clk /4 ;break ; +case 0 : + gd->pci_clk = gd->arch.ipb_clk; +break ; +case 1 : + gd->pci_clk = gd->arch.ipb_clk /2 ; +break ; +default : + gd->pci_clk = gd->bus_clk /4 ; +break ; }return (0 );
@@ -85,7 +91,7 @@ int prt_mpc5xxx_clks (void)printf (" Bus %s MHz, IPB %s MHz, PCI %s MHz\n" ,strmhz (buf1, gd->bus_clk), -strmhz (buf2, gd->ipb_clk), +strmhz (buf2, gd->arch.ipb_clk),strmhz (buf3, gd->pci_clk) );return (0 );
arch/powerpc/cpu/mpc8220/fec.c +5 -3
@@ -288,9 +288,11 @@ static int mpc8220_fec_init (struct eth_device *dev, bd_t * bis)* Set MII_SPEED = (1/(mii_speed * 2)) * System Clock * and do not drop the Preamble. */ -/* tbd - rtm */ -/*fec->eth->mii_speed = (((gd->ipb_clk >> 20) / 5) << 1); */ -/* No MII for 7-wire mode */ +/* +* tbd - rtm +* fec->eth->mii_speed = (((gd->arch.ipb_clk >> 20) / 5) << 1); +* No MII for 7-wire mode +*/ fec->eth->mii_speed =0x00000030 ; }
arch/powerpc/include/asm/global_data.h +3 -3
@@ -94,6 +94,9 @@ struct arch_global_data {#if defined(CONFIG_E500 )u32 used_tlb_cams[(CONFIG_SYS_NUM_TLBCAMS +31 )/32 ];#endif +#if defined(CONFIG_MPC5xxx) +unsigned long ipb_clk; +#endif };/*
@@ -116,9 +119,6 @@ typedef struct global_data {#if defined(CONFIG_FSL_ESDHC )u32 sdhc_clk;#endif -#if defined(CONFIG_MPC5xxx) -unsigned long ipb_clk; -#endif #if defined(CONFIG_MPC512X )u32 ips_clk;u32 csb_clk;
arch/powerpc/lib/board.c +1 -1
@@ -589,7 +589,7 @@ void board_init_f(ulong bootflag) bd->bi_ipsfreq = gd->ips_clk;#endif /* CONFIG_MPC512X */ #if defined(CONFIG_MPC5xxx) - bd->bi_ipbfreq = gd->ipb_clk; + bd->bi_ipbfreq = gd->arch.ipb_clk; bd->bi_pcifreq = gd->pci_clk;#endif /* CONFIG_MPC5xxx */ bd->bi_baudrate = gd->baudrate;/* Console Baudrate */
board/inka4x0/inkadiag.c +4 -4
@@ -187,7 +187,7 @@ static int ser_init(volatile struct mpc5xxx_psc *psc, int baudrate)/* select clock sources */ out_be16 (&psc->psc_clock_select,0 ); - baseclk = (gd->ipb_clk +16 ) /32 ; + baseclk = (gd->arch.ipb_clk +16 ) /32 ;/* switch to UART mode */ out_be32 (&psc->sicr,0 );
@@ -369,7 +369,7 @@ static void buzzer_turn_on(unsigned int freq) {volatile struct mpc5xxx_gpt *gpt = (struct mpc5xxx_gpt *)(BUZZER_GPT ); -const u32 prescale = gd->ipb_clk / freq /128 ; +const u32 prescale = gd->arch.ipb_clk / freq /128 ;const u32 count =128 ;const u32 width =64 ;
@@ -405,9 +405,9 @@ static int do_inkadiag_buzzer(cmd_tbl_t *cmdtp, int flag, int argc, freq =simple_strtol (argv[0 ],NULL ,0 );/* avoid zero prescale in buzzer_turn_on() */ -if (freq > gd->ipb_clk /128 ) { +if (freq > gd->arch.ipb_clk /128 ) {printf ("%dHz exceeds maximum (%ldHz)\n" , freq, - gd->ipb_clk /128 ); + gd->arch.ipb_clk /128 ); }else if (!freq)printf ("Zero frequency is senseless\n" );else
drivers/input/ps2ser.c +1 -1
@@ -80,7 +80,7 @@ int ps2ser_init(void)/* select clock sources */ psc->psc_clock_select =0 ; - baseclk = (gd->ipb_clk +16 ) /32 ; + baseclk = (gd->arch.ipb_clk +16 ) /32 ;/* switch to UART mode */ psc->sicr =0 ;
drivers/net/mpc5xxx_fec.c +6 -3
@@ -440,8 +440,9 @@ static int mpc5xxx_fec_init_phy(struct eth_device *dev, bd_t * bis)/* * Set MII_SPEED = (1/(mii_speed * 2)) * System Clock * and do not drop the Preamble. +* No MII for 7-wire mode */ - fec->eth->mii_speed = (((gd->ipb_clk >>20 ) /5 ) <<1 );/* No MII for 7-wire mode */ + fec->eth->mii_speed = (((gd->arch.ipb_clk >>20 ) /5 ) <<1 ); }if (fec->xcv_type !=SEVENWIRE ) {
@@ -644,8 +645,9 @@ static void mpc5xxx_fec_halt(struct eth_device *dev)/* * Set MII_SPEED = (1/(mii_speed * 2)) * System Clock * and do not drop the Preamble. +* No MII for 7-wire mode */ - fec->eth->mii_speed = (((gd->ipb_clk >>20 ) /5 ) <<1 );/* No MII for 7-wire mode */ + fec->eth->mii_speed = (((gd->arch.ipb_clk >>20 ) /5 ) <<1 ); }#if (DEBUG &0x3 )
@@ -909,8 +911,9 @@ int mpc5xxx_fec_initialize(bd_t * bis)/* * Set MII_SPEED = (1/(mii_speed * 2)) * System Clock * and do not drop the Preamble. +* No MII for 7-wire mode */ - fec->eth->mii_speed = (((gd->ipb_clk >>20 ) /5 ) <<1 );/* No MII for 7-wire mode */ + fec->eth->mii_speed = (((gd->arch.ipb_clk >>20 ) /5 ) <<1 ); } dev->priv = (void *)fec;
Signature · 1 line
1.7.7.3
PATCH v2 25/58 ppc: Move mpc512x clocks to arch_global_data
In reply to Simon GlassMove ips_clk and csb_clk into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/cpu/mpc512x/cpu.c | 2 +- arch/powerpc/cpu/mpc512x/i2c.c | 2 +- arch/powerpc/cpu/mpc512x/ide.c | 2 +- arch/powerpc/cpu/mpc512x/serial.c | 2 +- arch/powerpc/cpu/mpc512x/speed.c | 15 +++++++++------ arch/powerpc/include/asm/global_data.h | 8 ++++---- arch/powerpc/lib/board.c | 2 +- drivers/net/mpc512x_fec.c | 2 +- 8 files changed, 19 insertions(+), 16 deletions(-)
arch/powerpc/cpu/mpc512x/cpu.c +1 -1
@@ -68,7 +68,7 @@ int checkcpu (void) }printf ("at %s MHz, CSB at %s MHz (RSR=0x%04lx)\n" ,strmhz (buf1, clock), -strmhz (buf2, gd->csb_clk), +strmhz (buf2, gd->arch.csb_clk), gd->reset_status &0xffff );return 0 ; }
arch/powerpc/cpu/mpc512x/i2c.c +1 -1
@@ -250,7 +250,7 @@ static int mpc_get_fdr (int speed) {126, 128} }; - ips = gd->ips_clk; + ips = gd->arch.ips_clk;for (i =7 ; i >=0 ; i--) {for (j =7 ; j >=0 ; j--) { scl = 2 * (scltap[j].scl2tap +
arch/powerpc/cpu/mpc512x/ide.c +1 -1
@@ -100,7 +100,7 @@ int ide_preinit (void)ide_set_reset (0 );/* Init timings : we use PIO mode 0 timings */ - t =1000000000 / gd->ips_clk;/* period in ns */ + t =1000000000 / gd->arch.ips_clk;/* period in ns */ cfg.bytes.field1 =3 ; cfg.bytes.field2 =3 ; cfg.bytes.field3 = (pio_specs.t1 + t) / t;
arch/powerpc/cpu/mpc512x/serial.c +1 -1
@@ -140,7 +140,7 @@ void serial_setbrg_dev(unsigned int idx) }/* calculate divisor for setting PSC CTUR and CTLR registers */ - baseclk = (gd->ips_clk +8 ) /16 ; + baseclk = (gd->arch.ips_clk +8 ) /16 ; div = (baseclk + (baudrate /2 )) / baudrate;out_8 (&psc->ctur, (div >>8 ) &0xff );
arch/powerpc/cpu/mpc512x/speed.c +9 -6
@@ -113,9 +113,9 @@ int get_clocks (void) pci_clk =333333 ; } - gd->ips_clk = ips_clk; + gd->arch.ips_clk = ips_clk; gd->pci_clk = pci_clk; - gd->csb_clk = csb_clk; + gd->arch.csb_clk = csb_clk; gd->cpu_clk = core_clk; gd->bus_clk = csb_clk;return 0 ;
@@ -128,7 +128,7 @@ int get_clocks (void)*********************************************/ ulong get_bus_freq (ulong dummy) { -return gd->csb_clk; +return gd->arch.csb_clk; }int do_clocks (cmd_tbl_t * cmdtp,int flag,int argc,char *const argv[])
@@ -137,10 +137,13 @@ int do_clocks (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])printf ("Clock configuration:\n" );printf (" CPU: %-4s MHz\n" ,strmhz (buf, gd->cpu_clk)); -printf (" Coherent System Bus: %-4s MHz\n" ,strmhz (buf, gd->csb_clk)); -printf (" IPS Bus: %-4s MHz\n" ,strmhz (buf, gd->ips_clk)); +printf (" Coherent System Bus: %-4s MHz\n" , +strmhz (buf, gd->arch.csb_clk)); +printf (" IPS Bus: %-4s MHz\n" , +strmhz (buf, gd->arch.ips_clk));printf (" PCI: %-4s MHz\n" ,strmhz (buf, gd->pci_clk)); -printf (" DDR: %-4s MHz\n" ,strmhz (buf,2 *gd->csb_clk)); +printf (" DDR: %-4s MHz\n" , +strmhz (buf,2 * gd->arch.csb_clk));return 0 ; }
arch/powerpc/include/asm/global_data.h +4 -4
@@ -97,6 +97,10 @@ struct arch_global_data {#if defined(CONFIG_MPC5xxx)unsigned long ipb_clk;#endif +#if defined(CONFIG_MPC512X ) +u32 ips_clk; +u32 csb_clk; +#endif /* CONFIG_MPC512X */ };/*
@@ -119,10 +123,6 @@ typedef struct global_data {#if defined(CONFIG_FSL_ESDHC )u32 sdhc_clk;#endif -#if defined(CONFIG_MPC512X ) -u32 ips_clk; -u32 csb_clk; -#endif /* CONFIG_MPC512X */ #if defined(CONFIG_MPC8220 )unsigned long bExtUart;unsigned long inp_clk;
arch/powerpc/lib/board.c +1 -1
@@ -586,7 +586,7 @@ void board_init_f(ulong bootflag) bd->bi_vco = gd->arch.vco_out;#endif /* CONFIG_CPM2 */ #if defined(CONFIG_MPC512X ) - bd->bi_ipsfreq = gd->ips_clk; + bd->bi_ipsfreq = gd->arch.ips_clk;#endif /* CONFIG_MPC512X */ #if defined(CONFIG_MPC5xxx) bd->bi_ipbfreq = gd->arch.ipb_clk;
drivers/net/mpc512x_fec.c +1 -1
@@ -304,7 +304,7 @@ int mpc512x_fec_init_phy (struct eth_device *dev, bd_t * bis)* and do not drop the Preamble. */ out_be32 (&fec->eth->mii_speed, - (((gd->ips_clk /1000000 ) /5 ) +1 ) <<1 ); + (((gd->arch.ips_clk /1000000 ) /5 ) +1 ) <<1 );/* * Reset PHY, then delay 300ns
Signature · 1 line
1.7.7.3
PATCH v2 26/58 ppc: Move mpc8220 clocks to arch_global_data
In reply to Simon GlassMove these fields into arch_global_data and tidy up. The bExtUart field does not appear to be used, so punt it.
---
Changes in v2: None
arch/powerpc/cpu/mpc8220/speed.c | 12 +++++++----- arch/powerpc/include/asm/global_data.h | 13 ++++++------- arch/powerpc/lib/board.c | 14 +++++++------- 3 files changed, 20 insertions(+), 19 deletions(-)
arch/powerpc/cpu/mpc8220/speed.c +7 -5
@@ -71,7 +71,7 @@ int get_clocks (void)#error clock measuring not implemented yet - define CONFIG_SYS_MPC8220_CLKIN#endif - gd->inp_clk =CONFIG_SYS_MPC8220_CLKIN ; + gd->arch.inp_clk =CONFIG_SYS_MPC8220_CLKIN ;/* Read XLB to PCI(INP) clock multiplier */ pci2bus = (*((volatile u32 *)PCI_REG_PCIGSCR) &
@@ -85,7 +85,7 @@ int get_clocks (void)/* FlexBus is temporary set as the same as input clock */ /* will do dynamic in the future */ - gd->flb_clk =CONFIG_SYS_MPC8220_CLKIN ; + gd->arch.flb_clk =CONFIG_SYS_MPC8220_CLKIN ;/* CPU Clock - Read HID1 */ asmvolatile ("mfspr %0, 1009" :"=r" (hid1):);
@@ -97,12 +97,14 @@ int get_clocks (void)for (i =0 ; i < size; i++)if (hid1 == bus2core[i].hid1) { gd->cpu_clk = (bus2core[i].multi * gd->bus_clk) >>1 ; - gd->vco_clk =CONFIG_SYS_MPC8220_SYSPLL_VCO_MULTIPLIER * (gd->pci_clk * bus2core[i].vco_div)/2 ; + gd->arch.vco_clk = +CONFIG_SYS_MPC8220_SYSPLL_VCO_MULTIPLIER * + (gd->pci_clk * bus2core[i].vco_div) /2 ;break ; }/* hardcoded 81MHz for now */ - gd->pev_clk =81000000 ; + gd->arch.pev_clk =81000000 ;return (0 ); }
@@ -115,7 +117,7 @@ int prt_mpc8220_clks (void)strmhz (buf1, gd->bus_clk),strmhz (buf2, gd->cpu_clk),strmhz (buf3, gd->pci_clk), -strmhz (buf4, gd->vco_clk) +strmhz (buf4, gd->arch.vco_clk) );return (0 ); }
arch/powerpc/include/asm/global_data.h +6 -7
@@ -101,6 +101,12 @@ struct arch_global_data {u32 ips_clk;u32 csb_clk;#endif /* CONFIG_MPC512X */ +#if defined(CONFIG_MPC8220 ) +unsigned long inp_clk; +unsigned long vco_clk; +unsigned long pev_clk; +unsigned long flb_clk; +#endif };/*
@@ -123,13 +129,6 @@ typedef struct global_data {#if defined(CONFIG_FSL_ESDHC )u32 sdhc_clk;#endif -#if defined(CONFIG_MPC8220 ) -unsigned long bExtUart; -unsigned long inp_clk; -unsigned long vco_clk; -unsigned long pev_clk; -unsigned long flb_clk; -#endif phys_size_t ram_size;/* RAM size */ unsigned long reset_status;/* reset status register at boot */ #if defined(CONFIG_MPC83xx)
arch/powerpc/lib/board.c +7 -7
@@ -556,11 +556,11 @@ void board_init_f(ulong bootflag)#endif #if defined(CONFIG_MPC8220 ) bd->bi_mbar_base =CONFIG_SYS_MBAR ;/* base of internal registers */ - bd->bi_inpfreq = gd->inp_clk; + bd->bi_inpfreq = gd->arch.inp_clk; bd->bi_pcifreq = gd->pci_clk; - bd->bi_vcofreq = gd->vco_clk; - bd->bi_pevfreq = gd->pev_clk; - bd->bi_flbfreq = gd->flb_clk; + bd->bi_vcofreq = gd->arch.vco_clk; + bd->bi_pevfreq = gd->arch.pev_clk; + bd->bi_flbfreq = gd->arch.flb_clk;/* store bootparam to sram (backward compatible), here? */ {
@@ -568,10 +568,10 @@ void board_init_f(ulong bootflag) *sram++ = gd->ram_size; *sram++ = gd->bus_clk; - *sram++ = gd->inp_clk; + *sram++ = gd->arch.inp_clk; *sram++ = gd->cpu_clk; - *sram++ = gd->vco_clk; - *sram++ = gd->flb_clk; + *sram++ = gd->arch.vco_clk; + *sram++ = gd->arch.flb_clk; *sram++ = 0xb8c3ba11; /* boot signature */ }#endif
Signature · 1 line
1.7.7.3
PATCH v2 27/58 ppc: Move reset_status to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/cpu/mpc512x/cpu.c | 2 +- arch/powerpc/cpu/mpc512x/cpu_init.c | 2 +- arch/powerpc/cpu/mpc8260/cpu_init.c | 4 ++-- arch/powerpc/cpu/mpc83xx/cpu_init.c | 4 ++-- arch/powerpc/include/asm/global_data.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-)
arch/powerpc/cpu/mpc512x/cpu.c +1 -1
@@ -69,7 +69,7 @@ int checkcpu (void)printf ("at %s MHz, CSB at %s MHz (RSR=0x%04lx)\n" ,strmhz (buf1, clock),strmhz (buf2, gd->arch.csb_clk), - gd->reset_status &0xffff ); + gd->arch.reset_status &0xffff );return 0 ; }
arch/powerpc/cpu/mpc512x/cpu_init.c +1 -1
@@ -62,7 +62,7 @@ void cpu_init_f (volatile immap_t * im)#endif /* RSR - Reset Status Register - clear all status */ - gd->reset_status = im->reset.rsr; + gd->arch.reset_status = im->reset.rsr;out_be32 (&im->reset.rsr, ~RSR_RES );/*
arch/powerpc/cpu/mpc8260/cpu_init.c +2 -2
@@ -120,7 +120,7 @@ void cpu_init_f (volatile immap_t * immr)memset ((void *) gd,0 ,sizeof (gd_t));/* RSR - Reset Status Register - clear all status (5-4) */ - gd->reset_status = immr->im_clkrst.car_rsr; + gd->arch.reset_status = immr->im_clkrst.car_rsr; immr->im_clkrst.car_rsr =RSR_ALLBITS ;/* RMR - Reset Mode Register - contains checkstop reset enable (5-5) */
@@ -274,7 +274,7 @@ int prt_8260_rsr (void) RSR_EHRS, "External Hard"} };static int n =sizeof bits /sizeof bits[0 ]; -ulong rsr = gd->reset_status; +ulong rsr = gd->arch.reset_status;int i;char *sep;
arch/powerpc/cpu/mpc83xx/cpu_init.c +2 -2
@@ -232,7 +232,7 @@ void cpu_init_f (volatile immap_t * im)clrsetbits_be32 (&im->clk.sccr, sccr_mask, sccr_val);/* RSR - Reset Status Register - clear all status (4.6.1.3) */ - gd->reset_status =__raw_readl (&im->reset.rsr); + gd->arch.reset_status =__raw_readl (&im->reset.rsr);__raw_writel (~(RSR_RES ), &im->reset.rsr);/* AER - Arbiter Event Register - store status */
@@ -499,7 +499,7 @@ int prt_83xx_rsr(void) RSR_HRS, "External/Internal Hard"} };static int n =sizeof bits /sizeof bits[0 ]; -ulong rsr = gd->reset_status; +ulong rsr = gd->arch.reset_status;int i;char *sep;
arch/powerpc/include/asm/global_data.h +1 -1
@@ -107,6 +107,7 @@ struct arch_global_data {unsigned long pev_clk;unsigned long flb_clk;#endif +unsigned long reset_status;/* reset status register at boot */ };/*
@@ -130,7 +131,6 @@ typedef struct global_data {u32 sdhc_clk;#endif phys_size_t ram_size;/* RAM size */ -unsigned long reset_status;/* reset status register at boot */ #if defined(CONFIG_MPC83xx)unsigned long arbiter_event_attributes;unsigned long arbiter_event_address;
Signature · 1 line
1.7.7.3
PATCH v2 28/58 ppc: Move arbiter fields to arch_global_data
In reply to Simon GlassMove arbiter_event_attributes and arbiter_event_address into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/cpu/mpc83xx/cpu_init.c | 28 +++++++++++++++------------- arch/powerpc/include/asm/global_data.h | 8 ++++---- 2 files changed, 19 insertions(+), 17 deletions(-)
arch/powerpc/cpu/mpc83xx/cpu_init.c +15 -13
@@ -236,8 +236,8 @@ void cpu_init_f (volatile immap_t * im)__raw_writel (~(RSR_RES ), &im->reset.rsr);/* AER - Arbiter Event Register - store status */ - gd->arbiter_event_attributes =__raw_readl (&im->arbiter.aeatr); - gd->arbiter_event_address =__raw_readl (&im->arbiter.aeadr); + gd->arch.arbiter_event_attributes =__raw_readl (&im->arbiter.aeatr); + gd->arch.arbiter_event_address =__raw_readl (&im->arbiter.aeadr);/* * RMR - Reset Mode Register
@@ -440,42 +440,44 @@ static int print_83xx_arb_event(int force)"reserved" }; -int etype = (gd->arbiter_event_attributes &AEATR_EVENT ) +int etype = (gd->arch.arbiter_event_attributes &AEATR_EVENT ) >>AEATR_EVENT_SHIFT ; -int mstr_id = (gd->arbiter_event_attributes &AEATR_MSTR_ID ) +int mstr_id = (gd->arch.arbiter_event_attributes &AEATR_MSTR_ID ) >>AEATR_MSTR_ID_SHIFT ; -int tbst = (gd->arbiter_event_attributes &AEATR_TBST ) +int tbst = (gd->arch.arbiter_event_attributes &AEATR_TBST ) >>AEATR_TBST_SHIFT ; -int tsize = (gd->arbiter_event_attributes &AEATR_TSIZE ) +int tsize = (gd->arch.arbiter_event_attributes &AEATR_TSIZE ) >>AEATR_TSIZE_SHIFT ; -int ttype = (gd->arbiter_event_attributes &AEATR_TTYPE ) +int ttype = (gd->arch.arbiter_event_attributes &AEATR_TTYPE ) >>AEATR_TTYPE_SHIFT ; -if (!force && !gd->arbiter_event_address) +if (!force && !gd->arch.arbiter_event_address)return 0 ;puts ("Arbiter Event Status:\n" ); -printf (" Event Address: 0x%08lX\n" , gd->arbiter_event_address); +printf (" Event Address: 0x%08lX\n" , + gd->arch.arbiter_event_address);printf (" Event Type: 0x%1x = %s\n" , etype, event[etype]);printf (" Master ID: 0x%02x = %s\n" , mstr_id, master[mstr_id]);printf (" Transfer Size: 0x%1x = %d bytes\n" , (tbst<<3 ) | tsize, tbst ? (tsize ? tsize :8 ) :16 +8 * tsize);printf (" Transfer Type: 0x%02x = %s\n" , ttype, transfer[ttype]); -return gd->arbiter_event_address; +return gd->arch.arbiter_event_address; }#elif defined(CONFIG_DISPLAY_AER_BRIEF )static int print_83xx_arb_event (int force) { -if (!force && !gd->arbiter_event_address) +if (!force && !gd->arch.arbiter_event_address)return 0 ;printf ("Arbiter Event Status: AEATR=0x%08lX, AEADR=0x%08lX\n" , - gd->arbiter_event_attributes, gd->arbiter_event_address); + gd->arch.arbiter_event_attributes, + gd->arch.arbiter_event_address); -return gd->arbiter_event_address; +return gd->arch.arbiter_event_address; }#endif /* CONFIG_DISPLAY_AER_xxxx */
arch/powerpc/include/asm/global_data.h +4 -4
@@ -108,6 +108,10 @@ struct arch_global_data {unsigned long flb_clk;#endif unsigned long reset_status;/* reset status register at boot */ +#if defined(CONFIG_MPC83xx) +unsigned long arbiter_event_attributes; +unsigned long arbiter_event_address; +#endif };/*
@@ -131,10 +135,6 @@ typedef struct global_data {u32 sdhc_clk;#endif phys_size_t ram_size;/* RAM size */ -#if defined(CONFIG_MPC83xx) -unsigned long arbiter_event_attributes; -unsigned long arbiter_event_address; -#endif unsigned long env_addr;/* Address of Environment struct */ unsigned long env_valid;/* Checksum of Environment valid? */ unsigned long have_console;/* serial_init() was called */
Signature · 1 line
1.7.7.3
PATCH v2 29/58 ppc: Move dp_alloc_base, dp_alloc_top to arch_global_data
In reply to Simon GlassMove these fields into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/cpu/mpc8260/commproc.c | 19 ++++++++++--------- arch/powerpc/cpu/mpc85xx/commproc.c | 19 ++++++++++--------- arch/powerpc/cpu/mpc8xx/commproc.c | 20 ++++++++++---------- arch/powerpc/include/asm/global_data.h | 8 ++++---- examples/standalone/mem_to_mem_idma2intr.c | 4 ++-- 5 files changed, 36 insertions(+), 34 deletions(-)
arch/powerpc/cpu/mpc8260/commproc.c +10 -9
@@ -30,8 +30,8 @@ m8260_cpm_reset(void)/* Reclaim the DP memory for our use. */ - gd->dp_alloc_base =CPM_DATAONLY_BASE ; - gd->dp_alloc_top = gd->dp_alloc_base +CPM_DATAONLY_SIZE ; + gd->arch.dp_alloc_base =CPM_DATAONLY_BASE ; + gd->arch.dp_alloc_top = gd->arch.dp_alloc_base +CPM_DATAONLY_SIZE ;/* * Reset CPM
@@ -60,21 +60,22 @@ m8260_cpm_dpalloc(uint size, uint align)uint savebase; align_mask = align -1 ; - savebase = gd->dp_alloc_base; + savebase = gd->arch.dp_alloc_base; -if ((off = (gd->dp_alloc_base & align_mask)) !=0 ) - gd->dp_alloc_base += (align - off); + off = gd->arch.dp_alloc_base & align_mask; +if (off !=0 ) + gd->arch.dp_alloc_base += (align - off);if ((off = size & align_mask) !=0 ) size += align - off; -if ((gd->dp_alloc_base + size) >= gd->dp_alloc_top) { - gd->dp_alloc_base = savebase; +if ((gd->arch.dp_alloc_base + size) >= gd->arch.dp_alloc_top) { + gd->arch.dp_alloc_base = savebase;panic ("m8260_cpm_dpalloc: ran out of dual port ram!" ); } - retloc = gd->dp_alloc_base; - gd->dp_alloc_base += size; + retloc = gd->arch.dp_alloc_base; + gd->arch.dp_alloc_base += size;memset ((void *)&immr->im_dprambase[retloc],0 , size);
arch/powerpc/cpu/mpc85xx/commproc.c +10 -9
@@ -43,8 +43,8 @@ m8560_cpm_reset(void)/* Reclaim the DP memory for our use. */ - gd->dp_alloc_base =CPM_DATAONLY_BASE ; - gd->dp_alloc_top = gd->dp_alloc_base +CPM_DATAONLY_SIZE ; + gd->arch.dp_alloc_base =CPM_DATAONLY_BASE ; + gd->arch.dp_alloc_top = gd->arch.dp_alloc_base +CPM_DATAONLY_SIZE ;/* * Reset CPM
@@ -69,21 +69,22 @@ m8560_cpm_dpalloc(uint size, uint align)uint savebase; align_mask = align -1 ; - savebase = gd->dp_alloc_base; + savebase = gd->arch.dp_alloc_base; -if ((off = (gd->dp_alloc_base & align_mask)) !=0 ) - gd->dp_alloc_base += (align - off); + off = gd->arch.dp_alloc_base & align_mask; +if (off !=0 ) + gd->arch.dp_alloc_base += (align - off);if ((off = size & align_mask) !=0 ) size += align - off; -if ((gd->dp_alloc_base + size) >= gd->dp_alloc_top) { - gd->dp_alloc_base = savebase; +if ((gd->arch.dp_alloc_base + size) >= gd->arch.dp_alloc_top) { + gd->arch.dp_alloc_base = savebase;panic ("m8560_cpm_dpalloc: ran out of dual port ram!" ); } - retloc = gd->dp_alloc_base; - gd->dp_alloc_base += size; + retloc = gd->arch.dp_alloc_base; + gd->arch.dp_alloc_base += size;memset ((void *)&(cpm->im_dprambase[retloc]),0 , size);
arch/powerpc/cpu/mpc8xx/commproc.c +10 -10
@@ -31,8 +31,8 @@ DECLARE_GLOBAL_DATA_PTR;int dpram_init (void ) {/* Reclaim the DP memory for our use. */ - gd->dp_alloc_base =CPM_DATAONLY_BASE ; - gd->dp_alloc_top =CPM_DATAONLY_BASE +CPM_DATAONLY_SIZE ; + gd->arch.dp_alloc_base =CPM_DATAONLY_BASE ; + gd->arch.dp_alloc_top =CPM_DATAONLY_BASE +CPM_DATAONLY_SIZE ;return (0 ); }
@@ -43,19 +43,19 @@ int dpram_init (void)*/ uint dpram_alloc (uint size) { -uint addr = gd->dp_alloc_base; +uint addr = gd->arch.dp_alloc_base; -if ((gd->dp_alloc_base + size) >= gd->dp_alloc_top) +if ((gd->arch.dp_alloc_base + size) >= gd->arch.dp_alloc_top)return (CPM_DP_NOSPACE ); - gd->dp_alloc_base += size; + gd->arch.dp_alloc_base += size;return addr; }uint dpram_base (void ) { -return gd->dp_alloc_base; +return gd->arch.dp_alloc_base; }/* Allocate some memory from the dual ported ram. We may want to
@@ -66,12 +66,12 @@ uint dpram_alloc_align (uint size, uint align) {uint addr, mask = align -1 ; - addr = (gd->dp_alloc_base + mask) & ~mask; + addr = (gd->arch.dp_alloc_base + mask) & ~mask; -if ((addr + size) >= gd->dp_alloc_top) +if ((addr + size) >= gd->arch.dp_alloc_top)return (CPM_DP_NOSPACE ); - gd->dp_alloc_base = addr + size; + gd->arch.dp_alloc_base = addr + size;return addr; }
@@ -80,6 +80,6 @@ uint dpram_base_align (uint align) {uint mask = align -1 ; -return (gd->dp_alloc_base + mask) & ~mask; +return (gd->arch.dp_alloc_base + mask) & ~mask; }#endif /* CONFIG_SYS_ALLOC_DPRAM */
arch/powerpc/include/asm/global_data.h +4 -4
@@ -112,6 +112,10 @@ struct arch_global_data {unsigned long arbiter_event_attributes;unsigned long arbiter_event_address;#endif +#if defined(CONFIG_SYS_ALLOC_DPRAM ) || defined(CONFIG_CPM2 ) +unsigned int dp_alloc_base; +unsigned int dp_alloc_top; +#endif };/*
@@ -141,10 +145,6 @@ typedef struct global_data {#ifdef CONFIG_PRE_CONSOLE_BUFFER unsigned long precon_buf_idx;/* Pre-Console buffer index */ #endif -#if defined(CONFIG_SYS_ALLOC_DPRAM ) || defined(CONFIG_CPM2 ) -unsigned int dp_alloc_base; -unsigned int dp_alloc_top; -#endif #if defined(CONFIG_4xx)u32 uart_clk;#endif /* CONFIG_4xx */
examples/standalone/mem_to_mem_idma2intr.c +2 -2
@@ -356,7 +356,7 @@ uint dpalloc (uint size, uint align)/* Pointer to initial global data area */ if (dpinit_done ==0 ) { - dpbase = gd->dp_alloc_base; + dpbase = gd->arch.dp_alloc_base; dpinit_done =1 ; }
@@ -369,7 +369,7 @@ uint dpalloc (uint size, uint align)if ((off = size & align_mask) !=0 ) size += align - off; -if ((dpbase + size) >= gd->dp_alloc_top) { +if ((dpbase + size) >= gd->arch.dp_alloc_top) { dpbase = savebase;printf ("dpalloc: ran out of dual port ram!" );return 0 ;
Signature · 1 line
1.7.7.3
PATCH v2 30/58 arm: Move uart_clk to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/cpu/ppc4xx/4xx_uart.c | 4 ++-- arch/powerpc/cpu/ppc4xx/fdt.c | 4 ++-- arch/powerpc/include/asm/global_data.h | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-)
arch/powerpc/cpu/ppc4xx/4xx_uart.c +2 -2
@@ -296,10 +296,10 @@ int get_serial_clock(void)* the UART divisor is available */ #ifdef CONFIG_SYS_EXT_SERIAL_CLOCK - gd->uart_clk =CONFIG_SYS_EXT_SERIAL_CLOCK ; + gd->arch.uart_clk =CONFIG_SYS_EXT_SERIAL_CLOCK ;#else get_sys_info (&sys_info); - gd->uart_clk = sys_info.freqUART / udiv; + gd->arch.uart_clk = sys_info.freqUART / udiv;#endif return clk;
arch/powerpc/cpu/ppc4xx/fdt.c +2 -2
@@ -141,7 +141,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)/* * Fixup all UART clocks for CPU internal UARTs -* (only these UARTs are definitely clocked by gd->uart_clk) +* (only these UARTs are definitely clocked by gd->arch.uart_clk) * * These UARTs are direct childs of /plb/opb. This code * does not touch any UARTs that are connected to the ebc.
@@ -160,7 +160,7 @@ void ft_cpu_setup(void *blob, bd_t *bd) (fdt_node_check_compatible(blob, off, "ns16550") == 0))fdt_setprop (blob, off,"clock-frequency" , - (void *)&(gd->uart_clk),4 ); + (void *)&gd->arch.uart_clk,4 ); }/*
arch/powerpc/include/asm/global_data.h +3 -3
@@ -116,6 +116,9 @@ struct arch_global_data {unsigned int dp_alloc_base;unsigned int dp_alloc_top;#endif +#if defined(CONFIG_4xx) +u32 uart_clk; +#endif /* CONFIG_4xx */ };/*
@@ -145,9 +148,6 @@ typedef struct global_data {#ifdef CONFIG_PRE_CONSOLE_BUFFER unsigned long precon_buf_idx;/* Pre-Console buffer index */ #endif -#if defined(CONFIG_4xx) -u32 uart_clk; -#endif /* CONFIG_4xx */ #if defined(CONFIG_SYS_GT_6426x)unsigned int mirror_hack[16 ];#endif
Signature · 1 line
1.7.7.3
PATCH v2 31/58 ppc: Move mirror_hack to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/include/asm/global_data.h | 6 +++--- board/evb64260/mpsc.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-)
arch/powerpc/include/asm/global_data.h +3 -3
@@ -119,6 +119,9 @@ struct arch_global_data {#if defined(CONFIG_4xx)u32 uart_clk;#endif /* CONFIG_4xx */ +#if defined(CONFIG_SYS_GT_6426x) +unsigned int mirror_hack[16 ]; +#endif };/*
@@ -148,9 +151,6 @@ typedef struct global_data {#ifdef CONFIG_PRE_CONSOLE_BUFFER unsigned long precon_buf_idx;/* Pre-Console buffer index */ #endif -#if defined(CONFIG_SYS_GT_6426x) -unsigned int mirror_hack[16 ]; -#endif #if defined(CONFIG_A3000) || \ defined(CONFIG_HIDDEN_DRAGON) || \ defined(CONFIG_MUSENKI) || \
board/evb64260/mpsc.c +1 -1
@@ -88,7 +88,7 @@ static void galsdma_enable_rx(void);/* GT64240A errata: cant read MPSC/BRG registers... so make mirrors in ram for read/modify write */ -#define MIRROR_HACK ((struct _tag_mirror_hack *)&(gd->mirror_hack[0])) +#define MIRROR_HACK ((struct _tag_mirror_hack *)&(gd->arch.mirror_hack[0]))#define GT_REG_WRITE_MIRROR_G (a,d) {MIRROR_HACK->a ## _M = d; GT_REG_WRITE(a,d);}#define GTREGREAD_MIRROR_G (a) (MIRROR_HACK->a ## _M)
Signature · 1 line
1.7.7.3
PATCH v2 32/58 ppc: Remove console_addr from global data
In reply to Simon GlassThis does not appear to be used, so punt it.
---
Changes in v2: None
arch/powerpc/include/asm/global_data.h | 6 ------ 1 files changed, 0 insertions(+), 6 deletions(-)
arch/powerpc/include/asm/global_data.h +0 -6
@@ -151,12 +151,6 @@ typedef struct global_data {#ifdef CONFIG_PRE_CONSOLE_BUFFER unsigned long precon_buf_idx;/* Pre-Console buffer index */ #endif -#if defined(CONFIG_A3000 ) || \ - defined(CONFIG_HIDDEN_DRAGON ) || \ - defined(CONFIG_MUSENKI ) || \ - defined(CONFIG_SANDPOINT ) -void * console_addr; -#endif unsigned long relocaddr;/* Start address of U-Boot in RAM */ #if defined(CONFIG_LCD ) || defined(CONFIG_VIDEO )unsigned long fb_base;/* Base address of framebuffer memory */
Signature · 1 line
1.7.7.3
PATCH v2 33/58 ppc: Move fpga_state to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/include/asm/global_data.h | 6 +++--- board/gdsys/405ep/405ep.c | 15 ++++++++------- board/gdsys/405ex/405ex.c | 13 +++++++------ board/gdsys/405ex/io64.c | 2 +- 4 files changed, 19 insertions(+), 17 deletions(-)
arch/powerpc/include/asm/global_data.h +3 -3
@@ -122,6 +122,9 @@ struct arch_global_data {#if defined(CONFIG_SYS_GT_6426x)unsigned int mirror_hack[16 ];#endif +#ifdef CONFIG_SYS_FPGA_COUNT +unsigned fpga_state[CONFIG_SYS_FPGA_COUNT ]; +#endif };/*
@@ -170,9 +173,6 @@ typedef struct global_data {#if defined(CONFIG_LWMON ) || defined(CONFIG_LWMON5 )unsigned long kbd_status;#endif -#ifdef CONFIG_SYS_FPGA_COUNT -unsigned fpga_state[CONFIG_SYS_FPGA_COUNT ]; -#endif #if defined(CONFIG_WD_MAX_RATE )unsigned long long wdt_last;/* trace watch-dog triggering rate */ #endif
board/gdsys/405ep/405ep.c +8 -7
@@ -38,14 +38,14 @@ DECLARE_GLOBAL_DATA_PTR;int get_fpga_state (unsigned dev) { -return gd->fpga_state[dev]; +return gd->arch.fpga_state[dev]; }void print_fpga_state (unsigned dev) { -if (gd->fpga_state[dev] &FPGA_STATE_DONE_FAILED ) +if (gd->arch.fpga_state[dev] &FPGA_STATE_DONE_FAILED )puts (" Waiting for FPGA-DONE timed out.\n" ); -if (gd->fpga_state[dev] &FPGA_STATE_REFLECTION_FAILED ) +if (gd->arch.fpga_state[dev] &FPGA_STATE_REFLECTION_FAILED )puts (" FPGA reflection test failed.\n" ); }
@@ -54,7 +54,7 @@ int board_early_init_f(void)unsigned k;for (k =0 ; k <CONFIG_SYS_FPGA_COUNT ; ++k) - gd->fpga_state[k] =0 ; + gd->arch.fpga_state[k] =0 ;mtdcr (UIC0SR ,0xFFFFFFFF );/* clear all ints */ mtdcr (UIC0ER ,0x00000000 );/* disable all ints */
@@ -78,7 +78,7 @@ int board_early_init_r(void)unsigned ctr;for (k =0 ; k <CONFIG_SYS_FPGA_COUNT ; ++k) - gd->fpga_state[k] =0 ; + gd->arch.fpga_state[k] =0 ;/* * reset FPGA
@@ -94,7 +94,8 @@ int board_early_init_r(void)while (!gd405ep_get_fpga_done (k)) {udelay (100000 );if (ctr++ >5 ) { - gd->fpga_state[k] |=FPGA_STATE_DONE_FAILED ; + gd->arch.fpga_state[k] |= +FPGA_STATE_DONE_FAILED ;break ; } }
@@ -126,7 +127,7 @@ int board_early_init_r(void)udelay (100000 );if (ctr++ >5 ) { - gd->fpga_state[k] |= + gd->arch.fpga_state[k] |=FPGA_STATE_REFLECTION_FAILED ;break ; }
board/gdsys/405ex/405ex.c +7 -6
@@ -15,14 +15,14 @@ DECLARE_GLOBAL_DATA_PTR;int get_fpga_state (unsigned dev) { -return gd->fpga_state[dev]; +return gd->arch.fpga_state[dev]; }void print_fpga_state (unsigned dev) { -if (gd->fpga_state[dev] &FPGA_STATE_DONE_FAILED ) +if (gd->arch.fpga_state[dev] &FPGA_STATE_DONE_FAILED )puts (" Waiting for FPGA-DONE timed out.\n" ); -if (gd->fpga_state[dev] &FPGA_STATE_REFLECTION_FAILED ) +if (gd->arch.fpga_state[dev] &FPGA_STATE_REFLECTION_FAILED )puts (" FPGA reflection test failed.\n" ); }
@@ -192,7 +192,7 @@ int board_early_init_r(void)unsigned ctr;for (k =0 ; k <CONFIG_SYS_FPGA_COUNT ; ++k) - gd->fpga_state[k] =0 ; + gd->arch.fpga_state[k] =0 ;/* * reset FPGA
@@ -208,7 +208,8 @@ int board_early_init_r(void)while (!gd405ex_get_fpga_done (k)) {udelay (100000 );if (ctr++ >5 ) { - gd->fpga_state[k] |=FPGA_STATE_DONE_FAILED ; + gd->arch.fpga_state[k] |= +FPGA_STATE_DONE_FAILED ;break ; } }
@@ -240,7 +241,7 @@ int board_early_init_r(void)udelay (100000 );if (ctr++ >5 ) { - gd->fpga_state[k] |= + gd->arch.fpga_state[k] |=FPGA_STATE_REFLECTION_FAILED ;break ; }
board/gdsys/405ex/io64.c +1 -1
@@ -359,7 +359,7 @@ void gd405ex_init(void)if (i2c_probe (0x22 )) {/* i2c_probe returns 0 on success */ for (k =0 ; k <CONFIG_SYS_FPGA_COUNT ; ++k) - gd->fpga_state[k] |=FPGA_STATE_PLATFORM ; + gd->arch.fpga_state[k] |=FPGA_STATE_PLATFORM ; }else {pca9698_direction_output (0x22 ,39 ,1 ); }
Signature · 1 line
1.7.7.3
PATCH v2 34/58 ppc: Move wdt_last to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/include/asm/global_data.h | 6 +++--- board/lwmon5/lwmon5.c | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-)
arch/powerpc/include/asm/global_data.h +3 -3
@@ -125,6 +125,9 @@ struct arch_global_data {#ifdef CONFIG_SYS_FPGA_COUNT unsigned fpga_state[CONFIG_SYS_FPGA_COUNT ];#endif +#if defined(CONFIG_WD_MAX_RATE ) +unsigned long long wdt_last;/* trace watch-dog triggering rate */ +#endif };/*
@@ -173,9 +176,6 @@ typedef struct global_data {#if defined(CONFIG_LWMON ) || defined(CONFIG_LWMON5 )unsigned long kbd_status;#endif -#if defined(CONFIG_WD_MAX_RATE ) -unsigned long long wdt_last;/* trace watch-dog triggering rate */ -#endif void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ struct arch_global_data arch;/* architecture-specific data */
board/lwmon5/lwmon5.c +4 -4
@@ -357,16 +357,16 @@ void hw_watchdog_reset(void)* Don't allow watch-dog triggering more frequently than * the predefined value CONFIG_WD_MAX_RATE [ticks]. */ -if (ct >= gd->wdt_last) { -if ((ct - gd->wdt_last) <CONFIG_WD_MAX_RATE ) +if (ct >= gd->arch.wdt_last) { +if ((ct - gd->arch.wdt_last) <CONFIG_WD_MAX_RATE )return ; }else {/* Time base counter had been reset */ -if (((unsigned long long )(-1 ) - gd->wdt_last + ct) < +if (((unsigned long long )(-1 ) - gd->arch.wdt_last + ct) <CONFIG_WD_MAX_RATE )return ; } - gd->wdt_last =get_ticks (); + gd->arch.wdt_last =get_ticks ();#endif /*
Signature · 1 line
1.7.7.3
PATCH v2 35/58 ppc: Move kbd_status to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/powerpc/include/asm/global_data.h | 6 +++--- board/lwmon/lwmon.c | 10 +++++----- board/lwmon5/kbd.c | 10 +++++----- 3 files changed, 13 insertions(+), 13 deletions(-)
arch/powerpc/include/asm/global_data.h +3 -3
@@ -128,6 +128,9 @@ struct arch_global_data {#if defined(CONFIG_WD_MAX_RATE )unsigned long long wdt_last;/* trace watch-dog triggering rate */ #endif +#if defined(CONFIG_LWMON ) || defined(CONFIG_LWMON5 ) +unsigned long kbd_status; +#endif };/*
@@ -173,9 +176,6 @@ typedef struct global_data {unsigned long do_mdm_init;unsigned long be_quiet;#endif -#if defined(CONFIG_LWMON ) || defined(CONFIG_LWMON5 ) -unsigned long kbd_status; -#endif void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ struct arch_global_data arch;/* architecture-specific data */
board/lwmon/lwmon.c +5 -5
@@ -482,7 +482,7 @@ static void kbd_init (void)i2c_init (CONFIG_SYS_I2C_SPEED ,CONFIG_SYS_I2C_SLAVE ); - gd->kbd_status =0 ; + gd->arch.kbd_status =0 ;/* Forced by PIC. Delays <= 175us loose */ udelay (1000 );
@@ -496,7 +496,7 @@ static void kbd_init (void)/* clear "irrelevant" bits. Recommended by Martin Rajek, LWN */ errcd &= ~(KEYBD_STATUS_H_RESET |KEYBD_STATUS_BROWNOUT );if (errcd) { - gd->kbd_status |= errcd <<8 ; + gd->arch.kbd_status |= errcd <<8 ; }/* Reset error code and verify */ val =KEYBD_CMD_RESET_ERRORS ;
@@ -509,7 +509,7 @@ static void kbd_init (void) val &=KEYBD_STATUS_MASK ;/* clear unused bits */ if (val) {/* permanent error, report it */ - gd->kbd_status |= val; + gd->arch.kbd_status |= val;return ; }
@@ -568,8 +568,8 @@ int misc_init_r (void) {uchar kbd_data[KEYBD_DATALEN ];char keybd_env[2 *KEYBD_DATALEN +1 ]; -uchar kbd_init_status = gd->kbd_status >>8 ; -uchar kbd_status = gd->kbd_status; +uchar kbd_init_status = gd->arch.kbd_status >>8 ; +uchar kbd_status = gd->arch.kbd_status;uchar val;char *str;int i;
board/lwmon5/kbd.c +5 -5
@@ -113,7 +113,7 @@ static void kbd_init (void)i2c_init (CONFIG_SYS_I2C_SPEED ,CONFIG_SYS_I2C_SLAVE ); - gd->kbd_status =0 ; + gd->arch.kbd_status =0 ;/* Forced by PIC. Delays <= 175us loose */ udelay (1000 );
@@ -127,7 +127,7 @@ static void kbd_init (void)/* clear "irrelevant" bits. Recommended by Martin Rajek, LWN */ errcd &= ~(KEYBD_STATUS_H_RESET |KEYBD_STATUS_BROWNOUT );if (errcd) { - gd->kbd_status |= errcd <<8 ; + gd->arch.kbd_status |= errcd <<8 ; }/* Reset error code and verify */ val =KEYBD_CMD_RESET_ERRORS ;
@@ -140,7 +140,7 @@ static void kbd_init (void) val &=KEYBD_STATUS_MASK ;/* clear unused bits */ if (val) {/* permanent error, report it */ - gd->kbd_status |= val; + gd->arch.kbd_status |= val;return ; }
@@ -216,8 +216,8 @@ int misc_init_r_kbd (void) {uchar kbd_data[KEYBD_DATALEN ];char keybd_env[2 *KEYBD_DATALEN +1 ]; -uchar kbd_init_status = gd->kbd_status >>8 ; -uchar kbd_status = gd->kbd_status; +uchar kbd_init_status = gd->arch.kbd_status >>8 ; +uchar kbd_status = gd->arch.kbd_status;uchar val;ushort data, inv_data;char *str;
Signature · 1 line
1.7.7.3
PATCH v2 36/58 ppc: arm: Move sdhc_clk into arch_global_data
In reply to Simon GlassThis is used by both powerpc and arm, but I think it still qualifies as architecture-specific.
---
Changes in v2: None
arch/arm/cpu/arm1136/mx35/generic.c | 6 +++--- arch/arm/cpu/arm926ejs/mx25/generic.c | 4 ++-- arch/arm/imx-common/speed.c | 16 ++++++++-------- arch/arm/include/asm/global_data.h | 6 +++--- arch/powerpc/cpu/mpc83xx/speed.c | 5 +++-- arch/powerpc/cpu/mpc85xx/speed.c | 4 ++-- arch/powerpc/include/asm/global_data.h | 6 +++--- drivers/mmc/fsl_esdhc.c | 6 +++--- 8 files changed, 27 insertions(+), 26 deletions(-)
arch/arm/cpu/arm1136/mx35/generic.c +3 -3
@@ -477,11 +477,11 @@ int get_clocks(void) {#ifdef CONFIG_FSL_ESDHC #if CONFIG_SYS_FSL_ESDHC_ADDR ==MMC_SDHC2_BASE_ADDR - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC2_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC2_CLK );#elif CONFIG_SYS_FSL_ESDHC_ADDR ==MMC_SDHC3_BASE_ADDR - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC3_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC3_CLK );#else - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC1_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC1_CLK );#endif #endif return 0 ;
arch/arm/cpu/arm926ejs/mx25/generic.c +2 -2
@@ -229,9 +229,9 @@ int get_clocks(void) {#ifdef CONFIG_FSL_ESDHC #if CONFIG_SYS_FSL_ESDHC_ADDR ==IMX_MMC_SDHC2_BASE - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC2_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC2_CLK );#else - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC1_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC1_CLK );#endif #endif return 0 ;
arch/arm/imx-common/speed.c +8 -8
@@ -37,23 +37,23 @@ int get_clocks(void)#ifdef CONFIG_FSL_ESDHC #ifdef CONFIG_FSL_USDHC #if CONFIG_SYS_FSL_ESDHC_ADDR ==USDHC2_BASE_ADDR - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC2_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC2_CLK );#elif CONFIG_SYS_FSL_ESDHC_ADDR ==USDHC3_BASE_ADDR - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC3_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC3_CLK );#elif CONFIG_SYS_FSL_ESDHC_ADDR ==USDHC4_BASE_ADDR - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC4_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC4_CLK );#else - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC_CLK );#endif #else #if CONFIG_SYS_FSL_ESDHC_ADDR ==MMC_SDHC2_BASE_ADDR - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC2_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC2_CLK );#elif CONFIG_SYS_FSL_ESDHC_ADDR ==MMC_SDHC3_BASE_ADDR - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC3_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC3_CLK );#elif CONFIG_SYS_FSL_ESDHC_ADDR ==MMC_SDHC4_BASE_ADDR - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC4_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC4_CLK );#else - gd->sdhc_clk =mxc_get_clock (MXC_ESDHC_CLK ); + gd->arch.sdhc_clk =mxc_get_clock (MXC_ESDHC_CLK );#endif #endif #endif
arch/arm/include/asm/global_data.h +3 -3
@@ -26,6 +26,9 @@/* Architecture-specific global data */ struct arch_global_data { +#if defined(CONFIG_FSL_ESDHC ) +u32 sdhc_clk; +#endif #ifdef CONFIG_AT91FAMILY /* "static data" needed by at91's clock.c */ unsigned long cpu_clk_rate_hz;
@@ -68,9 +71,6 @@ typedef struct global_data {unsigned long env_addr;/* Address of Environment struct */ unsigned long env_valid;/* Checksum of Environment valid? */ unsigned long fb_base;/* base address of frame buffer */ -#ifdef CONFIG_FSL_ESDHC -unsigned long sdhc_clk; -#endif unsigned long relocaddr;/* Start address of U-Boot in RAM */ phys_size_t ram_size;/* RAM size */ unsigned long mon_len;/* monitor len */
arch/powerpc/cpu/mpc83xx/speed.c +3 -2
@@ -478,7 +478,7 @@ int get_clocks(void) gd->arch.tdm_clk = tdm_clk;#endif #if defined(CONFIG_FSL_ESDHC ) - gd->sdhc_clk = sdhc_clk; + gd->arch.sdhc_clk = sdhc_clk;#endif gd->arch.core_clk = core_clk; gd->arch.i2c1_clk = i2c1_clk;
@@ -570,7 +570,8 @@ static int do_clocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) strmhz(buf, gd->arch.tdm_clk));#endif #if defined(CONFIG_FSL_ESDHC ) -printf (" SDHC: %-4s MHz\n" ,strmhz (buf, gd->sdhc_clk)); +printf (" SDHC: %-4s MHz\n" , +strmhz (buf, gd->arch.sdhc_clk));#endif #if defined(CONFIG_MPC8308 ) || defined(CONFIG_MPC831x) || \ defined(CONFIG_MPC834x) || defined(CONFIG_MPC837x)
arch/powerpc/cpu/mpc85xx/speed.c +2 -2
@@ -428,9 +428,9 @@ int get_clocks (void)#if defined(CONFIG_FSL_ESDHC )#if defined(CONFIG_MPC8569 ) || defined(CONFIG_P1010 ) ||\ defined(CONFIG_P1014 ) - gd->sdhc_clk = gd->bus_clk; + gd->arch.sdhc_clk = gd->bus_clk;#else - gd->sdhc_clk = gd->bus_clk /2 ; + gd->arch.sdhc_clk = gd->bus_clk /2 ;#endif #endif /* defined(CONFIG_FSL_ESDHC) */
arch/powerpc/include/asm/global_data.h +3 -3
@@ -29,6 +29,9 @@/* Architecture-specific global data */ struct arch_global_data { +#if defined(CONFIG_FSL_ESDHC ) +u32 sdhc_clk; +#endif #if defined(CONFIG_8xx)unsigned long brg_clk;#endif
@@ -150,9 +153,6 @@ typedef struct global_data {/* We cannot bracket this with CONFIG_PCI due to mpc5xxx */ unsigned long pci_clk;unsigned long mem_clk; -#if defined(CONFIG_FSL_ESDHC ) -u32 sdhc_clk; -#endif phys_size_t ram_size;/* RAM size */ unsigned long env_addr;/* Address of Environment struct */ unsigned long env_valid;/* Checksum of Environment valid? */
drivers/mmc/fsl_esdhc.c +3 -3
@@ -583,7 +583,7 @@ int fsl_esdhc_initialize(bd_t *bis, struct fsl_esdhc_cfg *cfg) mmc->host_caps |= MMC_MODE_HS_52MHz |MMC_MODE_HS ; mmc->f_min =400000 ; - mmc->f_max =MIN (gd->sdhc_clk,52000000 ); + mmc->f_max =MIN (gd->arch.sdhc_clk,52000000 ); mmc->b_max =0 ;mmc_register (mmc);
@@ -598,7 +598,7 @@ int fsl_esdhc_mmc_init(bd_t *bis) cfg =malloc (sizeof (struct fsl_esdhc_cfg ));memset (cfg,0 ,sizeof (struct fsl_esdhc_cfg )); cfg->esdhc_base =CONFIG_SYS_FSL_ESDHC_ADDR ; - cfg->sdhc_clk = gd->sdhc_clk; + cfg->sdhc_clk = gd->arch.sdhc_clk;return fsl_esdhc_initialize (bis, cfg); }
@@ -616,7 +616,7 @@ void fdt_fixup_esdhc(void *blob, bd_t *bd)#endif do_fixup_by_compat_u32 (blob, compat,"clock-frequency" , - gd->sdhc_clk,1 ); + gd->arch.sdhc_clk,1 );do_fixup_by_compat (blob, compat,"status" ,"okay" ,4 +1 ,1 );
Signature · 1 line
1.7.7.3
PATCH v2 37/58 sparc: Drop kbd_status and reset_status from global_data
In reply to Simon GlassThese fields is not used on sparc, so punt them.
---
Changes in v2: None
arch/sparc/include/asm/global_data.h | 4 ---- 1 files changed, 0 insertions(+), 4 deletions(-)
arch/sparc/include/asm/global_data.h +0 -4
@@ -50,7 +50,6 @@ typedef struct global_data {phys_size_t ram_size;/* RAM size */ unsigned long reloc_off;/* Relocation Offset */ -unsigned long reset_status;/* reset status register at boot */ unsigned long env_addr;/* Address of Environment struct */ unsigned long env_valid;/* Checksum of Environment valid? */ unsigned long have_console;/* serial_init() was called */
@@ -73,9 +72,6 @@ typedef struct global_data {unsigned long do_mdm_init;unsigned long be_quiet;#endif -#ifdef CONFIG_LWMON -unsigned long kbd_status; -#endif void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ struct arch_global_data arch;/* architecture-specific data */
Signature · 1 line
1.7.7.3
PATCH v2 38/58 m68k: Move CONFIG_EXTRA_CLOCK to arch_global_data
In reply to Simon GlassMove inp_clk, vco_clk and flb_clk into arch_global_data and tidy up.
---
Changes in v2: None
arch/m68k/cpu/mcf5227x/cpu.c | 6 +++--- arch/m68k/cpu/mcf5227x/speed.c | 10 +++++----- arch/m68k/cpu/mcf5445x/cpu.c | 10 +++++----- arch/m68k/cpu/mcf5445x/speed.c | 10 +++++----- arch/m68k/include/asm/global_data.h | 10 +++++----- arch/m68k/lib/board.c | 6 +++--- 6 files changed, 26 insertions(+), 26 deletions(-)
arch/m68k/cpu/mcf5227x/cpu.c +3 -3
@@ -68,10 +68,10 @@ int checkcpu(void)printf (" CPU CLK %s MHz BUS CLK %s MHz FLB CLK %s MHz\n" ,strmhz (buf1, gd->cpu_clk),strmhz (buf2, gd->bus_clk), -strmhz (buf3, gd->flb_clk)); +strmhz (buf3, gd->arch.flb_clk));printf (" INP CLK %s MHz VCO CLK %s MHz\n" , -strmhz (buf1, gd->inp_clk), -strmhz (buf2, gd->vco_clk)); +strmhz (buf1, gd->arch.inp_clk), +strmhz (buf2, gd->arch.vco_clk)); }return 0 ;
arch/m68k/cpu/mcf5227x/speed.c +5 -5
@@ -114,24 +114,24 @@ int get_clocks(void) ((in_be32 (&pll->pcr) &0xFF000000 ) >>24 ) *CONFIG_SYS_INPUT_CLKSRC ; } - gd->vco_clk = vco;/* Vco clock */ + gd->arch.vco_clk = vco;/* Vco clock */ }else if (bootmode ==3 ) {/* serial mode */ vco = ((in_be32 (&pll->pcr) &0xFF000000 ) >>24 ) *CONFIG_SYS_INPUT_CLKSRC ; - gd->vco_clk = vco;/* Vco clock */ + gd->arch.vco_clk = vco;/* Vco clock */ }if ((in_be16 (&ccm->ccr) &CCM_MISCCR_LIMP ) ==CCM_MISCCR_LIMP ) {/* Limp mode */ }else { - gd->inp_clk =CONFIG_SYS_INPUT_CLKSRC ;/* Input clock */ + gd->arch.inp_clk =CONFIG_SYS_INPUT_CLKSRC ;/* Input clock */ temp = (in_be32 (&pll->pcr) &PLL_PCR_OUTDIV1_MASK ) +1 ; gd->cpu_clk = vco / temp;/* cpu clock */ temp = ((in_be32 (&pll->pcr) &PLL_PCR_OUTDIV2_MASK ) >>4 ) +1 ; - gd->flb_clk = vco / temp;/* flexbus clock */ - gd->bus_clk = gd->flb_clk; + gd->arch.flb_clk = vco / temp;/* flexbus clock */ + gd->bus_clk = gd->arch.flb_clk; }#ifdef CONFIG_FSL_I2C
arch/m68k/cpu/mcf5445x/cpu.c +5 -5
@@ -101,16 +101,16 @@ int checkcpu(void)printf (" CPU CLK %s MHz BUS CLK %s MHz FLB CLK %s MHz\n" ,strmhz (buf1, gd->cpu_clk),strmhz (buf2, gd->bus_clk), -strmhz (buf3, gd->flb_clk)); +strmhz (buf3, gd->arch.flb_clk));#ifdef CONFIG_PCI printf (" PCI CLK %s MHz INP CLK %s MHz VCO CLK %s MHz\n" ,strmhz (buf1, gd->pci_clk), -strmhz (buf2, gd->inp_clk), -strmhz (buf3, gd->vco_clk)); +strmhz (buf2, gd->arch.inp_clk), +strmhz (buf3, gd->arch.vco_clk));#else printf (" INP CLK %s MHz VCO CLK %s MHz\n" , -strmhz (buf1, gd->inp_clk), -strmhz (buf2, gd->vco_clk)); +strmhz (buf1, gd->arch.inp_clk), +strmhz (buf2, gd->arch.vco_clk));#endif }
arch/m68k/cpu/mcf5445x/speed.c +5 -5
@@ -233,7 +233,7 @@ void setup_5445x_clocks(void)out_be32 (&pll->pcr, pcrvalue); } - gd->vco_clk = vco;/* Vco clock */ + gd->arch.vco_clk = vco;/* Vco clock */ }else if (bootmode ==2 ) {/* Normal mode */ vco = ((in_be32 (&pll->pcr) &0xFF000000 ) >>24 ) *CONFIG_SYS_INPUT_CLKSRC ;
@@ -244,17 +244,17 @@ void setup_5445x_clocks(void)out_be32 (&pll->pcr, pcrvalue); vco = ((in_be32 (&pll->pcr) &0xFF000000 ) >>24 ) *CONFIG_SYS_INPUT_CLKSRC ; } - gd->vco_clk = vco;/* Vco clock */ + gd->arch.vco_clk = vco;/* Vco clock */ }else if (bootmode ==3 ) {/* serial mode */ vco = ((in_be32 (&pll->pcr) &0xFF000000 ) >>24 ) *CONFIG_SYS_INPUT_CLKSRC ; - gd->vco_clk = vco;/* Vco clock */ + gd->arch.vco_clk = vco;/* Vco clock */ }if ((in_be16 (&ccm->ccr) &CCM_MISCCR_LIMP ) ==CCM_MISCCR_LIMP ) {/* Limp mode */ }else { - gd->inp_clk =CONFIG_SYS_INPUT_CLKSRC ;/* Input clock */ + gd->arch.inp_clk =CONFIG_SYS_INPUT_CLKSRC ;/* Input clock */ temp = (in_be32 (&pll->pcr) &PLL_PCR_OUTDIV1_MASK ) +1 ; gd->cpu_clk = vco / temp;/* cpu clock */
@@ -263,7 +263,7 @@ void setup_5445x_clocks(void) gd->bus_clk = vco / temp;/* bus clock */ temp = ((in_be32 (&pll->pcr) &PLL_PCR_OUTDIV3_MASK ) >>8 ) +1 ; - gd->flb_clk = vco / temp;/* FlexBus clock */ + gd->arch.flb_clk = vco / temp;/* FlexBus clock */ #ifdef CONFIG_PCI if (bPci) {
arch/m68k/include/asm/global_data.h +5 -5
@@ -30,6 +30,11 @@ struct arch_global_data {unsigned long i2c1_clk;unsigned long i2c2_clk;#endif +#ifdef CONFIG_EXTRA_CLOCK +unsigned long inp_clk; +unsigned long vco_clk; +unsigned long flb_clk; +#endif };/*
@@ -49,11 +54,6 @@ typedef struct global_data {#ifdef CONFIG_PCI unsigned long pci_clk;#endif -#ifdef CONFIG_EXTRA_CLOCK -unsigned long inp_clk; -unsigned long vco_clk; -unsigned long flb_clk; -#endif phys_size_t ram_size;/* RAM size */ unsigned long reloc_off;/* Relocation Offset */ unsigned long reset_status;/* reset status register at boot */
arch/m68k/lib/board.c +3 -3
@@ -349,9 +349,9 @@ board_init_f (ulong bootflag) bd->bi_pcifreq = gd->pci_clk;/* PCI Freq in Hz */ #endif #ifdef CONFIG_EXTRA_CLOCK - bd->bi_inpfreq = gd->inp_clk;/* input Freq in Hz */ - bd->bi_vcofreq = gd->vco_clk;/* vco Freq in Hz */ - bd->bi_flbfreq = gd->flb_clk;/* flexbus Freq in Hz */ + bd->bi_inpfreq = gd->arch.inp_clk;/* input Freq in Hz */ + bd->bi_vcofreq = gd->arch.vco_clk;/* vco Freq in Hz */ + bd->bi_flbfreq = gd->arch.flb_clk;/* flexbus Freq in Hz */ #endif bd->bi_baudrate = gd->baudrate;/* Console Baudrate */
Signature · 1 line
1.7.7.3
PATCH v2 39/58 mips: Move per_clk and dev_clk to arch_global_data
In reply to Simon GlassMove these field into arch_global_data and tidy up. The other CONFIG_JZSOC fields are used by various architectures, so just remove the #ifdef bracketing for these.
---
Changes in v2: None
arch/mips/include/asm/global_data.h | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
arch/mips/include/asm/global_data.h +5 -4
@@ -28,6 +28,11 @@/* Architecture-specific global data */ struct arch_global_data { +#ifdef CONFIG_JZSOC +/* There are other clocks in the jz4740 */ +unsigned long per_clk;/* Peripheral bus clock */ +unsigned long dev_clk;/* Device clock */ +#endif };/*
@@ -41,13 +46,9 @@ struct arch_global_data { typedef struct global_data { bd_t *bd; unsigned long flags; -#ifdef CONFIG_JZSOC - /* There are other clocks in the jz4740 */ unsigned long cpu_clk; /* CPU core clock */ unsigned long sys_clk; /* System bus clock */ - unsigned long per_clk; /* Peripheral bus clock */ unsigned long mem_clk; /* Memory bus clock */ - unsigned long dev_clk; /* Device clock */ /* "static data" needed by most of timer.c */ unsigned long tbl; unsigned long lastinc;
Signature · 1 line
1.7.7.3
PATCH v2 40/58 avr32: Move stack_end to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/avr32/cpu/exception.c | 6 +++--- arch/avr32/include/asm/global_data.h | 2 +- arch/avr32/lib/board.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-)
arch/avr32/cpu/exception.c +3 -3
@@ -112,11 +112,11 @@ void do_unknown_exception(unsigned int ecr, struct pt_regs *regs)printf ("CPU Mode: %s\n" , cpu_modes[mode]);/* Avoid exception loops */ -if (regs->sp < (gd->stack_end -CONFIG_STACKSIZE ) - || regs->sp >= gd->stack_end) +if (regs->sp < (gd->arch.stack_end -CONFIG_STACKSIZE ) + || regs->sp >= gd->arch.stack_end)printf ("\nStack pointer seems bogus, won't do stack dump\n" );else -dump_mem ("\nStack: " , regs->sp, gd->stack_end); +dump_mem ("\nStack: " , regs->sp, gd->arch.stack_end);panic ("Unhandled exception\n" ); }
arch/avr32/include/asm/global_data.h +1 -1
@@ -24,6 +24,7 @@/* Architecture-specific global data */ struct arch_global_data { +unsigned long stack_end;/* highest stack address */ };/*
@@ -38,7 +39,6 @@ typedef struct global_data {bd_t *bd;unsigned long flags;unsigned int baudrate; -unsigned long stack_end;/* highest stack address */ unsigned long have_console;/* serial_init() was called */ #ifdef CONFIG_PRE_CONSOLE_BUFFER unsigned long precon_buf_idx;/* Pre-Console buffer index */
arch/avr32/lib/board.c +1 -1
@@ -231,7 +231,7 @@ void board_init_f(ulong board_type)/* And finally, a new, bigger stack. */ new_sp = (unsigned long *)addr; - gd->stack_end = addr; + gd->arch.stack_end = addr; *(--new_sp) =0 ; *(--new_sp) =0 ;
Signature · 1 line
1.7.7.3
PATCH v2 41/58 avr32: Move cpu_hz to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/avr32/cpu/cpu.c | 4 ++-- arch/avr32/cpu/interrupts.c | 6 +++--- arch/avr32/include/asm/global_data.h | 2 +- arch/avr32/lib/bootm.c | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-)
arch/avr32/cpu/cpu.c +2 -2
@@ -47,7 +47,7 @@ int cpu_init(void) {extern void _evba (void ); - gd->cpu_hz =CONFIG_SYS_OSC0_HZ ; + gd->arch.cpu_hz =CONFIG_SYS_OSC0_HZ ;/* TODO: Move somewhere else, but needs to be run before we * increase the clock frequency. */
@@ -59,7 +59,7 @@ int cpu_init(void)clk_init ();/* Update the CPU speed according to the PLL configuration */ - gd->cpu_hz =get_cpu_clk_rate (); + gd->arch.cpu_hz =get_cpu_clk_rate ();/* Set up the exception handler table and enable exceptions */ sysreg_write (EVBA , (unsigned long )&_evba);
arch/avr32/cpu/interrupts.c +3 -3
@@ -46,7 +46,7 @@ static unsigned long tb_factor;unsigned long get_tbclk (void ) { -return gd->cpu_hz; +return gd->arch.cpu_hz; }unsigned long long get_ticks (void )
@@ -115,8 +115,8 @@ int timer_init(void)sysreg_write (COUNT ,0 ); tmp = (u64 )CONFIG_SYS_HZ <<32 ; - tmp += gd->cpu_hz /2 ; -do_div (tmp, gd->cpu_hz); + tmp += gd->arch.cpu_hz /2 ; +do_div (tmp, gd->arch.cpu_hz); tb_factor = (u32 )tmp;if (set_interrupt_handler (0 , &timer_interrupt_handler,3 ))
arch/avr32/include/asm/global_data.h +1 -1
@@ -25,6 +25,7 @@/* Architecture-specific global data */ struct arch_global_data {unsigned long stack_end;/* highest stack address */ +unsigned long cpu_hz;/* cpu core clock frequency */ };/*
@@ -46,7 +47,6 @@ typedef struct global_data {unsigned long reloc_off;/* Relocation Offset */ unsigned long env_addr;/* Address of env struct */ unsigned long env_valid;/* Checksum of env valid? */ -unsigned long cpu_hz;/* cpu core clock frequency */ #if defined(CONFIG_LCD )void *fb_base;/* framebuffer address */ #endif
arch/avr32/lib/bootm.c +1 -1
@@ -109,7 +109,7 @@ static struct tag *setup_clock_tags(struct tag *params) params->hdr.size =tag_size (tag_clock); params->u.clock.clock_id =ACLOCK_BOOTCPU ; params->u.clock.clock_flags =0 ; - params->u.clock.clock_hz = gd->cpu_hz; + params->u.clock.clock_hz = gd->arch.cpu_hz;#ifdef CONFIG_AT32AP7000 /*
Signature · 1 line
1.7.7.3
PATCH v2 42/58 sandbox: Move ram_buf to arch_global_data
In reply to Simon GlassMove this field into arch_global_data and tidy up.
---
Changes in v2: None
arch/sandbox/cpu/cpu.c | 2 +- arch/sandbox/include/asm/global_data.h | 2 +- arch/sandbox/lib/board.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-)
arch/sandbox/cpu/cpu.c +1 -1
@@ -54,7 +54,7 @@ int cleanup_before_linux(void)void *map_physmem (phys_addr_t paddr,unsigned long len,unsigned long flags) { -return (void *)(gd->ram_buf + paddr); +return (void *)(gd->arch.ram_buf + paddr); }void flush_dcache_range (unsigned long start,unsigned long stop)
arch/sandbox/include/asm/global_data.h +1 -1
@@ -28,6 +28,7 @@/* Architecture-specific global data */ struct arch_global_data { +u8 *ram_buf;/* emulated RAM buffer */ };/*
@@ -46,7 +47,6 @@ typedef struct global_data {unsigned long env_addr;/* Address of Environment struct */ unsigned long env_valid;/* Checksum of Environment valid? */ unsigned long fb_base;/* base address of frame buffer */ -u8 *ram_buf;/* emulated RAM buffer */ phys_size_t ram_size;/* RAM size */ const void *fdt_blob;/* Our device tree, NULL if none */ void **jt;/* jump table */
arch/sandbox/lib/board.c +3 -3
@@ -174,7 +174,7 @@ void board_init_f(ulong bootflag) mem =os_malloc (CONFIG_SYS_SDRAM_SIZE );assert (mem); - gd->ram_buf = mem; + gd->arch.ram_buf = mem; addr = (ulong)(mem + size);/*
@@ -227,8 +227,8 @@ void board_init_r(gd_t *id, ulong dest_addr)#endif /* The Malloc area is at the top of simulated DRAM */ -mem_malloc_init ((ulong )gd->ram_buf + gd->ram_size -TOTAL_MALLOC_LEN , -TOTAL_MALLOC_LEN ); +mem_malloc_init ((ulong )gd->arch.ram_buf + gd->ram_size - +TOTAL_MALLOC_LEN ,TOTAL_MALLOC_LEN );/* initialize environment */ env_relocate ();
Signature · 1 line
1.7.7.3
PATCH v2 43/58 Add generic global_data
In reply to Simon GlassAdd a generic global_data structure which all archs will eventually use.
---
Changes in v2:
- Remove tabs after #ifdef and #define in generic global_data
include/asm-generic/global_data.h | 102 +++++++++++++++++++++++++++++++++++++ 1 files changed, 102 insertions(+), 0 deletions(-) create mode 100644 include/asm-generic/global_data.h
include/asm-generic/global_data.h new file +102 -0
@@ -0,0 +1,102 @@ +/* +* Copyright (c) 2012 The Chromium OS Authors. +* (C) Copyright 2002-2010 +* Wolfgang Denk, DENX Software Engineering, wd at denx.de. +* +* See file CREDITS for list of people who contributed to this +* project. +* +* 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 +*/ + +#ifndef __ASM_GENERIC_GBL_DATA_H +#define __ASM_GENERIC_GBL_DATA_H +/* +* The following data structure is placed in some memory which is +* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or +* some locked parts of the data cache) to allow for a minimum set of +* global variables during system initialization (until we have set +* up the memory controller so that we can use RAM). +* +* Keep it *SMALL* and remember to set GENERATED_GBL_DATA_SIZE > sizeof(gd_t) +* +* Each architecture has its own private fields. For now all are private +*/ + +#ifndef __ASSEMBLY__ +typedef struct global_data { +bd_t *bd; +unsigned long flags; +unsigned long baudrate; +unsigned long cpu_clk;/* CPU clock in Hz! */ +unsigned long bus_clk; +/* We cannot bracket this with CONFIG_PCI due to mpc5xxx */ +unsigned long pci_clk; +unsigned long mem_clk; +#if defined(CONFIG_LCD ) || defined(CONFIG_VIDEO ) +unsigned long fb_base;/* Base address of framebuffer mem */ +#endif +#if defined(CONFIG_POST ) || defined(CONFIG_LOGBUFFER ) +unsigned long post_log_word;/* Record POST activities */ +unsigned long post_log_res;/* success of POST test */ +unsigned long post_init_f_time;/* When post_init_f started */ +#endif +#ifdef CONFIG_BOARD_TYPES +unsigned long board_type; +#endif +unsigned long have_console;/* serial_init() was called */ +#ifdef CONFIG_PRE_CONSOLE_BUFFER +unsigned long precon_buf_idx;/* Pre-Console buffer index */ +#endif +#ifdef CONFIG_MODEM_SUPPORT +unsigned long do_mdm_init; +unsigned long be_quiet; +#endif +unsigned long env_addr;/* Address of Environment struct */ +unsigned long env_valid;/* Checksum of Environment valid? */ + +/* TODO: is this the same as relocaddr, or something else? */ +unsigned long dest_addr;/* Post-relocation address of U-Boot */ +unsigned long dest_addr_sp; +unsigned long ram_top;/* Top address of RAM used by U-Boot */ + +unsigned long relocaddr;/* Start address of U-Boot in RAM */ +phys_size_t ram_size;/* RAM size */ +unsigned long mon_len;/* monitor len */ +unsigned long irq_sp;/* irq stack pointer */ +unsigned long start_addr_sp;/* start_addr_stackpointer */ +unsigned long reloc_off; +struct global_data *new_gd;/* relocated global data */ +const void *fdt_blob;/* Our device tree, NULL if none */ +void **jt;/* jump table */ +char env_buf[32 ];/* buffer for getenv() before reloc. */ +struct arch_global_data arch;/* architecture-specific data */ +}gd_t ; +#endif + +/* +* Global Data Flags +*/ +#define GD_FLG_RELOC 0x00001/* Code was relocated to RAM */ +#define GD_FLG_DEVINIT 0x00002/* Devices have been initialized */ +#define GD_FLG_SILENT 0x00004/* Silent mode */ +#define GD_FLG_POSTFAIL 0x00008/* Critical POST test failed */ +#define GD_FLG_POSTSTOP 0x00010/* POST seqeunce aborted */ +#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ +#define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ +#define GD_FLG_ENV_READY 0x00080/* Env. imported into hash table */ + +#endif /* __ASM_GENERIC_GBL_DATA_H */
Signature · 1 line
1.7.7.3
PATCH v2 44/58 Only use fb_base if we have a display
In reply to Simon GlassThe ideal of having a frame buffer when there isn't a display is not that useful. Change the bdinfo command to expect this only when we have an lcd or video display.
---
Changes in v2: None
common/cmd_bdinfo.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)
common/cmd_bdinfo.c +4 -0
@@ -377,7 +377,9 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])print_num ("reloc off" , gd->reloc_off);print_num ("irq_sp" , gd->irq_sp);/* irq stack pointer */ print_num ("sp start " , gd->start_addr_sp); +#if defined(CONFIG_LCD ) || defined(CONFIG_VIDEO )print_num ("FB base " , gd->fb_base); +#endif /* * TODO: Currently only support for davinci SOC's is added. * Remove this check once all the board implement this.
@@ -463,7 +465,9 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])print_eth (0 );printf ("ip_addr = %s\n" ,getenv ("ipaddr" ));#endif +#if defined(CONFIG_LCD ) || defined(CONFIG_VIDEO )print_num ("FB base " , gd->fb_base); +#endif return 0 ; }
Signature · 1 line
1.7.7.3
PATCH v2 45/58 arm: Use generic global_data
In reply to Simon Glass---
Changes in v2: None
arch/arm/include/asm/global_data.h | 38 +----------------------------------- 1 files changed, 1 insertions(+), 37 deletions(-)
arch/arm/include/asm/global_data.h +1 -37
@@ -52,43 +52,7 @@ struct arch_global_data {#endif }; -/* -* The following data structure is placed in some memory which is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ - -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long have_console;/* serial_init() was called */ -#ifdef CONFIG_PRE_CONSOLE_BUFFER -unsigned long precon_buf_idx;/* Pre-Console buffer index */ -#endif -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long fb_base;/* base address of frame buffer */ -unsigned long relocaddr;/* Start address of U-Boot in RAM */ -phys_size_t ram_size;/* RAM size */ -unsigned long mon_len;/* monitor len */ -unsigned long irq_sp;/* irq stack pointer */ -unsigned long start_addr_sp;/* start_addr_stackpointer */ -unsigned long reloc_off; -const void *fdt_blob;/* Our device tree, NULL if none */ -void **jt;/* jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -#if defined(CONFIG_POST ) || defined(CONFIG_LOGBUFFER ) -unsigned long post_log_word;/* Record POST activities */ -unsigned long post_log_res;/* success of POST test */ -unsigned long post_init_f_time;/* When post_init_f started */ -#endif -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")
Signature · 1 line
1.7.7.3
PATCH v2 46/58 avr32: Use generic global_data
In reply to Simon GlassMove avr32 over to use generic global_data.
---
Changes in v2: None
arch/avr32/include/asm/global_data.h | 29 +---------------------------- 1 files changed, 1 insertions(+), 28 deletions(-)
arch/avr32/include/asm/global_data.h +1 -28
@@ -28,34 +28,7 @@ struct arch_global_data {unsigned long cpu_hz;/* cpu core clock frequency */ }; -/* -* The following data structure is placed in some memory wich is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ - -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long have_console;/* serial_init() was called */ -#ifdef CONFIG_PRE_CONSOLE_BUFFER -unsigned long precon_buf_idx;/* Pre-Console buffer index */ -#endif -unsigned long reloc_off;/* Relocation Offset */ -unsigned long env_addr;/* Address of env struct */ -unsigned long env_valid;/* Checksum of env valid? */ -#if defined(CONFIG_LCD ) -void *fb_base;/* framebuffer address */ -#endif -void **jt;/* jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm("r5")
Signature · 1 line
1.7.7.3
PATCH v2 46/58 avr32: Use generic global_data
Dear Simon Glass,
Quoted 3 lines · Simon Glass
Move avr32 over to use generic
global_data.Signed-off-by Simon Glass <[email protected]>
this one produces compile warning in board.c for mimc200, I will try to fix it but can not test it on real hardware (cc'ing board maintainer).
Best regards
Andreas Bie?mann
PATCH v2 46/58 avr32: Use generic global_data
Hi Andreas,
Quoted 9 lines · Andreas Bie?mann
Dear Simon Glass,
Quoted 3 lines · Simon Glass
Move avr32 over to use generic
global_data.Signed-off-by Simon Glass <[email protected]>this one produces compile warning in
board.cfor mimc200, I will try to fix it but can not test it on real hardware (cc'ing board maintainer).
Actually these boards failed for be even before the patch:
avr32: + hammerhead + atngw100mkii + grasshopper + favr-32-ezkit
+ atstk1006 + atstk1004 + atstk1003 + atstk1002 + atngw100 + mimc200
It might be my toolchain - can you suggest an avr32 toolchain to use?
Quoted 4 lines
Best regards
Andreas Bie?mann
Regards,
Simon
PATCH v2 46/58 avr32: Use generic global_data
Hi Simon,
Quoted 14 lines · Simon Glass
Hi Andreas,
Quoted 9 lines · Andreas Bie?mann
Dear Simon Glass,
Quoted 3 lines · Simon Glass
Move avr32 over to use generic
global_data.Signed-off-by Simon Glass <[email protected]>this one produces compile warning in
board.cfor mimc200, I will try to fix it but can not test it on real hardware (cc'ing board maintainer).
Quoted 6 lines
Actually these boards failed for be even before the patch:
avr32: + hammerhead + atngw100mkii + grasshopper + favr-32-ezkit
+ atstk1006 + atstk1004 + atstk1003 + atstk1002 + atngw100 + mimc200It might be my toolchain - can you suggest an avr32 toolchain to use?
Not currently, I use a self patched OSELAS toolchain which is not yet mainline. Maybe I should try to add avr32 toolchain to ELDK for reference?
Which errors do you see? Is it like this:
---8<---
avr32-ld:built in linker script:15: warning: memory region `FLASH' not declared
avr32-ld:built in linker script:69: warning: memory region `CPUSRAM' not declared
...
--->8---
Unfortunately the avr32-newlib toolchains currently _not_ supported in u-boot (I've seen a strange runtime error with the atmel provided newlib toolchain before), you will need avr32-uclibc toolchain instead.
Best regards
Andreas Bie?mann
PATCH v2 46/58 avr32: Use generic global_data
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 24 lines · Andreas Bie?mann
Hi Simon,
Quoted 21 lines · Simon Glass
Hi Andreas,
Quoted 10 lines · Andreas Bie?mann
Dear Simon Glass,
Quoted 3 lines · Simon Glass
Move avr32 over to use generic
global_data.Signed-off-by Simon Glass <[email protected]>this one produces compile warning in
board.cfor mimc200, I will try to fix it but can not test it on real hardware (cc'ing board maintainer).Actually these boards failed for be even before the patch:
avr32: + hammerhead + atngw100mkii + grasshopper +
favr-32-ezkit + atstk1006 + atstk1004 + atstk1003 + atstk1002
+ atngw100 + mimc200
Quoted 6 lines
Quoted 2 lines
It might be my toolchain - can you suggest an avr32 toolchain to use?
Not currently, I use a self patched OSELAS toolchain which is not yet mainline. Maybe I should try to add avr32 toolchain to ELDK for reference?
The "short" answer is that if OpenEmbedded supports avr32 (and I'm a little rusty, but I see general avr32 bits and pieces) then yes, taking ELDK and building for AVR32 should be doable, or at least provide an interesting failure :)
- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iQIcBAEBAgAGBQJRHQ2OAAoJENk4IS6UOR1Wui0P/A3ca4yl3IQ+oaqdUsl0rdR1 nYue7uOw2tOarTh3AACs04vE38gg0q9UHsUHYT+nEaKMiql6IiStab4J8Xz4wDOt KAqctaZtgaO3OHDAuESXy3S6hJQx90o/y3dsNoy1aQtPwdedfxnixcFPYdJYndG+ Y9HgJszxQpLsOZPakFvb36TUlQeATpACJqvnpPsQ16gu6YiaNHZecGJLX6EQg7hc e5hKFpHikA0n5Fy+SbrPpUQh8AXnJcLXU/8muTacSUoiuO+IgauAbPJQeDZ7uxaY 75Gbhqczlb3wtn/2KQf7UdE5n7frkVmy+fkJK/SC0MJtCqS/HVAuWc5x5NfZCUgz eYFtxDp7DHQ4OZxTx5nvW6G2ZYsJAKUO6568w2pV14ZZbtAX/dM9H9LaDvTuz6r7 iYyPfslEcvM+pLvFWkOxnJiaYBfuHzZ+mDl7wTw/H0aXFiO5ZDk/uzO9ZANtY1I1 5xRZ3Cugi+QubpbSaQ4h96qALVD2ie7BU0nuhTj47tlk8eAM3IzWJJH2B3Tv7HB+ 12vZ5wh1T2ARAY633FvUcqTNWhjAKMpE1xpeUzjZWXcE94nIDtHZfUChyTwfx4CA 1NS+GezjA/y0z6bDGPOWKKqfdCweDIRg2tIctjbl6anAhnNopUfJlZjKu5jHcQSm MAifg/0XYkPdFq2nVPBC
=Rktw
-----END PGP SIGNATURE-----
PATCH v2 46/58 avr32: Use generic global_data
Hi,
Quoted 31 lines · Tom Rini
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1Quoted 27 lines · Andreas Bie?mann
Hi Simon,
Quoted 23 lines · Simon Glass
Hi Andreas,
Quoted 10 lines · Andreas Bie?mann
Dear Simon Glass,
Quoted 3 lines · Simon Glass
Move avr32 over to use generic
global_data.Signed-off-by Simon Glass <[email protected]>this one produces compile warning in
board.cfor mimc200, I will try to fix it but can not test it on real hardware (cc'ing board maintainer).Actually these boards failed for be even before the patch:
avr32: + hammerhead + atngw100mkii + grasshopper +
favr-32-ezkit + atstk1006 + atstk1004 + atstk1003 + atstk1002
+ atngw100 + mimc200It might be my toolchain - can you suggest an avr32 toolchain to use?
Quoted 8 lines
Quoted 3 lines
Not currently, I use a self patched OSELAS toolchain which is not yet mainline. Maybe I should try to add avr32 toolchain to ELDK for reference?
The "short" answer is that if OpenEmbedded supports avr32 (and I'm a little rusty, but I see general avr32 bits and pieces) then yes, taking ELDK and building for AVR32 should be doable, or at least provide an interesting failure :)
Well if someone can point me to a binary or a build script I would very much like to get an avr32 toolchain that fully works.
Thanks,
Simon
PATCH v2 47/58 blackfin: Use generic global_data
In reply to Simon GlassMove blackfin over to use generic global_data.
---
Changes in v2: None
arch/blackfin/include/asm/global_data.h | 32 +------------------------------ 1 files changed, 1 insertions(+), 31 deletions(-)
arch/blackfin/include/asm/global_data.h +1 -31
@@ -34,37 +34,7 @@struct arch_global_data { }; -/* -* The following data structure is placed in some memory wich is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned long board_type; -unsigned int baudrate; -unsigned long have_console;/* serial_init() was called */ -#ifdef CONFIG_PRE_CONSOLE_BUFFER -unsigned long precon_buf_idx;/* Pre-Console buffer index */ -#endif -phys_size_t ram_size;/* RAM size */ -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -#if defined(CONFIG_POST ) || defined(CONFIG_LOGBUFFER ) -unsigned long post_log_word;/* Record POST activities */ -unsigned long post_log_res;/* success of POST test */ -unsigned long post_init_f_time;/* When post_init_f started */ -#endif - -void **jt;/* jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("P3")
Signature · 1 line
1.7.7.3
PATCH v2 48/58 m68k: Use generic global_data
In reply to Simon GlassMove m68k over to use generic global_data.
---
Changes in v2: None
arch/m68k/include/asm/global_data.h | 39 +---------------------------------- 1 files changed, 1 insertions(+), 38 deletions(-)
arch/m68k/include/asm/global_data.h +1 -38
@@ -37,44 +37,7 @@ struct arch_global_data {#endif }; -/* -* The following data structure is placed in some memory wich is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ - -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long cpu_clk;/* CPU clock in Hz! */ -unsigned long bus_clk; -#ifdef CONFIG_PCI -unsigned long pci_clk; -#endif -phys_size_t ram_size;/* RAM size */ -unsigned long reloc_off;/* Relocation Offset */ -unsigned long reset_status;/* reset status register at boot */ -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long have_console;/* serial_init() was called */ -#ifdef CONFIG_PRE_CONSOLE_BUFFER -unsigned long precon_buf_idx;/* Pre-Console buffer index */ -#endif -#if defined(CONFIG_LCD ) || defined(CONFIG_VIDEO ) -unsigned long fb_base;/* Base addr of framebuffer memory */ -#endif -#ifdef CONFIG_BOARD_TYPES -unsigned long board_type; -#endif -void **jt;/* Standalone app jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #if 0 extern gd_t *global_data;
Signature · 1 line
1.7.7.3
PATCH v2 49/58 microblaze: Use generic global_data
In reply to Simon GlassMove microblaze over to use generic global_data.
---
Changes in v2: None
arch/microblaze/include/asm/global_data.h | 27 +-------------------------- 1 files changed, 1 insertions(+), 26 deletions(-)
arch/microblaze/include/asm/global_data.h +1 -26
@@ -29,32 +29,7 @@struct arch_global_data { }; -/* -* The following data structure is placed in some memory wich is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ - -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long have_console;/* serial_init() was called */ -#ifdef CONFIG_PRE_CONSOLE_BUFFER -unsigned long precon_buf_idx;/* Pre-Console buffer index */ -#endif -unsigned long env_addr;/* Address of Environment struct */ -const void *fdt_blob;/* Our device tree, NULL if none */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long fb_base;/* base address of frame buffer */ -void **jt;/* jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r31")
Signature · 1 line
1.7.7.3
Michal Simek
maintainerPATCH v2 49/58 microblaze: Use generic global_data
Hi Simon,
2012/12/14 Simon Glass <[email protected]>:
Quoted 9 lines
Move microblaze over to use generic
global_data.Signed-off-by Simon Glass <[email protected]>---
Changes in v2: Nonearch/microblaze/include/asm/global_data.h | 27 +-------------------------- 1 files changed, 1 insertions(+), 26 deletions(-)
will be better to provide link to any git repo/branch which I can just download and test.
Anyway I have tested it on real hw without any issue.
Thanks,
Michal
Signature · 4 lines
Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian
PATCH v2 49/58 microblaze: Use generic global_data
Hi Michal,
Quoted 13 lines · Michal Simek
Hi Simon,
2012/12/14 Simon Glass <[email protected]>:
Quoted 9 lines
Move microblaze over to use generic
global_data.Signed-off-by Simon Glass <[email protected]>---
Changes in v2: Nonearch/microblaze/include/asm/global_data.h | 27 +-------------------------- 1 files changed, 1 insertions(+), 26 deletions(-)
Quoted 5 lines
will be better to provide link to any git repo/branch which I can just download and test.
Anyway I have tested it on real hw without any issue.Tested-by Michal Simek <[email protected]>
Thanks. I have pushed the source tree here for now:
http://git.denx.de/u-boot-x86.git (branch us-board-gc6)
Regards,
Simon
Quoted 9 lines
Thanks,
Michal--
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian
PATCH v2 50/58 mips: Use generic global_data
In reply to Simon GlassMove mips over to use generic global_data.
---
Changes in v2: None
arch/mips/include/asm/global_data.h | 34 +--------------------------------- 1 files changed, 1 insertions(+), 33 deletions(-)
arch/mips/include/asm/global_data.h +1 -33
@@ -35,39 +35,7 @@ struct arch_global_data {#endif }; -/* -* The following data structure is placed in some memory wich is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ - -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned long cpu_clk;/* CPU core clock */ -unsigned long sys_clk;/* System bus clock */ -unsigned long mem_clk;/* Memory bus clock */ -/* "static data" needed by most of timer.c */ -unsigned long tbl; -unsigned long lastinc; -#endif -unsigned int baudrate; -unsigned long have_console;/* serial_init() was called */ -#ifdef CONFIG_PRE_CONSOLE_BUFFER -unsigned long precon_buf_idx;/* Pre-Console buffer index */ -#endif -phys_size_t ram_size;/* RAM size */ -unsigned long reloc_off;/* Relocation Offset */ -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -void **jt;/* jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("k0")
Signature · 1 line
1.7.7.3
PATCH v2 51/58 nds32: Use generic global_data
In reply to Simon GlassMove nds32 over to use generic global_data.
---
Changes in v2: None
arch/nds32/include/asm/global_data.h | 32 +------------------------------- 1 files changed, 1 insertions(+), 31 deletions(-)
arch/nds32/include/asm/global_data.h +1 -31
@@ -38,37 +38,7 @@struct arch_global_data { }; -/* -* The following data structure is placed in some memory wich is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ - -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long have_console;/* serial_init() was called */ - -unsigned long reloc_off;/* Relocation Offset */ -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long fb_base;/* base address of frame buffer */ - -unsigned long relocaddr;/* Start address of U-Boot in RAM */ -phys_size_t ram_size;/* RAM size */ -unsigned long mon_len;/* monitor len */ -unsigned long irq_sp;/* irq stack pointer */ -unsigned long start_addr_sp;/* start_addr_stackpointer */ - -void **jt;/* jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #ifdef CONFIG_GLOBAL_DATA_NOT_REG10 extern volatile gd_t g_gd;
Signature · 1 line
1.7.7.3
PATCH v2 52/58 nios2: Use generic global_data
In reply to Simon GlassMove nios2 over to use generic global_data.
---
Changes in v2: None
arch/nios2/include/asm/global_data.h | 24 +----------------------- 1 files changed, 1 insertions(+), 23 deletions(-)
arch/nios2/include/asm/global_data.h +1 -23
@@ -27,29 +27,7 @@struct arch_global_data { }; -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long cpu_clk;/* CPU clock in Hz! */ -unsigned long have_console;/* serial_init() was called */ -#ifdef CONFIG_PRE_CONSOLE_BUFFER -unsigned long precon_buf_idx;/* Pre-Console buffer index */ -#endif -phys_size_t ram_size;/* RAM size */ -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid */ -#if defined(CONFIG_POST ) || defined(CONFIG_LOGBUFFER ) -unsigned long post_log_word;/* Record POST activities */ -unsigned long post_log_res;/* success of POST test */ -unsigned long post_init_f_time;/* When post_init_f started */ -#endif -void **jt;/* Standalone app jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("gp")
Signature · 1 line
1.7.7.3
PATCH v2 53/58 openrisc: Use generic global_data
In reply to Simon GlassMove openrisc over to use generic global_data.
---
Changes in v2: None
arch/openrisc/include/asm/global_data.h | 25 +------------------------ 1 files changed, 1 insertions(+), 24 deletions(-)
arch/openrisc/include/asm/global_data.h +1 -24
@@ -29,30 +29,7 @@struct arch_global_data { }; -/* -* The following data structure is placed in some memory wich is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ - -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long cpu_clk;/* CPU clock in Hz! */ -unsigned long have_console;/* serial_init() was called */ -phys_size_t ram_size;/* RAM size */ -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long fb_base;/* base address of frame buffer */ -void **jt;/* jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> /* OR32 GCC already has r10 set as fixed-use */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r10")
Signature · 1 line
1.7.7.3
PATCH v2 54/58 powerpc: Use generic global_data
In reply to Simon GlassMove powerpc over to use generic global_data.
---
Changes in v2: None
arch/powerpc/include/asm/global_data.h | 47 +------------------------------- 1 files changed, 1 insertions(+), 46 deletions(-)
arch/powerpc/include/asm/global_data.h +1 -46
@@ -136,52 +136,7 @@ struct arch_global_data {#endif }; -/* -* The following data structure is placed in some memory wich is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ - -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long cpu_clk;/* CPU clock in Hz! */ -unsigned long bus_clk; -/* We cannot bracket this with CONFIG_PCI due to mpc5xxx */ -unsigned long pci_clk; -unsigned long mem_clk; -phys_size_t ram_size;/* RAM size */ -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long have_console;/* serial_init() was called */ -#ifdef CONFIG_PRE_CONSOLE_BUFFER -unsigned long precon_buf_idx;/* Pre-Console buffer index */ -#endif -unsigned long relocaddr;/* Start address of U-Boot in RAM */ -#if defined(CONFIG_LCD ) || defined(CONFIG_VIDEO ) -unsigned long fb_base;/* Base address of framebuffer memory */ -#endif -#if defined(CONFIG_POST ) || defined(CONFIG_LOGBUFFER ) -unsigned long post_log_word;/* Record POST activities */ -unsigned long post_log_res;/* success of POST test */ -unsigned long post_init_f_time;/* When post_init_f started */ -#endif -#ifdef CONFIG_BOARD_TYPES -unsigned long board_type; -#endif -#ifdef CONFIG_MODEM_SUPPORT -unsigned long do_mdm_init; -unsigned long be_quiet; -#endif -void **jt;/* jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #if 1 #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r2")
Signature · 1 line
1.7.7.3
PATCH v2 55/58 sandbox: Use generic global_data
In reply to Simon GlassMove sandbox over to use generic global_data.
---
Changes in v2: None
arch/sandbox/include/asm/global_data.h | 25 +------------------------ 1 files changed, 1 insertions(+), 24 deletions(-)
arch/sandbox/include/asm/global_data.h +1 -24
@@ -31,30 +31,7 @@ struct arch_global_data {u8 *ram_buf;/* emulated RAM buffer */ }; -/* -* The following data structure is placed in some memory wich is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ - -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long have_console;/* serial_init() was called */ -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long fb_base;/* base address of frame buffer */ -phys_size_t ram_size;/* RAM size */ -const void *fdt_blob;/* Our device tree, NULL if none */ -void **jt;/* jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #define DECLARE_GLOBAL_DATA_PTR extern gd_t *gd
Signature · 1 line
1.7.7.3
PATCH v2 56/58 sh: Use generic global_data
In reply to Simon GlassMove sh over to use generic global_data.
---
Changes in v2: None
arch/sh/include/asm/global_data.h | 20 +------------------- 1 files changed, 1 insertions(+), 19 deletions(-)
arch/sh/include/asm/global_data.h +1 -19
@@ -31,25 +31,7 @@struct arch_global_data { }; -typedef struct global_data -{ -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long cpu_clk;/* CPU clock in Hz! */ -unsigned long have_console;/* serial_init() was called */ -#ifdef CONFIG_PRE_CONSOLE_BUFFER -unsigned long precon_buf_idx;/* Pre-Console buffer index */ -#endif -phys_size_t ram_size;/* RAM size */ -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid */ -void **jt;/* Standalone app jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("r13")
Signature · 1 line
1.7.7.3
PATCH v2 57/58 sparc: Use generic global_data
In reply to Simon GlassMove sparc over to use generic global_data.
---
Changes in v2: None
arch/sparc/include/asm/global_data.h | 46 +--------------------------------- 1 files changed, 1 insertions(+), 45 deletions(-)
arch/sparc/include/asm/global_data.h +1 -45
@@ -33,51 +33,7 @@struct arch_global_data { }; -/* -* The following data structure is placed in some memory wich is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ - -typedef struct global_data { -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long cpu_clk;/* CPU clock in Hz! */ -unsigned long bus_clk; - -phys_size_t ram_size;/* RAM size */ -unsigned long reloc_off;/* Relocation Offset */ -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long have_console;/* serial_init() was called */ - -#ifdef CONFIG_PRE_CONSOLE_BUFFER -unsigned long precon_buf_idx;/* Pre-Console buffer index */ -#endif -#if defined(CONFIG_LCD ) || defined(CONFIG_VIDEO ) -unsigned long fb_base;/* Base address of framebuffer memory */ -#endif -#if defined(CONFIG_POST ) || defined(CONFIG_LOGBUFFER ) -unsigned long post_log_word;/* Record POST activities */ -unsigned long post_log_res;/* success of POST test */ -unsigned long post_init_f_time;/* When post_init_f started */ -#endif -#ifdef CONFIG_BOARD_TYPES -unsigned long board_type; -#endif -#ifdef CONFIG_MODEM_SUPPORT -unsigned long do_mdm_init; -unsigned long be_quiet; -#endif -void **jt;/* jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -struct arch_global_data arch;/* architecture-specific data */ -}gd_t ; - -#include <asm-generic/global_data_flags.h> +#include <asm-generic/global_data.h> #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("%g7")
Signature · 1 line
1.7.7.3
PATCH v2 58/58 x86: Use generic global_data
In reply to Simon GlassMove x86 over to use generic global_data.
---
Changes in v2:
- Rebase to master
arch/x86/include/asm/global_data.h | 37 ++--------------------------------- 1 files changed, 3 insertions(+), 34 deletions(-)
arch/x86/include/asm/global_data.h +3 -34
@@ -31,40 +31,11 @@ struct arch_global_data {struct global_data *gd_addr;/* Location of Global Data */ }; -/* -* The following data structure is placed in some memory wich is -* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or -* some locked parts of the data cache) to allow for a minimum set of -* global variables during system initialization (until we have set -* up the memory controller so that we can use RAM). -*/ - -#include <asm/u-boot.h> - -typedef struct global_data gd_t ; - -struct global_data { -struct arch_global_data arch;/* architecture-specific data */ -bd_t *bd; -unsigned long flags; -unsigned int baudrate; -unsigned long have_console;/* serial_init() was called */ -#ifdef CONFIG_PRE_CONSOLE_BUFFER -unsigned long precon_buf_idx;/* Pre-Console buffer index */ #endif -unsigned long reloc_off;/* Relocation Offset */ -unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long cpu_clk;/* CPU clock in Hz! */ -unsigned long bus_clk; -unsigned long relocaddr;/* Start address of U-Boot in RAM */ -unsigned long start_addr_sp;/* start_addr_stackpointer */ -phys_size_t ram_size;/* RAM size */ -const void *fdt_blob;/* Our device tree, NULL if none */ -void **jt;/* jump table */ -char env_buf[32 ];/* buffer for getenv() before reloc. */ -}; +#include <asm-generic/global_data.h> + +#ifndef __ASSEMBLY__static inline gd_t *get_fs_gd_ptr (void ) {gd_t *gd_ptr;
@@ -78,8 +49,6 @@ static inline gd_t *get_fs_gd_ptr(void)#endif -#include <asm-generic/global_data_flags.h> -/* * Our private Global Data Flags */
Signature · 1 line
1.7.7.3
v2 cover Move arch-specific global data into its own structure
In reply to Simon GlassQuoted 255 lines · Simon Glass
The previous generic board series hit a snag in that we needed generic code to access some of the architecture-specific fields in
global_data.The solution eventually arrived at was to move these fields into a separate structure, so that
global_datahas the generic fields, and within that there is anarch_global_datastructure holding the architecture-specific ones.This series makes that change. Assuming this is reasonable, the next step is to bring back the generic board patches on top of this.
A couple of things are left undone in this series:
- possibly unifybrg_clkon powerpc (but that would involve unifying some ifdefs
- decide what to do about PCI clock being present with there is noCONFIG_PCI. It seem wrong to me, but I haven't changed it for this series.I have completed a build of all commits for all builds and see no regressions. But the following boards had errors/warnings, so it seems I need to continue working on my toolchains:
blackfin: + bf561-acvilon + dnp5370 + cm-bf561 + blackstamp + br4
+ bct-brettl2 + cm-bf527 + bf506f-ezkit + ip04 + bf527-sdp + bf537-stamp + bf527-ezkit-v2 + cm-bf537e + tcm-bf518 + cm-bf537u + bf527-ezkit + bf537-pnav + cm-bf533 + pr1 + bf533-ezkit + ibf-dsp561 +bf537-srv1 + cm-bf548 + bf537-minotaur + bf538f-ezkit + bf548-ezkit + bf525-ucr2 + blackvme + tcm-bf537 + bf533-stamp + bf518f-ezbrd + bf527-ad7160-eval + bf526-ezbrd + bf561-ezkit avr32: + hammerhead + atngw100mkii + grasshopper + favr-32-ezkit + atstk1006 + atstk1004 + atstk1003 + atstk1002 + atngw100 + mimc200 m68k: + M5235EVB_Flash32 + M54455EVB_a66 + M5329AFEE + M5249EVB + idmr + M5208EVBE + eb_cpu5282 + M5475FFE + M54451EVB + astro_mcf5373l + M54418TWR_serial_rmii + M54455EVB_intel + M5282EVB + M54455EVB_i66 + M5475GFE + M5253DEMO + M54455EVB_stm33 + M5253EVBE + M5485BFE + M5485DFE + M5329BFEE + M52277EVB + M5475EFE + M5475CFE + cobra5272 + M5485AFE + M53017EVB + M5475AFE + M5485HFE + M5235EVB + M5275EVB + M5271EVB + M54418TWR_nand_mii + M54418TWR_nand_rmii_lowfreq + TASREG + M5475BFE + M5475DFE + M52277EVB_stmicro + eb_cpu5282_internal +
M54451EVB_stmicro+ M5485GFE + M5373EVB + M5485EFE + M5485FFE + M54418TWR +M54418TWR_nand_rmii+M54418TWR_serial_mii+ M5485CFE + M54455EVB + M5272C3
powerpc: + MVBLM7 + MVSMRsparc: + grsim + grsim_leon2 + gr_cpci_ax2000 + gr_xc3s_1500 + gr_ep2s60 sh: + rsk7269 + rsk7264 + sh7757lcr + rsk7203 microblaze: + microblaze-generic openrisc: + openrisc-generic mips: + incaip_150MHz + pb1000 + vct_premium_onenand + vct_platinum + qemu_mips + vct_premium_small + dbau1100 +
vct_platinumavc_small+vct_premium_onenand_small+ incaip +vct_platinum_small+ dbau1550 + dbau1500 +qemu_mips64el+vct_platinumavc_onenand_small+incaip_133MHz+vct_platinum_onenand_small
+vct_premium+vct_platinumavc_onenand+qemu_mips64+qi_lb60+vct_platinumavc+incaip_100MHz+vct_platinum_onenand+qemu_mipsel+dbau1550_el+ dbau1000arm: + VCMA9 + smdk2410 nds32: + adp-ag101p + adp-ag102 + adp-ag101Changes in v2:
- Rebase to master
- Removegdt_addrwhich is no longer used on x86
- Add new patch to move gd pointer by C to asm on x86
- Rebase to master
- Remove tabs after #ifdef and #define in genericglobal_data
- Rebase to masterSimon Glass (58):
Add architecture-specific global data
at91: Move at91 global data intoarch_global_data
arm: Movetimer_rate_hzintoarch_global_data
arm: Move tbu toarch_global_data
arm: Move tbl toarch_global_data
arm: Move lastinc toarch_global_data
arm: Movetimer_reset_valuetoarch_global_data
ixp: Move timestamp toarch_global_data
nds32: Droptlb_addrfrom global data
arm: Movetlb_addrtoarch_global_data
x86: Removegdt_addrfromarch_global_data
x86: Movegd_addrintoarch_global_data
x86: Set up the global data pointer in C instead of asm
x86: Removereset_status, relocoff fromglobal_data
ppc: Movebrg_clktoarch_global_data
ppc: Remove extrapci_clkfields fromglobal_data
ppc: Move clock fields toarch_global_data
ppc: Move mpc83xx clock fields toarch_global_data
ppc: Movelbc_clkand cpu toarch_global_data
ppc: m68k: Movei2c1_clk,i2c2_clktoarch_global_data
ppc: MoveCONFIG_QEtoarch_global_data
ppc: Moveused_lawstoarch_global_data
ppc: Moveused_tlb_camstoarch_global_data
ppc: Move mpc5xxx clocks toarch_global_data
ppc: Move mpc512x clocks toarch_global_data
ppc: Move mpc8220 clocks toarch_global_data
ppc: Movereset_statustoarch_global_data
ppc: Move arbiter fields toarch_global_data
ppc: Movedp_alloc_base,dp_alloc_toptoarch_global_data
arm: Moveuart_clktoarch_global_data
ppc: Movemirror_hacktoarch_global_data
ppc: Removeconsole_addrfrom global data
ppc: Movefpga_statetoarch_global_data
ppc: Movewdt_lasttoarch_global_data
ppc: Movekbd_statustoarch_global_data
ppc: arm: Movesdhc_clkintoarch_global_data
sparc: Dropkbd_statusandreset_statusfromglobal_data
m68k: MoveCONFIG_EXTRA_CLOCKtoarch_global_data
mips: Moveper_clkanddev_clktoarch_global_data
avr32: Movestack_endtoarch_global_data
avr32: Movecpu_hztoarch_global_data
sandbox: Moveram_buftoarch_global_data
Add genericglobal_data
Only usefb_baseif we have a display
arm: Use genericglobal_data
avr32: Use genericglobal_data
blackfin: Use genericglobal_data
m68k: Use genericglobal_data
microblaze: Use genericglobal_data
mips: Use genericglobal_data
nds32: Use genericglobal_data
nios2: Use genericglobal_data
openrisc: Use genericglobal_data
powerpc: Use genericglobal_data
sandbox: Use genericglobal_data
sh: Use genericglobal_data
sparc: Use genericglobal_data
x86: Use genericglobal_dataarch/arm/cpu/arm1136/mx31/timer.c | 10 +- arch/arm/cpu/arm1136/mx35/generic.c | 6 +- arch/arm/cpu/arm1136/mx35/timer.c | 4 +- arch/arm/cpu/arm1136/omap24xx/timer.c | 23 +++-- arch/arm/cpu/arm920t/a320/timer.c | 18 ++-- arch/arm/cpu/arm920t/at91/clock.c | 24 +++-- arch/arm/cpu/arm920t/at91/timer.c | 14 ++-- arch/arm/cpu/arm920t/s3c24x0/timer.c | 30 +++--- arch/arm/cpu/arm926ejs/armada100/timer.c | 18 ++-- arch/arm/cpu/arm926ejs/at91/clock.c | 30 +++--- arch/arm/cpu/arm926ejs/at91/timer.c | 18 ++-- arch/arm/cpu/arm926ejs/davinci/timer.c | 21 ++-- arch/arm/cpu/arm926ejs/kirkwood/timer.c | 4 +- arch/arm/cpu/arm926ejs/mb86r0x/timer.c | 4 +- arch/arm/cpu/arm926ejs/mx25/generic.c | 4 +- arch/arm/cpu/arm926ejs/mx25/timer.c | 4 +- arch/arm/cpu/arm926ejs/mx27/timer.c | 4 +- arch/arm/cpu/arm926ejs/mxs/timer.c | 4 +- arch/arm/cpu/arm926ejs/omap/timer.c | 4 +- arch/arm/cpu/arm926ejs/orion5x/timer.c | 4 +- arch/arm/cpu/arm926ejs/pantheon/timer.c | 18 ++-- arch/arm/cpu/arm926ejs/spear/timer.c | 4 +- arch/arm/cpu/arm926ejs/versatile/timer.c | 4 +- arch/arm/cpu/armv7/omap-common/timer.c | 20 ++-- arch/arm/cpu/armv7/s5p-common/timer.c | 14 ++-- arch/arm/cpu/armv7/socfpga/timer.c | 15 ++-- arch/arm/cpu/armv7/u8500/timer.c | 16 ++-- arch/arm/cpu/armv7/zynq/timer.c | 14 ++-- arch/arm/cpu/ixp/timer.c | 12 +- arch/arm/cpu/pxa/timer.c | 4 +- arch/arm/cpu/tegra-common/timer.c | 12 +- arch/arm/imx-common/speed.c | 16 ++-- arch/arm/imx-common/timer.c | 4 +- arch/arm/include/asm/arch-at91/clk.h | 12 +- arch/arm/include/asm/global_data.h | 58 +++--------- arch/arm/lib/board.c | 2 +- arch/arm/lib/cache-cp15.c | 4 +- arch/avr32/cpu/cpu.c | 4 +- arch/avr32/cpu/exception.c | 6 +- arch/avr32/cpu/interrupts.c | 6 +- arch/avr32/include/asm/global_data.h | 34 +------ arch/avr32/lib/board.c | 2 +- arch/avr32/lib/bootm.c | 2 +- arch/blackfin/include/asm/global_data.h | 33 +------ arch/m68k/cpu/mcf5227x/cpu.c | 6 +- arch/m68k/cpu/mcf5227x/speed.c | 12 +- arch/m68k/cpu/mcf523x/speed.c | 2 +- arch/m68k/cpu/mcf52x2/speed.c | 4 +- arch/m68k/cpu/mcf532x/speed.c | 2 +- arch/m68k/cpu/mcf5445x/cpu.c | 10 +- arch/m68k/cpu/mcf5445x/speed.c | 14 ++-- arch/m68k/cpu/mcf547x_8x/speed.c | 2 +- arch/m68k/include/asm/global_data.h | 47 ++-------- arch/m68k/lib/board.c | 6 +- arch/microblaze/include/asm/global_data.h | 27 +----- arch/mips/cpu/xburst/timer.c | 20 ++-- arch/mips/include/asm/global_data.h | 38 +------- arch/nds32/include/asm/global_data.h | 35 +------ arch/nds32/lib/board.c | 11 -- arch/nios2/include/asm/global_data.h | 25 +---- arch/openrisc/include/asm/global_data.h | 25 +---- arch/powerpc/cpu/mpc512x/cpu.c | 4 +- arch/powerpc/cpu/mpc512x/cpu_init.c | 2 +- arch/powerpc/cpu/mpc512x/i2c.c | 2 +- arch/powerpc/cpu/mpc512x/ide.c | 2 +- arch/powerpc/cpu/mpc512x/serial.c | 2 +- arch/powerpc/cpu/mpc512x/speed.c | 15 ++- arch/powerpc/cpu/mpc5xxx/i2c.c | 2 +- arch/powerpc/cpu/mpc5xxx/ide.c | 2 +- arch/powerpc/cpu/mpc5xxx/serial.c | 4 +- arch/powerpc/cpu/mpc5xxx/speed.c | 18 +++- arch/powerpc/cpu/mpc8220/fec.c | 8 +- arch/powerpc/cpu/mpc8220/speed.c | 12 ++- arch/powerpc/cpu/mpc8260/commproc.c | 21 ++-- arch/powerpc/cpu/mpc8260/cpu_init.c | 4 +- arch/powerpc/cpu/mpc8260/i2c.c | 2 +- arch/powerpc/cpu/mpc8260/speed.c | 16 ++-- arch/powerpc/cpu/mpc83xx/cpu.c | 2 +- arch/powerpc/cpu/mpc83xx/cpu_init.c | 32 ++++--- arch/powerpc/cpu/mpc83xx/fdt.c | 2 +- arch/powerpc/cpu/mpc83xx/pcie.c | 4 +- arch/powerpc/cpu/mpc83xx/speed.c | 108 +++++++++++++--------- arch/powerpc/cpu/mpc85xx/commproc.c | 21 ++-- arch/powerpc/cpu/mpc85xx/cpu.c | 2 +- arch/powerpc/cpu/mpc85xx/fdt.c | 4 +- arch/powerpc/cpu/mpc85xx/speed.c | 28 +++--- arch/powerpc/cpu/mpc85xx/tlb.c | 8 +- arch/powerpc/cpu/mpc86xx/cpu.c | 2 +- arch/powerpc/cpu/mpc86xx/fdt.c | 4 +- arch/powerpc/cpu/mpc86xx/speed.c | 8 +- arch/powerpc/cpu/mpc8xx/commproc.c | 20 ++-- arch/powerpc/cpu/mpc8xx/fdt.c | 2 +- arch/powerpc/cpu/mpc8xx/speed.c | 2 +- arch/powerpc/cpu/mpc8xxx/cpu.c | 8 +- arch/powerpc/cpu/mpc8xxx/law.c | 16 ++-- arch/powerpc/cpu/ppc4xx/4xx_uart.c | 4 +- arch/powerpc/cpu/ppc4xx/fdt.c | 4 +- arch/powerpc/include/asm/global_data.h | 140 +++++++++------------------- arch/powerpc/lib/board.c | 33 ++++--- arch/sandbox/cpu/cpu.c | 2 +- arch/sandbox/include/asm/global_data.h | 25 +---- arch/sandbox/lib/board.c | 6 +- arch/sh/include/asm/global_data.h | 21 +---- arch/sparc/include/asm/global_data.h | 51 +--------- arch/x86/cpu/cpu.c | 4 +- arch/x86/cpu/start.S | 6 - arch/x86/include/asm/global_data.h | 43 ++------- board/evb64260/mpsc.c | 2 +- board/freescale/bsc9131rdb/bsc9131rdb.c | 2 +- board/freescale/corenet_ds/corenet_ds.c | 2 +- board/freescale/p1010rdb/ddr.c | 6 +- board/freescale/p1010rdb/p1010rdb.c | 6 +- board/freescale/p1_p2_rdb/ddr.c | 2 +- board/freescale/p1_p2_rdb/p1_p2_rdb.c | 2 +- board/freescale/p2041rdb/p2041rdb.c | 2 +- board/freescale/t4qds/t4qds.c | 2 +- board/gdsys/405ep/405ep.c | 15 ++-- board/gdsys/405ex/405ex.c | 13 ++- board/gdsys/405ex/io64.c | 2 +- board/inka4x0/inkadiag.c | 8 +- board/lwmon/lwmon.c | 10 +- board/lwmon5/kbd.c | 10 +- board/lwmon5/lwmon5.c | 8 +- common/cmd_bdinfo.c | 6 +- common/cmd_immap.c | 2 +- drivers/i2c/fsl_i2c.c | 7 +- drivers/input/ps2ser.c | 2 +- drivers/mmc/fsl_esdhc.c | 6 +-
Quoted 8 lines
drivers/net/mpc512x_fec.c | 2 +- drivers/net/mpc5xxx_fec.c | 9 +- drivers/qe/fdt.c | 12 +- drivers/qe/qe.c | 21 ++-- examples/standalone/mem_to_mem_idma2intr.c | 4 +- include/asm-generic/global_data.h | 102 ++++++++++++++++++++ 134 files changed, 812 insertions(+), 1031 deletions(-) create mode 100644 include/asm-generic/global_data.h
With the notes that patch 10 (arm, tlb_addr) needed a refresh to cover tlb_size as well, and I re-ordered 12/13 per Graem's notes, and the powerpc gd->cpu one needed a quick update to cover new boards, I've now applied the series to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130204/1394715d/attachment.pgp>