[U-Boot] [PATCH v3 00/15] Powerpc: mpc8xx: cleanup before migration to DM model

The purpose of this serie is to clean the mpc8xx code a bit prior to moving to OF and DM model.
Christophe Leroy (15): powerpc, 8xx: initialisation global data board, MCR3000: replace mtd->priv by mtd_to_nand() board, MCR3000: Increase Monitor size soft_i2c: cleanup - no mpc8xx support boards: MCR3000: cleanup config powerpc: mpc8xx: cleaning up watchdog powerpc: mpc8xx: make get_immr() independent of CONFIG_8xx powerpc: mpc8xx: Change CONFIG_8xx to CONFIG_MPC8xx powerpc: 8xx: get rid of the multiple PVR_ values powerpc: mpc8xx: refactorise reginfo powerpc: mpc8xx: harmonise initialisation of the immap local pointer powerpc: mpc8xx: remove get_immr() argument powerpc: mpc8xx: use PVR related defines and macros common/env_embedded: allow fine placement of environment object board: MCR3000: Use smaller flash sector for environment
Changes since v2: Cleaning more items in patch 5 Not removing get_immr() anymore in patch 7 Patches from 11 are new in this version
api/api_platform-powerpc.c | 2 +- arch/powerpc/Kconfig | 4 +- arch/powerpc/cpu/mpc8xx/Kconfig | 2 +- arch/powerpc/cpu/mpc8xx/Makefile | 1 - arch/powerpc/cpu/mpc8xx/cpu.c | 29 +++------ arch/powerpc/cpu/mpc8xx/cpu_init.c | 10 ++- arch/powerpc/cpu/mpc8xx/immap.c | 22 ++++++- arch/powerpc/cpu/mpc8xx/reginfo.c | 71 ---------------------- arch/powerpc/cpu/mpc8xx/speed.c | 3 +- arch/powerpc/include/asm/cache.h | 6 +- arch/powerpc/include/asm/global_data.h | 2 +- .../include/asm/{8xx_immap.h => immap_8xx.h} | 0 arch/powerpc/include/asm/iopin_8xx.h | 2 +- arch/powerpc/include/asm/ppc.h | 13 ++-- arch/powerpc/include/asm/processor.h | 6 +- board/cssi/MCR3000/MCR3000.c | 2 + board/cssi/MCR3000/nand.c | 2 +- board/cssi/MCR3000/u-boot.lds | 6 +- cmd/bdinfo.c | 2 +- configs/MCR3000_defconfig | 4 +- drivers/i2c/soft_i2c.c | 3 - drivers/net/Kconfig | 2 +- drivers/serial/Kconfig | 2 +- drivers/spi/Kconfig | 2 +- env/embedded.c | 8 +-- include/asm-generic/u-boot.h | 2 +- include/commproc.h | 2 +- include/configs/MCR3000.h | 36 ++--------- include/env_default.h | 2 +- include/mpc8xx.h | 4 +- include/ppc_asm.tmpl | 6 +- include/watchdog.h | 5 -- 32 files changed, 85 insertions(+), 178 deletions(-) delete mode 100644 arch/powerpc/cpu/mpc8xx/reginfo.c rename arch/powerpc/include/asm/{8xx_immap.h => immap_8xx.h} (100%)

Global data pointer has to be initialised Global data area has to be zeroised
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- arch/powerpc/cpu/mpc8xx/cpu_init.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/arch/powerpc/cpu/mpc8xx/cpu_init.c b/arch/powerpc/cpu/mpc8xx/cpu_init.c index dc601a12976..3c9c4b19753 100644 --- a/arch/powerpc/cpu/mpc8xx/cpu_init.c +++ b/arch/powerpc/cpu/mpc8xx/cpu_init.c @@ -12,6 +12,8 @@ #include <commproc.h> #include <asm/io.h>
+DECLARE_GLOBAL_DATA_PTR; + /* * Breath some life into the CPU... * @@ -24,6 +26,10 @@ void cpu_init_f(immap_t __iomem *immr) memctl8xx_t __iomem *memctl = &immr->im_memctl; ulong reg;
+ gd = (gd_t *)(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET); + /* Clear initial global data */ + memset((void *)gd, 0, sizeof(*gd)); + /* SYPCR - contains watchdog control (11-9) */
out_be32(&immr->im_siu_conf.sc_sypcr, CONFIG_SYS_SYPCR);

Since commit 17cb4b8f327eb ("mtd: nand: Add+use mtd_to/from_nand and nand_get/set_controller_data"), mtd_to_nand() has to be used instead of mtd->priv
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- board/cssi/MCR3000/nand.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/cssi/MCR3000/nand.c b/board/cssi/MCR3000/nand.c index 8e5b0d0618f..4c6fc865f23 100644 --- a/board/cssi/MCR3000/nand.c +++ b/board/cssi/MCR3000/nand.c @@ -17,7 +17,7 @@
static void nand_hwcontrol(struct mtd_info *mtdinfo, int cmd, unsigned int ctrl) { - struct nand_chip *this = mtdinfo->priv; + struct nand_chip *this = mtd_to_nand(mtdinfo); immap_t __iomem *immr = (immap_t __iomem *)CONFIG_SYS_IMMR; unsigned short pddat = 0;

U-boot doesn't fit anymore in a 256kb area, increase it to 320kb
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- include/configs/MCR3000.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/configs/MCR3000.h b/include/configs/MCR3000.h index 6b03873ce87..29e61c7c222 100644 --- a/include/configs/MCR3000.h +++ b/include/configs/MCR3000.h @@ -25,7 +25,7 @@ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ "mcr3k:eth0:off;" \ "${ofl_args}; " \ - "bootm 0x04060000 - 0x04050000\0" \ + "bootm 0x04070000 - 0x04060000\0" \ "tftpboot=setenv bootargs " \ "${console_args} " \ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ @@ -46,7 +46,7 @@ "${console_args} " \ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ "mcr3k:eth0:off;" \ - "bootm 0x04060000 - 0x04050000\0" \ + "bootm 0x04070000 - 0x04060000\0" \ "dhcpboot=dhcp ${loadaddr} ${filename};" \ "tftp 0xf00000 mcr3000.dtb;" \ "setenv bootargs " \ @@ -108,7 +108,7 @@ * the maximum mapped by the Linux kernel during initialization. */ #define CONFIG_SYS_BOOTMAPSZ (8 << 20) -#define CONFIG_SYS_MONITOR_LEN (256 << 10) +#define CONFIG_SYS_MONITOR_LEN (320 << 10) #define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE #define CONFIG_SYS_MALLOC_LEN (4096 << 10)

commit 907208c452999 ("powerpc: Partialy restore core of mpc8xx") didn't bring back support for I2C on the mpc8xx
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- drivers/i2c/soft_i2c.c | 3 --- 1 file changed, 3 deletions(-)
diff --git a/drivers/i2c/soft_i2c.c b/drivers/i2c/soft_i2c.c index 4fd5551a228..cc9c5ef356f 100644 --- a/drivers/i2c/soft_i2c.c +++ b/drivers/i2c/soft_i2c.c @@ -25,9 +25,6 @@ #include <asm/arch/gpio.h> #endif #endif -#if defined(CONFIG_8xx) -#include <asm/io.h> -#endif #include <i2c.h>
#if defined(CONFIG_SOFT_I2C_GPIO_SCL)

Some config is redundant with Kconfig. Fix it. Also remove unused configs Move SDRAM_MAX_SIZE in the only place it is used
include/environment.h already defines CONFIG_ENV_SIZE from CONFIG_ENV_SECT_SIZE and defines CONFIG_ENV_ADDR as (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- arch/powerpc/Kconfig | 1 + board/cssi/MCR3000/MCR3000.c | 2 ++ configs/MCR3000_defconfig | 2 ++ include/configs/MCR3000.h | 26 +------------------------- 4 files changed, 6 insertions(+), 25 deletions(-)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index e4b3043fa22..3a2653ff0d3 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -32,6 +32,7 @@ config MPC86xx
config 8xx bool "MPC8xx" + select BOARD_EARLY_INIT_F imply CMD_REGINFO
endchoice diff --git a/board/cssi/MCR3000/MCR3000.c b/board/cssi/MCR3000/MCR3000.c index c9288818049..6939a2cf617 100644 --- a/board/cssi/MCR3000/MCR3000.c +++ b/board/cssi/MCR3000/MCR3000.c @@ -16,6 +16,8 @@
DECLARE_GLOBAL_DATA_PTR;
+#define SDRAM_MAX_SIZE (32 * 1024 * 1024) + static const uint cs1_dram_table_66[] = { /* DRAM - single read. (offset 0 in upm RAM) */ 0x0F3DFC04, 0x0FEFBC04, 0x00BE7804, 0x0FFDF400, diff --git a/configs/MCR3000_defconfig b/configs/MCR3000_defconfig index 108cf00154a..6a29f9de1ef 100644 --- a/configs/MCR3000_defconfig +++ b/configs/MCR3000_defconfig @@ -71,3 +71,5 @@ CONFIG_MPC8XX_FEC=y CONFIG_SHA256=y CONFIG_LZMA=y CONFIG_OF_LIBFDT=y +CONFIG_USE_BOOTCOMMAND=y +CONFIG_BOOTCOMMAND="run flashboot" diff --git a/include/configs/MCR3000.h b/include/configs/MCR3000.h index 29e61c7c222..43bbacfd9e6 100644 --- a/include/configs/MCR3000.h +++ b/include/configs/MCR3000.h @@ -9,7 +9,6 @@ #define __CONFIG_H
/* High Level Configuration Options */ -#define CONFIG_BOARD_EARLY_INIT_F 1 /* Call board_early_init_f */ #define CONFIG_MISC_INIT_R 1 /* Call misc_init_r */
#define CONFIG_EXTRA_ENV_SETTINGS \ @@ -55,25 +54,16 @@ "${ofl_args}; " \ "bootm ${loadaddr} - 0xf00000\0"
-#define CONFIG_BOOTDELAY 5 - #define CONFIG_IPADDR 192.168.0.3 #define CONFIG_SERVERIP 192.168.0.1 #define CONFIG_NETMASK 255.0.0.0
-#define CONFIG_BOOTCOMMAND "run flashboot" - #define CONFIG_LOADS_ECHO 1 /* echo on for serial download */ -#undef CONFIG_LOADS_BAUD_CHANGE /* don't allow baudrate change */
#define CONFIG_WATCHDOG 1 /* watchdog enabled */
/* Miscellaneous configurable options */
-#ifdef CONFIG_HUSH_PARSER -#define CONFIG_SYS_PROMPT_HUSH_PS2 "S3K> " -#endif - #define CONFIG_SYS_MEMTEST_START 0x00002000 #define CONFIG_SYS_MEMTEST_END 0x00800000
@@ -91,7 +81,6 @@
/* RAM configuration (note that CONFIG_SYS_SDRAM_BASE must be zero) */ #define CONFIG_SYS_SDRAM_BASE 0x00000000 -#define SDRAM_MAX_SIZE (32 * 1024 * 1024)
/* FLASH organization */ #define CONFIG_SYS_FLASH_BASE CONFIG_SYS_TEXT_BASE @@ -116,29 +105,16 @@
/* environment is in FLASH */ #define CONFIG_ENV_SECT_SIZE (64 * 1024) -#define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE -#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_MONITOR_LEN) -#define CONFIG_ENV_OFFSET (CONFIG_ENV_ADDR - CONFIG_SYS_FLASH_BASE) +#define CONFIG_ENV_OFFSET CONFIG_SYS_MONITOR_LEN #define CONFIG_ENV_OVERWRITE 1
-/* Cache Configuration */ -#define CONFIG_SYS_CACHELINE_SIZE 16 - /* Ethernet configuration part */ #define CONFIG_SYS_DISCOVER_PHY 1 -#ifdef CONFIG_MPC8XX_FEC #define CONFIG_MII_INIT 1 -#endif
/* NAND configuration part */ #define CONFIG_SYS_MAX_NAND_DEVICE 1 #define CONFIG_SYS_NAND_MAX_CHIPS 1 #define CONFIG_SYS_NAND_BASE 0x0C000000
-/* Internal Definitions */ - -/* Boot Flags*/ -#define BOOTFLAG_COLD 0x01 -#define BOOTFLAG_WARM 0x02 - #endif /* __CONFIG_H */

In preparation of migration to DM watchdog, clean up a bit.
The 8xx watchdog really is a HW watchdog, so declare it as is then it goes through Kconfig
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- arch/powerpc/Kconfig | 1 + arch/powerpc/cpu/mpc8xx/cpu.c | 20 +++++--------------- arch/powerpc/cpu/mpc8xx/cpu_init.c | 4 +--- include/configs/MCR3000.h | 2 -- include/watchdog.h | 5 ----- 5 files changed, 7 insertions(+), 25 deletions(-)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 3a2653ff0d3..b20837b473f 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -34,6 +34,7 @@ config 8xx bool "MPC8xx" select BOARD_EARLY_INIT_F imply CMD_REGINFO + imply HW_WATCHDOG
endchoice
diff --git a/arch/powerpc/cpu/mpc8xx/cpu.c b/arch/powerpc/cpu/mpc8xx/cpu.c index 1e0ea28a918..1883440db34 100644 --- a/arch/powerpc/cpu/mpc8xx/cpu.c +++ b/arch/powerpc/cpu/mpc8xx/cpu.c @@ -273,26 +273,16 @@ unsigned long get_tbclk(void)
/* ------------------------------------------------------------------------- */
-#if defined(CONFIG_WATCHDOG) -void watchdog_reset(void) +#if defined(CONFIG_HW_WATCHDOG) +void hw_watchdog_reset(void) { + immap_t __iomem *immr = (immap_t __iomem *)CONFIG_SYS_IMMR; int re_enable = disable_interrupts();
- reset_8xx_watchdog((immap_t __iomem *)CONFIG_SYS_IMMR); - if (re_enable) - enable_interrupts(); -} -#endif /* CONFIG_WATCHDOG */ - -#if defined(CONFIG_WATCHDOG) - -void reset_8xx_watchdog(immap_t __iomem *immr) -{ - /* - * All other boards use the MPC8xx Internal Watchdog - */ out_be16(&immr->im_siu_conf.sc_swsr, 0x556c); /* write magic1 */ out_be16(&immr->im_siu_conf.sc_swsr, 0xaa39); /* write magic2 */ + if (re_enable) + enable_interrupts(); } #endif /* CONFIG_WATCHDOG */
diff --git a/arch/powerpc/cpu/mpc8xx/cpu_init.c b/arch/powerpc/cpu/mpc8xx/cpu_init.c index 3c9c4b19753..654d559eeb8 100644 --- a/arch/powerpc/cpu/mpc8xx/cpu_init.c +++ b/arch/powerpc/cpu/mpc8xx/cpu_init.c @@ -34,9 +34,7 @@ void cpu_init_f(immap_t __iomem *immr)
out_be32(&immr->im_siu_conf.sc_sypcr, CONFIG_SYS_SYPCR);
-#if defined(CONFIG_WATCHDOG) - reset_8xx_watchdog(immr); -#endif /* CONFIG_WATCHDOG */ + WATCHDOG_RESET();
/* SIUMCR - contains debug pin configuration (11-6) */ setbits_be32(&immr->im_siu_conf.sc_siumcr, CONFIG_SYS_SIUMCR); diff --git a/include/configs/MCR3000.h b/include/configs/MCR3000.h index 43bbacfd9e6..ada009e5da4 100644 --- a/include/configs/MCR3000.h +++ b/include/configs/MCR3000.h @@ -60,8 +60,6 @@
#define CONFIG_LOADS_ECHO 1 /* echo on for serial download */
-#define CONFIG_WATCHDOG 1 /* watchdog enabled */ - /* Miscellaneous configurable options */
#define CONFIG_SYS_MEMTEST_START 0x00002000 diff --git a/include/watchdog.h b/include/watchdog.h index 64b59f107ad..52f4c506b04 100644 --- a/include/watchdog.h +++ b/include/watchdog.h @@ -72,11 +72,6 @@ int init_func_watchdog_reset(void); * Prototypes from $(CPU)/cpu.c. */
-/* MPC 8xx */ -#if defined(CONFIG_8xx) && !defined(__ASSEMBLY__) - void reset_8xx_watchdog(immap_t __iomem *immr); -#endif - #if defined(CONFIG_HW_WATCHDOG) && !defined(__ASSEMBLY__) void hw_watchdog_init(void); #endif

SPRN_IMMR is defined regardless of the CPU. Therefore, there is no point in enclosing get_immr() inside a #ifdef CONFIG_8xx
As it a static inline function, it will in any case only be compiled in functons using it.
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- arch/powerpc/include/asm/ppc.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/powerpc/include/asm/ppc.h b/arch/powerpc/include/asm/ppc.h index 5e0aa08be93..6ba10974b6d 100644 --- a/arch/powerpc/include/asm/ppc.h +++ b/arch/powerpc/include/asm/ppc.h @@ -40,14 +40,13 @@
#include <asm/processor.h>
-#if defined(CONFIG_8xx) static inline uint get_immr(uint mask) { uint immr = mfspr(SPRN_IMMR);
return mask ? (immr & mask) : immr; } -#endif + static inline uint get_pvr(void) { return mfspr(PVR);

CONFIG_8xx doesn't mean much outside of arch/powerpc/ This patch renames it CONFIG_MPC8xx just like CONFIG_MPC85xx etc ... It also renames 8xx_immap.h to immap_8xx.h to be consistent with other file names.
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- api/api_platform-powerpc.c | 2 +- arch/powerpc/Kconfig | 2 +- arch/powerpc/cpu/mpc8xx/Kconfig | 2 +- arch/powerpc/cpu/mpc8xx/immap.c | 2 +- arch/powerpc/include/asm/cache.h | 6 +++--- arch/powerpc/include/asm/global_data.h | 2 +- arch/powerpc/include/asm/{8xx_immap.h => immap_8xx.h} | 0 arch/powerpc/include/asm/iopin_8xx.h | 2 +- arch/powerpc/include/asm/ppc.h | 4 ++-- cmd/bdinfo.c | 2 +- configs/MCR3000_defconfig | 2 +- drivers/net/Kconfig | 2 +- drivers/serial/Kconfig | 2 +- drivers/spi/Kconfig | 2 +- include/asm-generic/u-boot.h | 2 +- include/commproc.h | 2 +- include/mpc8xx.h | 4 ++-- include/ppc_asm.tmpl | 6 +++--- 18 files changed, 23 insertions(+), 23 deletions(-) rename arch/powerpc/include/asm/{8xx_immap.h => immap_8xx.h} (100%)
diff --git a/api/api_platform-powerpc.c b/api/api_platform-powerpc.c index 9e9bc63b2f5..aae7ddee959 100644 --- a/api/api_platform-powerpc.c +++ b/api/api_platform-powerpc.c @@ -30,7 +30,7 @@ int platform_sys_info(struct sys_info *si) si->clk_bus = gd->bus_clk; si->clk_cpu = gd->cpu_clk;
-#if defined(CONFIG_8xx) || defined(CONFIG_E500) || defined(CONFIG_MPC86xx) +#if defined(CONFIG_MPC8xx) || defined(CONFIG_E500) || defined(CONFIG_MPC86xx) #define bi_bar bi_immr_base #elif defined(CONFIG_MPC83xx) #define bi_bar bi_immrbar diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index b20837b473f..af45cfe8498 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -30,7 +30,7 @@ config MPC86xx select SYS_FSL_DDR_BE imply CMD_REGINFO
-config 8xx +config MPC8xx bool "MPC8xx" select BOARD_EARLY_INIT_F imply CMD_REGINFO diff --git a/arch/powerpc/cpu/mpc8xx/Kconfig b/arch/powerpc/cpu/mpc8xx/Kconfig index 5a7db335ed2..f1123173765 100644 --- a/arch/powerpc/cpu/mpc8xx/Kconfig +++ b/arch/powerpc/cpu/mpc8xx/Kconfig @@ -1,5 +1,5 @@ menu "mpc8xx CPU" - depends on 8xx + depends on MPC8xx
config SYS_CPU default "mpc8xx" diff --git a/arch/powerpc/cpu/mpc8xx/immap.c b/arch/powerpc/cpu/mpc8xx/immap.c index 2284979dd65..dfe5dc21251 100644 --- a/arch/powerpc/cpu/mpc8xx/immap.c +++ b/arch/powerpc/cpu/mpc8xx/immap.c @@ -12,7 +12,7 @@ #include <common.h> #include <command.h>
-#include <asm/8xx_immap.h> +#include <asm/immap_8xx.h> #include <commproc.h> #include <asm/iopin_8xx.h> #include <asm/io.h> diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h index 0801d2c3677..445a366807d 100644 --- a/arch/powerpc/include/asm/cache.h +++ b/arch/powerpc/include/asm/cache.h @@ -7,7 +7,7 @@ #include <asm/processor.h>
/* bytes per L1 cache line */ -#if defined(CONFIG_8xx) +#if defined(CONFIG_MPC8xx) #define L1_CACHE_SHIFT 4 #elif defined(CONFIG_PPC64BRIDGE) #define L1_CACHE_SHIFT 7 @@ -72,7 +72,7 @@ void disable_cpc_sram(void); #define L2CACHE_NONE 0x03 /* NONE */ #define L2CACHE_PARITY 0x08 /* Mask for L2 Cache Parity Protected bit */
-#ifdef CONFIG_8xx +#ifdef CONFIG_MPC8xx /* Cache control on the MPC8xx is provided through some additional * special purpose registers. */ @@ -139,6 +139,6 @@ static inline void wr_dc_adr(uint val) mtspr(DC_ADR, val); } #endif -#endif /* CONFIG_8xx */ +#endif /* CONFIG_MPC8xx */
#endif diff --git a/arch/powerpc/include/asm/global_data.h b/arch/powerpc/include/asm/global_data.h index 35a02b61a44..016dc19cb4c 100644 --- a/arch/powerpc/include/asm/global_data.h +++ b/arch/powerpc/include/asm/global_data.h @@ -19,7 +19,7 @@ struct arch_global_data { u8 sdhc_adapter; #endif #endif -#if defined(CONFIG_8xx) +#if defined(CONFIG_MPC8xx) unsigned long brg_clk; #endif #if defined(CONFIG_CPM2) diff --git a/arch/powerpc/include/asm/8xx_immap.h b/arch/powerpc/include/asm/immap_8xx.h similarity index 100% rename from arch/powerpc/include/asm/8xx_immap.h rename to arch/powerpc/include/asm/immap_8xx.h diff --git a/arch/powerpc/include/asm/iopin_8xx.h b/arch/powerpc/include/asm/iopin_8xx.h index 15679a2db55..3b4e1b64a41 100644 --- a/arch/powerpc/include/asm/iopin_8xx.h +++ b/arch/powerpc/include/asm/iopin_8xx.h @@ -11,7 +11,7 @@ #define _ASM_IOPIN_8XX_H_
#include <linux/types.h> -#include <asm/8xx_immap.h> +#include <asm/immap_8xx.h> #include <asm/io.h>
#ifdef __KERNEL__ diff --git a/arch/powerpc/include/asm/ppc.h b/arch/powerpc/include/asm/ppc.h index 6ba10974b6d..c8d87a91b40 100644 --- a/arch/powerpc/include/asm/ppc.h +++ b/arch/powerpc/include/asm/ppc.h @@ -13,8 +13,8 @@
#ifndef __ASSEMBLY__
-#if defined(CONFIG_8xx) -#include <asm/8xx_immap.h> +#if defined(CONFIG_MPC8xx) +#include <asm/immap_8xx.h> #endif #ifdef CONFIG_MPC86xx #include <mpc86xx.h> diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index de6fc489877..7bea9b7a2d1 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -180,7 +180,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) print_bi_flash(bd); print_num("sramstart", bd->bi_sramstart); print_num("sramsize", bd->bi_sramsize); -#if defined(CONFIG_8xx) || defined(CONFIG_E500) +#if defined(CONFIG_MPC8xx) || defined(CONFIG_E500) print_num("immr_base", bd->bi_immr_base); #endif print_num("bootflags", bd->bi_bootflags); diff --git a/configs/MCR3000_defconfig b/configs/MCR3000_defconfig index 6a29f9de1ef..e32273cb2ee 100644 --- a/configs/MCR3000_defconfig +++ b/configs/MCR3000_defconfig @@ -1,6 +1,6 @@ CONFIG_PPC=y CONFIG_SYS_TEXT_BASE=0x4000000 -CONFIG_8xx=y +CONFIG_MPC8xx=y CONFIG_TARGET_MCR3000=y CONFIG_8xx_GCLK_FREQ=132000000 CONFIG_CMD_IMMAP=y diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index de1947ccc17..9b53f4c77b8 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -330,7 +330,7 @@ config RENESAS_RAVB
config MPC8XX_FEC bool "Fast Ethernet Controller on MPC8XX" - depends on 8xx + depends on MPC8xx select MII help This driver implements support for the Fast Ethernet Controller diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 93e602e0ee0..c0497803cba 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -592,7 +592,7 @@ config ZYNQ_SERIAL
config MPC8XX_CONS bool "Console driver for MPC8XX" - depends on 8xx + depends on MPC8xx default y
choice diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig index 235a8c7d73a..0c99afc659b 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig @@ -276,7 +276,7 @@ config LPC32XX_SSP
config MPC8XX_SPI bool "MPC8XX SPI Driver" - depends on 8xx + depends on MPC8xx help Enable support for SPI on MPC8XX
diff --git a/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h index d3049d81f58..f734d53eec2 100644 --- a/include/asm-generic/u-boot.h +++ b/include/asm-generic/u-boot.h @@ -37,7 +37,7 @@ typedef struct bd_info { unsigned long bi_dsp_freq; /* dsp core frequency */ unsigned long bi_ddr_freq; /* ddr frequency */ #endif -#if defined(CONFIG_8xx) || defined(CONFIG_E500) || defined(CONFIG_MPC86xx) +#if defined(CONFIG_MPC8xx) || defined(CONFIG_E500) || defined(CONFIG_MPC86xx) unsigned long bi_immr_base; /* base of IMMR register */ #endif #if defined(CONFIG_M68K) diff --git a/include/commproc.h b/include/commproc.h index 9536b135dcf..bd8adec6b07 100644 --- a/include/commproc.h +++ b/include/commproc.h @@ -16,7 +16,7 @@ #ifndef __CPM_8XX__ #define __CPM_8XX__
-#include <asm/8xx_immap.h> +#include <asm/immap_8xx.h>
/* CPM Command register. */ diff --git a/include/mpc8xx.h b/include/mpc8xx.h index fc081ab7568..daa874ccf58 100644 --- a/include/mpc8xx.h +++ b/include/mpc8xx.h @@ -81,7 +81,7 @@ #define TBSCR_TBIRQ2 0x0400 /* Time Base Interrupt Request 2 */ #define TBSCR_TBIRQ1 0x0200 /* Time Base Interrupt Request 1 */ #define TBSCR_TBIRQ0 0x0100 /* Time Base Interrupt Request 0 */ -#if 0 /* already in asm/8xx_immap.h */ +#if 0 /* already in asm/immap_8xx.h */ #define TBSCR_REFA 0x0080 /* Reference Interrupt Status A */ #define TBSCR_REFB 0x0040 /* Reference Interrupt Status B */ #define TBSCR_REFAE 0x0008 /* Second Interrupt Enable A */ @@ -95,7 +95,7 @@ */ #undef PISCR_PIRQ /* TBD */ #define PISCR_PITF 0x0002 /* Periodic Interrupt Timer Freeze */ -#if 0 /* already in asm/8xx_immap.h */ +#if 0 /* already in asm/immap_8xx.h */ #define PISCR_PS 0x0080 /* Periodic interrupt Status */ #define PISCR_PIE 0x0004 /* Periodic Interrupt Enable */ #define PISCR_PTE 0x0001 /* Periodic Timer Enable */ diff --git a/include/ppc_asm.tmpl b/include/ppc_asm.tmpl index 18783340d96..4947c77b8d4 100644 --- a/include/ppc_asm.tmpl +++ b/include/ppc_asm.tmpl @@ -81,7 +81,7 @@ #define r30 30 #define r31 31
-#if defined(CONFIG_8xx) +#if defined(CONFIG_MPC8xx)
/* Some special registers */
@@ -93,10 +93,10 @@ #define LCTRL2 157 /* Load/Store Support (37-41) */ #define ICTRL 158
-#endif /* CONFIG_8xx */ +#endif /* CONFIG_MPC8xx */
-#if defined(CONFIG_8xx) +#if defined(CONFIG_MPC8xx)
/* Registers in the processor's internal memory map that we use. */

None of those values are used at the time being. Just keep one and call it PVR_8xx
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- arch/powerpc/include/asm/processor.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h index 57b11b83657..6fbe8c46b31 100644 --- a/arch/powerpc/include/asm/processor.h +++ b/arch/powerpc/include/asm/processor.h @@ -973,10 +973,8 @@ * differentiated by the version number in the Communication Processor * Module (CPM). */ -#define PVR_821 0x00500000 -#define PVR_823 PVR_821 -#define PVR_850 PVR_821 -#define PVR_860 PVR_821 +#define PVR_8xx 0x00500000 + #define PVR_7400 0x000C0000
/*

reginfo is redundant with some of the commands in immap.c, so move reginfo into that file and remove duplicated info.
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- arch/powerpc/cpu/mpc8xx/Makefile | 1 - arch/powerpc/cpu/mpc8xx/immap.c | 20 +++++++++++ arch/powerpc/cpu/mpc8xx/reginfo.c | 71 --------------------------------------- 3 files changed, 20 insertions(+), 72 deletions(-) delete mode 100644 arch/powerpc/cpu/mpc8xx/reginfo.c
diff --git a/arch/powerpc/cpu/mpc8xx/Makefile b/arch/powerpc/cpu/mpc8xx/Makefile index 40f38923ece..35ff18a7b3b 100644 --- a/arch/powerpc/cpu/mpc8xx/Makefile +++ b/arch/powerpc/cpu/mpc8xx/Makefile @@ -12,6 +12,5 @@ obj-y += cpu_init.o obj-$(CONFIG_OF_LIBFDT) += fdt.o obj-$(CONFIG_CMD_IMMAP) += immap.o obj-y += interrupts.o -obj-$(CONFIG_CMD_REGINFO) += reginfo.o obj-y += speed.o obj-y += cache.o diff --git a/arch/powerpc/cpu/mpc8xx/immap.c b/arch/powerpc/cpu/mpc8xx/immap.c index dfe5dc21251..7ef486053c2 100644 --- a/arch/powerpc/cpu/mpc8xx/immap.c +++ b/arch/powerpc/cpu/mpc8xx/immap.c @@ -342,6 +342,26 @@ static int do_brginfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return 0; }
+#ifdef CONFIG_CMD_REGINFO +void print_reginfo(void) +{ + immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR; + sit8xx_t __iomem *timers = &immap->im_sit; + + printf("\nSystem Configuration registers\n" + "\tIMMR\t0x%08X\n", get_immr(0)); + do_siuinfo(NULL, 0, 0, NULL); + + printf("Memory Controller Registers\n"); + do_memcinfo(NULL, 0, 0, NULL); + + printf("\nSystem Integration Timers\n"); + printf("\tTBSCR\t0x%04X\tRTCSC\t0x%04X\n", + in_be16(&timers->sit_tbscr), in_be16(&timers->sit_rtcsc)); + printf("\tPISCR\t0x%04X\n", in_be16(&timers->sit_piscr)); +} +#endif + /***************************************************/
U_BOOT_CMD( diff --git a/arch/powerpc/cpu/mpc8xx/reginfo.c b/arch/powerpc/cpu/mpc8xx/reginfo.c deleted file mode 100644 index 277d2753b25..00000000000 --- a/arch/powerpc/cpu/mpc8xx/reginfo.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * (C) Copyright 2000 - * Subodh Nijsure, SkyStream Networks, snijsure@skystream.com - * - * SPDX-License-Identifier: GPL-2.0+ - */ - -#include <common.h> -#include <mpc8xx.h> -#include <asm/io.h> -#include <asm/ppc.h> - -void print_reginfo(void) -{ - immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR; - memctl8xx_t __iomem *memctl = &immap->im_memctl; - sysconf8xx_t __iomem *sysconf = &immap->im_siu_conf; - sit8xx_t __iomem *timers = &immap->im_sit; - - /* Hopefully more PowerPC knowledgable people will add code to display - * other useful registers - */ - - printf("\nSystem Configuration registers\n" - "\tIMMR\t0x%08X\n", get_immr(0)); - - printf("\tSIUMCR\t0x%08X", in_be32(&sysconf->sc_siumcr)); - printf("\tSYPCR\t0x%08X\n", in_be32(&sysconf->sc_sypcr)); - - printf("\tSWT\t0x%08X", in_be32(&sysconf->sc_swt)); - printf("\tSWSR\t0x%04X\n", in_be16(&sysconf->sc_swsr)); - - printf("\tSIPEND\t0x%08X\tSIMASK\t0x%08X\n", - in_be32(&sysconf->sc_sipend), in_be32(&sysconf->sc_simask)); - printf("\tSIEL\t0x%08X\tSIVEC\t0x%08X\n", - in_be32(&sysconf->sc_siel), in_be32(&sysconf->sc_sivec)); - printf("\tTESR\t0x%08X\tSDCR\t0x%08X\n", - in_be32(&sysconf->sc_tesr), in_be32(&sysconf->sc_sdcr)); - - printf("Memory Controller Registers\n"); - printf("\tBR0\t0x%08X\tOR0\t0x%08X\n", in_be32(&memctl->memc_br0), - in_be32(&memctl->memc_or0)); - printf("\tBR1\t0x%08X\tOR1\t0x%08X\n", in_be32(&memctl->memc_br1), - in_be32(&memctl->memc_or1)); - printf("\tBR2\t0x%08X\tOR2\t0x%08X\n", in_be32(&memctl->memc_br2), - in_be32(&memctl->memc_or2)); - printf("\tBR3\t0x%08X\tOR3\t0x%08X\n", in_be32(&memctl->memc_br3), - in_be32(&memctl->memc_or3)); - printf("\tBR4\t0x%08X\tOR4\t0x%08X\n", in_be32(&memctl->memc_br4), - in_be32(&memctl->memc_or4)); - printf("\tBR5\t0x%08X\tOR5\t0x%08X\n", in_be32(&memctl->memc_br5), - in_be32(&memctl->memc_or5)); - printf("\tBR6\t0x%08X\tOR6\t0x%08X\n", in_be32(&memctl->memc_br6), - in_be32(&memctl->memc_or6)); - printf("\tBR7\t0x%08X\tOR7\t0x%08X\n", in_be32(&memctl->memc_br7), - in_be32(&memctl->memc_or7)); - printf("\n\tmamr\t0x%08X\tmbmr\t0x%08X\n", in_be32(&memctl->memc_mamr), - in_be32(&memctl->memc_mbmr)); - printf("\tmstat\t0x%04X\tmptpr\t0x%04X\n", in_be16(&memctl->memc_mstat), - in_be16(&memctl->memc_mptpr)); - printf("\tmdr\t0x%08X\n", in_be32(&memctl->memc_mdr)); - - printf("\nSystem Integration Timers\n"); - printf("\tTBSCR\t0x%04X\tRTCSC\t0x%04X\n", - in_be16(&timers->sit_tbscr), in_be16(&timers->sit_rtcsc)); - printf("\tPISCR\t0x%04X\n", in_be16(&timers->sit_piscr)); - - /* - * May be some CPM info here? - */ -}

In most places, immap local pointer is defined as immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR; In a few places, it is defined as immap_t __iomem *immap = (immap_t __iomem *)(immr & 0xFFFF0000);
This patch replaces the few of the latest form by the other one.
The two are fully equivalent since SPRN_IMMR is set with CONFIG_SYS_IMMR very early in start.S
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- arch/powerpc/cpu/mpc8xx/cpu.c | 5 ++--- arch/powerpc/cpu/mpc8xx/speed.c | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/cpu/mpc8xx/cpu.c b/arch/powerpc/cpu/mpc8xx/cpu.c index 1883440db34..20d042d3a19 100644 --- a/arch/powerpc/cpu/mpc8xx/cpu.c +++ b/arch/powerpc/cpu/mpc8xx/cpu.c @@ -36,7 +36,7 @@ DECLARE_GLOBAL_DATA_PTR;
static int check_CPU(long clock, uint pvr, uint immr) { - immap_t __iomem *immap = (immap_t __iomem *)(immr & 0xFFFF0000); + immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR; uint k; char buf[32];
@@ -237,8 +237,7 @@ int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) */ unsigned long get_tbclk(void) { - uint immr = get_immr(0); /* Return full IMMR contents */ - immap_t __iomem *immap = (immap_t __iomem *)(immr & 0xFFFF0000); + immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR; ulong oscclk, factor, pll;
if (in_be32(&immap->im_clkrst.car_sccr) & SCCR_TBS) diff --git a/arch/powerpc/cpu/mpc8xx/speed.c b/arch/powerpc/cpu/mpc8xx/speed.c index fa8f87cbc5e..f8eb4a13eaf 100644 --- a/arch/powerpc/cpu/mpc8xx/speed.c +++ b/arch/powerpc/cpu/mpc8xx/speed.c @@ -17,8 +17,7 @@ DECLARE_GLOBAL_DATA_PTR; */ int get_clocks(void) { - uint immr = get_immr(0); /* Return full IMMR contents */ - immap_t __iomem *immap = (immap_t __iomem *)(immr & 0xFFFF0000); + immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR; uint sccr = in_be32(&immap->im_clkrst.car_sccr); uint divider = 1 << (((sccr & SCCR_DFBRG11) >> 11) * 2);

get_immr() is always called with 0 as an argument, so it is useless.
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- arch/powerpc/cpu/mpc8xx/cpu.c | 2 +- arch/powerpc/cpu/mpc8xx/immap.c | 2 +- arch/powerpc/include/asm/ppc.h | 6 ++---- 3 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/cpu/mpc8xx/cpu.c b/arch/powerpc/cpu/mpc8xx/cpu.c index 20d042d3a19..c5669e6a8e0 100644 --- a/arch/powerpc/cpu/mpc8xx/cpu.c +++ b/arch/powerpc/cpu/mpc8xx/cpu.c @@ -90,7 +90,7 @@ static int check_CPU(long clock, uint pvr, uint immr) int checkcpu(void) { ulong clock = gd->cpu_clk; - uint immr = get_immr(0); /* Return full IMMR contents */ + uint immr = get_immr(); /* Return full IMMR contents */ uint pvr = get_pvr();
puts("CPU: "); diff --git a/arch/powerpc/cpu/mpc8xx/immap.c b/arch/powerpc/cpu/mpc8xx/immap.c index 7ef486053c2..0cbfe900771 100644 --- a/arch/powerpc/cpu/mpc8xx/immap.c +++ b/arch/powerpc/cpu/mpc8xx/immap.c @@ -349,7 +349,7 @@ void print_reginfo(void) sit8xx_t __iomem *timers = &immap->im_sit;
printf("\nSystem Configuration registers\n" - "\tIMMR\t0x%08X\n", get_immr(0)); + "\tIMMR\t0x%08X\n", get_immr()); do_siuinfo(NULL, 0, 0, NULL);
printf("Memory Controller Registers\n"); diff --git a/arch/powerpc/include/asm/ppc.h b/arch/powerpc/include/asm/ppc.h index c8d87a91b40..8e76c38ea39 100644 --- a/arch/powerpc/include/asm/ppc.h +++ b/arch/powerpc/include/asm/ppc.h @@ -40,11 +40,9 @@
#include <asm/processor.h>
-static inline uint get_immr(uint mask) +static inline uint get_immr(void) { - uint immr = mfspr(SPRN_IMMR); - - return mask ? (immr & mask) : immr; + return mfspr(SPRN_IMMR); }
static inline uint get_pvr(void)

Avoid hardcoding the PVR values in C since they are defined in processor.h
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- arch/powerpc/cpu/mpc8xx/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/cpu/mpc8xx/cpu.c b/arch/powerpc/cpu/mpc8xx/cpu.c index c5669e6a8e0..07139544156 100644 --- a/arch/powerpc/cpu/mpc8xx/cpu.c +++ b/arch/powerpc/cpu/mpc8xx/cpu.c @@ -42,7 +42,7 @@ static int check_CPU(long clock, uint pvr, uint immr)
/* the highest 16 bits should be 0x0050 for a 860 */
- if ((pvr >> 16) != 0x0050) + if (PVR_VER(pvr) != PVR_VER(PVR_8xx)) return -1;
k = (immr << 16) |

Commit 7653942b10e9e ("common/env_embedded.c: drop support for CONFIG_SYS_USE_PPCENV") dropped the .ppcenv section which was used in linking scripts to allow fine placement of embedded environment sections.
This implies that GCC randomly places objects from env/embedded.o and environment is not guaranteed to be located at the correct address:
04003df8 g F .text 00000038 mii_init 04004000 g O .text 00000004 env_size 04004004 g O .text 00002000 environment 04006004 g F .text 00000040 .hidden __lshrdi3
This patch restores this capability by allocating each object marked with __UBOOT_ENV_SECTION__ into a different section. Hence 'environment' will be alone in .text.environment, allowing a fine placement in u-boot.lds with:
. = DEFINED(env_offset) ? env_offset : .; env/embedded.o (.text.environment)
Fixes 7653942b10e9e ("common/env_embedded.c: drop support for CONFIG_SYS_USE_PPCENV") Cc: Thomas Petazzoni thomas.petazzoni@free-electrons.com
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- env/embedded.c | 8 ++++---- include/env_default.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/env/embedded.c b/env/embedded.c index 43694db70fe..9b0a6a3c3da 100644 --- a/env/embedded.c +++ b/env/embedded.c @@ -35,11 +35,11 @@ * a seperate section. */ #if defined(USE_HOSTCC) /* Native for 'tools/envcrc' */ -# define __UBOOT_ENV_SECTION__ /*XXX DO_NOT_DEL_THIS_COMMENT*/ +# define __UBOOT_ENV_SECTION__(name) /*XXX DO_NOT_DEL_THIS_COMMENT*/
#else /* Environment is embedded in U-Boot's .text section */ /* XXX - This only works with GNU C */ -# define __UBOOT_ENV_SECTION__ __attribute__ ((section(".text"))) +# define __UBOOT_ENV_SECTION__(name) __attribute__ ((section(".text."#name))) #endif
/* @@ -70,7 +70,7 @@ #include <env_default.h>
#ifdef CONFIG_ENV_ADDR_REDUND -env_t redundand_environment __UBOOT_ENV_SECTION__ = { +env_t redundand_environment __UBOOT_ENV_SECTION__(redundand_environment) = { 0, /* CRC Sum: invalid */ 0, /* Flags: invalid */ { @@ -87,7 +87,7 @@ env_t redundand_environment __UBOOT_ENV_SECTION__ = { * .data/.sdata section. * */ -unsigned long env_size __UBOOT_ENV_SECTION__ = sizeof(env_t); +unsigned long env_size __UBOOT_ENV_SECTION__(env_size) = sizeof(env_t);
/* * Add in absolutes. diff --git a/include/env_default.h b/include/env_default.h index b574345af25..dd741315ba4 100644 --- a/include/env_default.h +++ b/include/env_default.h @@ -11,7 +11,7 @@ #include <env_callback.h>
#ifdef DEFAULT_ENV_INSTANCE_EMBEDDED -env_t environment __UBOOT_ENV_SECTION__ = { +env_t environment __UBOOT_ENV_SECTION__(environment) = { ENV_CRC, /* CRC Sum */ #ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT 1, /* Flags: valid */

The MCR3000 board is equipped with an AM29LV160DB boot flash which is organised as follows: - One 16kb block - Two 8kb block - One 32kb block - Thirty one 64kb blocks
At the time being, u-boot is a single piece occupying the 320 first kbytes, then the environment is stored in the following 64kb block
The environment being quite tiny, we save one 64kb block by embedding the environment in the first 8kb block.
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- board/cssi/MCR3000/u-boot.lds | 6 +++--- include/configs/MCR3000.h | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/board/cssi/MCR3000/u-boot.lds b/board/cssi/MCR3000/u-boot.lds index cd042ca0ce4..990cca4ebb6 100644 --- a/board/cssi/MCR3000/u-boot.lds +++ b/board/cssi/MCR3000/u-boot.lds @@ -18,14 +18,14 @@ SECTIONS .text : { arch/powerpc/cpu/mpc8xx/start.o (.text) - arch/powerpc/cpu/mpc8xx/start.o (.text*) arch/powerpc/cpu/mpc8xx/traps.o (.text*) - arch/powerpc/cpu/mpc8xx/built-in.o (.text*) arch/powerpc/lib/built-in.o (.text*) board/cssi/MCR3000/built-in.o (.text*) - disk/built-in.o (.text*) drivers/net/built-in.o (.text*)
+ . = DEFINED(env_offset) ? env_offset : .; + env/embedded.o (.text.environment) + *(.text) } _etext = .; diff --git a/include/configs/MCR3000.h b/include/configs/MCR3000.h index ada009e5da4..134db34a05c 100644 --- a/include/configs/MCR3000.h +++ b/include/configs/MCR3000.h @@ -24,7 +24,7 @@ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ "mcr3k:eth0:off;" \ "${ofl_args}; " \ - "bootm 0x04070000 - 0x04060000\0" \ + "bootm 0x04060000 - 0x04004000\0" \ "tftpboot=setenv bootargs " \ "${console_args} " \ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ @@ -45,7 +45,7 @@ "${console_args} " \ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ "mcr3k:eth0:off;" \ - "bootm 0x04070000 - 0x04060000\0" \ + "bootm 0x04060000 - 0x04004000\0" \ "dhcpboot=dhcp ${loadaddr} ${filename};" \ "tftp 0xf00000 mcr3000.dtb;" \ "setenv bootargs " \ @@ -102,8 +102,8 @@ /* Environment Configuration */
/* environment is in FLASH */ -#define CONFIG_ENV_SECT_SIZE (64 * 1024) -#define CONFIG_ENV_OFFSET CONFIG_SYS_MONITOR_LEN +#define CONFIG_ENV_SECT_SIZE 0x2000 +#define CONFIG_ENV_OFFSET 0x4000 #define CONFIG_ENV_OVERWRITE 1
/* Ethernet configuration part */

The MCR3000 board is equipped with an AM29LV160DB boot flash which is organised as follows: - One 16kb block - Two 8kb block - One 32kb block - Thirty one 64kb blocks
At the time being, u-boot is a single piece occupying the 320 first kbytes, then the environment is stored in the following 64kb block
The environment being quite tiny, we save one 64kb block by embedding the environment in the first 8kb block.
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr --- board/cssi/MCR3000/u-boot.lds | 6 +++--- include/configs/MCR3000.h | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/board/cssi/MCR3000/u-boot.lds b/board/cssi/MCR3000/u-boot.lds index cd042ca0ce4..990cca4ebb6 100644 --- a/board/cssi/MCR3000/u-boot.lds +++ b/board/cssi/MCR3000/u-boot.lds @@ -18,14 +18,14 @@ SECTIONS .text : { arch/powerpc/cpu/mpc8xx/start.o (.text) - arch/powerpc/cpu/mpc8xx/start.o (.text*) arch/powerpc/cpu/mpc8xx/traps.o (.text*) - arch/powerpc/cpu/mpc8xx/built-in.o (.text*) arch/powerpc/lib/built-in.o (.text*) board/cssi/MCR3000/built-in.o (.text*) - disk/built-in.o (.text*) drivers/net/built-in.o (.text*)
+ . = DEFINED(env_offset) ? env_offset : .; + env/embedded.o (.text.environment) + *(.text) } _etext = .; diff --git a/include/configs/MCR3000.h b/include/configs/MCR3000.h index ada009e5da4..2b49f97e091 100644 --- a/include/configs/MCR3000.h +++ b/include/configs/MCR3000.h @@ -24,7 +24,7 @@ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ "mcr3k:eth0:off;" \ "${ofl_args}; " \ - "bootm 0x04070000 - 0x04060000\0" \ + "bootm 0x04060000 - 0x04050000\0" \ "tftpboot=setenv bootargs " \ "${console_args} " \ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ @@ -45,7 +45,7 @@ "${console_args} " \ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ "mcr3k:eth0:off;" \ - "bootm 0x04070000 - 0x04060000\0" \ + "bootm 0x04060000 - 0x04050000\0" \ "dhcpboot=dhcp ${loadaddr} ${filename};" \ "tftp 0xf00000 mcr3000.dtb;" \ "setenv bootargs " \ @@ -102,8 +102,8 @@ /* Environment Configuration */
/* environment is in FLASH */ -#define CONFIG_ENV_SECT_SIZE (64 * 1024) -#define CONFIG_ENV_OFFSET CONFIG_SYS_MONITOR_LEN +#define CONFIG_ENV_SECT_SIZE 0x2000 +#define CONFIG_ENV_OFFSET 0x4000 #define CONFIG_ENV_OVERWRITE 1
/* Ethernet configuration part */

Le 06/03/2018 à 13:33, Christophe Leroy a écrit :
The MCR3000 board is equipped with an AM29LV160DB boot flash which is organised as follows:
- One 16kb block
- Two 8kb block
- One 32kb block
- Thirty one 64kb blocks
At the time being, u-boot is a single piece occupying the 320 first kbytes, then the environment is stored in the following 64kb block
The environment being quite tiny, we save one 64kb block by embedding the environment in the first 8kb block.
Signed-off-by: Christophe Leroy christophe.leroy@c-s.fr
Note that it superceeds https://patchwork.ozlabs.org/patch/882041/
Sorry for the mistake :(
Christophe
board/cssi/MCR3000/u-boot.lds | 6 +++--- include/configs/MCR3000.h | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/board/cssi/MCR3000/u-boot.lds b/board/cssi/MCR3000/u-boot.lds index cd042ca0ce4..990cca4ebb6 100644 --- a/board/cssi/MCR3000/u-boot.lds +++ b/board/cssi/MCR3000/u-boot.lds @@ -18,14 +18,14 @@ SECTIONS .text : { arch/powerpc/cpu/mpc8xx/start.o (.text)
arch/powerpc/cpu/mpc8xx/traps.o (.text*)arch/powerpc/cpu/mpc8xx/start.o (.text*)
arch/powerpc/lib/built-in.o (.text*) board/cssi/MCR3000/built-in.o (.text*)arch/powerpc/cpu/mpc8xx/built-in.o (.text*)
drivers/net/built-in.o (.text*)disk/built-in.o (.text*)
. = DEFINED(env_offset) ? env_offset : .;
env/embedded.o (.text.environment)
- *(.text) } _etext = .;
diff --git a/include/configs/MCR3000.h b/include/configs/MCR3000.h index ada009e5da4..2b49f97e091 100644 --- a/include/configs/MCR3000.h +++ b/include/configs/MCR3000.h @@ -24,7 +24,7 @@ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ "mcr3k:eth0:off;" \ "${ofl_args}; " \
"bootm 0x04070000 - 0x04060000\0" \
"tftpboot=setenv bootargs " \ "${console_args} " \ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \"bootm 0x04060000 - 0x04050000\0" \
@@ -45,7 +45,7 @@ "${console_args} " \ "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:" \ "mcr3k:eth0:off;" \
"bootm 0x04070000 - 0x04060000\0" \
"dhcpboot=dhcp ${loadaddr} ${filename};" \ "tftp 0xf00000 mcr3000.dtb;" \ "setenv bootargs " \"bootm 0x04060000 - 0x04050000\0" \
@@ -102,8 +102,8 @@ /* Environment Configuration */
/* environment is in FLASH */ -#define CONFIG_ENV_SECT_SIZE (64 * 1024) -#define CONFIG_ENV_OFFSET CONFIG_SYS_MONITOR_LEN +#define CONFIG_ENV_SECT_SIZE 0x2000 +#define CONFIG_ENV_OFFSET 0x4000 #define CONFIG_ENV_OVERWRITE 1
/* Ethernet configuration part */

Hi Tom,
If not applied already, please don't take this serie yet. While migrating drivers to DM model, it find some caveats in the way mpc8xx is initialised and it will be cleaner if I fix it in this serie rather than making new patches on top of it.
Christophe
Le 06/03/2018 à 13:06, Christophe Leroy a écrit :
The purpose of this serie is to clean the mpc8xx code a bit prior to moving to OF and DM model.
Christophe Leroy (15): powerpc, 8xx: initialisation global data board, MCR3000: replace mtd->priv by mtd_to_nand() board, MCR3000: Increase Monitor size soft_i2c: cleanup - no mpc8xx support boards: MCR3000: cleanup config powerpc: mpc8xx: cleaning up watchdog powerpc: mpc8xx: make get_immr() independent of CONFIG_8xx powerpc: mpc8xx: Change CONFIG_8xx to CONFIG_MPC8xx powerpc: 8xx: get rid of the multiple PVR_ values powerpc: mpc8xx: refactorise reginfo powerpc: mpc8xx: harmonise initialisation of the immap local pointer powerpc: mpc8xx: remove get_immr() argument powerpc: mpc8xx: use PVR related defines and macros common/env_embedded: allow fine placement of environment object board: MCR3000: Use smaller flash sector for environment
Changes since v2: Cleaning more items in patch 5 Not removing get_immr() anymore in patch 7 Patches from 11 are new in this version
api/api_platform-powerpc.c | 2 +- arch/powerpc/Kconfig | 4 +- arch/powerpc/cpu/mpc8xx/Kconfig | 2 +- arch/powerpc/cpu/mpc8xx/Makefile | 1 - arch/powerpc/cpu/mpc8xx/cpu.c | 29 +++------ arch/powerpc/cpu/mpc8xx/cpu_init.c | 10 ++- arch/powerpc/cpu/mpc8xx/immap.c | 22 ++++++- arch/powerpc/cpu/mpc8xx/reginfo.c | 71 ---------------------- arch/powerpc/cpu/mpc8xx/speed.c | 3 +- arch/powerpc/include/asm/cache.h | 6 +- arch/powerpc/include/asm/global_data.h | 2 +- .../include/asm/{8xx_immap.h => immap_8xx.h} | 0 arch/powerpc/include/asm/iopin_8xx.h | 2 +- arch/powerpc/include/asm/ppc.h | 13 ++-- arch/powerpc/include/asm/processor.h | 6 +- board/cssi/MCR3000/MCR3000.c | 2 + board/cssi/MCR3000/nand.c | 2 +- board/cssi/MCR3000/u-boot.lds | 6 +- cmd/bdinfo.c | 2 +- configs/MCR3000_defconfig | 4 +- drivers/i2c/soft_i2c.c | 3 - drivers/net/Kconfig | 2 +- drivers/serial/Kconfig | 2 +- drivers/spi/Kconfig | 2 +- env/embedded.c | 8 +-- include/asm-generic/u-boot.h | 2 +- include/commproc.h | 2 +- include/configs/MCR3000.h | 36 ++--------- include/env_default.h | 2 +- include/mpc8xx.h | 4 +- include/ppc_asm.tmpl | 6 +- include/watchdog.h | 5 -- 32 files changed, 85 insertions(+), 178 deletions(-) delete mode 100644 arch/powerpc/cpu/mpc8xx/reginfo.c rename arch/powerpc/include/asm/{8xx_immap.h => immap_8xx.h} (100%)
participants (2)
-
Christophe LEROY
-
Christophe Leroy