[U-Boot] [PATCH v2 0/58] Move arch-specific global data into its own structure

Simon Glass sjg at chromium.org
Fri Dec 14 07:48:29 CET 2012


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-ag101


Changes 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

-- 
1.7.7.3



More information about the U-Boot mailing list