[00/15] rk3399: Add redundant boot support
mbox series

Message ID 20190729074711.16988-1-jagan@amarulasolutions.com
Headers show
Series
  • rk3399: Add redundant boot support
Related show

Message

Jagan Teki July 29, 2019, 7:46 a.m. UTC
Boot redundancy is one of the key criteria for switch
recovery or golden partition based on the bootcount 
value, which indeed very much needed in production 
systems on the fields.

This patchset support redundant boot on Rockchip rk3399.

To make full functional redundancy below features 
would require from U-Boot level.
- bootcount, for counting number reboots
- altboot
- watchdog support, if SPL or U-Boot reset because of WDT
- add CPUINFO for more understanding about how SoC and 
  reset reason.

patch 0001 - 0005: cpu info, reset reason

patch 0006 - 0009: designware watchdog driver, dm-conversion

patch 0010: Add watchdog property available to SPL

patch 0011: Add Kconfig option for dw_wdt.c

patch 0012: Disable watchdog for TPL

patch 0013: enable watchdog on rockpro64, overlay

patch 0014: bootcount support

patch 0015: enable bootcount on rockpro64, overlay

I would like, not to merge watchdog and bootcount on Mainline
devboards since these features will mostly required on production
devices but any comments, please share.

Any inputs?
Jagan.

Jagan Teki (15):
  arm: rockchip: Add common cru.h
  rockchip: Add cpu-info
  rockchip: rk3288: Print reset reason
  rockchip: Add common reset reason
  rockchip: rk3288/rk3399: Enable DISPLAY_CPUINFO
  wdt: designware: Simplify is_enabled function
  wdt: designware: Simplify enable function
  wdt: dw: Add driver-model support
  wdt: dw: Rename to dw_wdt.c
  rockchip: dts: rk3399: Add u-boot, dm-pre-reloc for watchdog
  wdt: Kconfig: Add WDT_DW entry
  include: rk3399: Disable watchdog in TPL
  [DO NOT MERGE] rk3399: rockpro64: Enable watchdog
  rockchip: rk3399: Add bootcount support
  [DO NOT MERGE] rk3399: rockpro64: Enable bootcount

 arch/arm/dts/rk3399-u-boot.dtsi               |   6 +
 arch/arm/include/asm/arch-rockchip/cru.h      |  28 +++
 .../include/asm/arch-rockchip/cru_rk3288.h    |  14 +-
 arch/arm/mach-rockchip/Kconfig                |   2 +
 arch/arm/mach-rockchip/Makefile               |   1 +
 arch/arm/mach-rockchip/cpu-info.c             |  65 +++++++
 arch/arm/mach-rockchip/rk3288-board.c         |  39 ----
 arch/arm/mach-rockchip/rk3288/clk_rk3288.c    |   2 +-
 arch/arm/mach-rockchip/rk3399-board-spl.c     |   2 +-
 arch/arm/mach-rockchip/rk3399/Kconfig         |  10 +
 arch/arm/mach-rockchip/rk3399/clk_rk3399.c    |   2 +-
 common/board_f.c                              |   2 +-
 configs/evb-rk3288_defconfig                  |   1 -
 configs/evb-rk3399_defconfig                  |   1 -
 configs/fennec-rk3288_defconfig               |   1 -
 configs/ficus-rk3399_defconfig                |   1 -
 configs/firefly-rk3288_defconfig              |   1 -
 configs/firefly-rk3399_defconfig              |   1 -
 configs/miqi-rk3288_defconfig                 |   1 -
 configs/nanopc-t4-rk3399_defconfig            |   1 -
 configs/nanopi-m4-rk3399_defconfig            |   1 -
 configs/nanopi-neo4-rk3399_defconfig          |   1 -
 configs/orangepi-rk3399_defconfig             |   1 -
 configs/phycore-rk3288_defconfig              |   1 -
 configs/popmetal-rk3288_defconfig             |   1 -
 configs/puma-rk3399_defconfig                 |   1 -
 configs/rock-pi-4-rk3399_defconfig            |   1 -
 configs/rock960-rk3399_defconfig              |   1 -
 configs/rockpro64-rk3399_defconfig            |   4 +-
 configs/tinker-rk3288_defconfig               |   1 -
 configs/vyasa-rk3288_defconfig                |   1 -
 drivers/clk/rockchip/clk_rk3288.c             |   2 +-
 drivers/clk/rockchip/clk_rk3399.c             |   2 +-
 drivers/ram/rockchip/sdram_rk3288.c           |   2 +-
 drivers/ram/rockchip/sdram_rk3399.c           |   2 +-
 drivers/video/rockchip/rk3288_mipi.c          |   2 +-
 drivers/video/rockchip/rk3399_mipi.c          |   2 +-
 drivers/video/rockchip/rk_mipi.c              |   2 +-
 drivers/watchdog/Kconfig                      |   9 +
 drivers/watchdog/Makefile                     |   2 +-
 drivers/watchdog/designware_wdt.c             |  73 -------
 drivers/watchdog/dw_wdt.c                     | 184 ++++++++++++++++++
 include/configs/rk3399_common.h               |  10 +-
 include/configs/socfpga_common.h              |   2 +-
 include/configs/socfpga_stratix10_socdk.h     |   2 +-
 scripts/config_whitelist.txt                  |   1 -
 46 files changed, 332 insertions(+), 160 deletions(-)
 create mode 100644 arch/arm/include/asm/arch-rockchip/cru.h
 create mode 100644 arch/arm/mach-rockchip/cpu-info.c
 delete mode 100644 drivers/watchdog/designware_wdt.c
 create mode 100644 drivers/watchdog/dw_wdt.c

Comments

Kever Yang Aug. 5, 2019, 12:18 p.m. UTC | #1
Hi Jagan,

On 2019/7/29 下午3:46, Jagan Teki wrote:
> Boot redundancy is one of the key criteria for switch
> recovery or golden partition based on the bootcount
> value, which indeed very much needed in production
> systems on the fields.
>
> This patchset support redundant boot on Rockchip rk3399.


Thanks for your patches, you will need to update your patches upon

latest mainline U-Boot.


Thanks,

- Kever

>
> To make full functional redundancy below features
> would require from U-Boot level.
> - bootcount, for counting number reboots
> - altboot
> - watchdog support, if SPL or U-Boot reset because of WDT
> - add CPUINFO for more understanding about how SoC and
>    reset reason.
>
> patch 0001 - 0005: cpu info, reset reason
>
> patch 0006 - 0009: designware watchdog driver, dm-conversion
>
> patch 0010: Add watchdog property available to SPL
>
> patch 0011: Add Kconfig option for dw_wdt.c
>
> patch 0012: Disable watchdog for TPL
>
> patch 0013: enable watchdog on rockpro64, overlay
>
> patch 0014: bootcount support
>
> patch 0015: enable bootcount on rockpro64, overlay
>
> I would like, not to merge watchdog and bootcount on Mainline
> devboards since these features will mostly required on production
> devices but any comments, please share.
>
> Any inputs?
> Jagan.
>
> Jagan Teki (15):
>    arm: rockchip: Add common cru.h
>    rockchip: Add cpu-info
>    rockchip: rk3288: Print reset reason
>    rockchip: Add common reset reason
>    rockchip: rk3288/rk3399: Enable DISPLAY_CPUINFO
>    wdt: designware: Simplify is_enabled function
>    wdt: designware: Simplify enable function
>    wdt: dw: Add driver-model support
>    wdt: dw: Rename to dw_wdt.c
>    rockchip: dts: rk3399: Add u-boot, dm-pre-reloc for watchdog
>    wdt: Kconfig: Add WDT_DW entry
>    include: rk3399: Disable watchdog in TPL
>    [DO NOT MERGE] rk3399: rockpro64: Enable watchdog
>    rockchip: rk3399: Add bootcount support
>    [DO NOT MERGE] rk3399: rockpro64: Enable bootcount
>
>   arch/arm/dts/rk3399-u-boot.dtsi               |   6 +
>   arch/arm/include/asm/arch-rockchip/cru.h      |  28 +++
>   .../include/asm/arch-rockchip/cru_rk3288.h    |  14 +-
>   arch/arm/mach-rockchip/Kconfig                |   2 +
>   arch/arm/mach-rockchip/Makefile               |   1 +
>   arch/arm/mach-rockchip/cpu-info.c             |  65 +++++++
>   arch/arm/mach-rockchip/rk3288-board.c         |  39 ----
>   arch/arm/mach-rockchip/rk3288/clk_rk3288.c    |   2 +-
>   arch/arm/mach-rockchip/rk3399-board-spl.c     |   2 +-
>   arch/arm/mach-rockchip/rk3399/Kconfig         |  10 +
>   arch/arm/mach-rockchip/rk3399/clk_rk3399.c    |   2 +-
>   common/board_f.c                              |   2 +-
>   configs/evb-rk3288_defconfig                  |   1 -
>   configs/evb-rk3399_defconfig                  |   1 -
>   configs/fennec-rk3288_defconfig               |   1 -
>   configs/ficus-rk3399_defconfig                |   1 -
>   configs/firefly-rk3288_defconfig              |   1 -
>   configs/firefly-rk3399_defconfig              |   1 -
>   configs/miqi-rk3288_defconfig                 |   1 -
>   configs/nanopc-t4-rk3399_defconfig            |   1 -
>   configs/nanopi-m4-rk3399_defconfig            |   1 -
>   configs/nanopi-neo4-rk3399_defconfig          |   1 -
>   configs/orangepi-rk3399_defconfig             |   1 -
>   configs/phycore-rk3288_defconfig              |   1 -
>   configs/popmetal-rk3288_defconfig             |   1 -
>   configs/puma-rk3399_defconfig                 |   1 -
>   configs/rock-pi-4-rk3399_defconfig            |   1 -
>   configs/rock960-rk3399_defconfig              |   1 -
>   configs/rockpro64-rk3399_defconfig            |   4 +-
>   configs/tinker-rk3288_defconfig               |   1 -
>   configs/vyasa-rk3288_defconfig                |   1 -
>   drivers/clk/rockchip/clk_rk3288.c             |   2 +-
>   drivers/clk/rockchip/clk_rk3399.c             |   2 +-
>   drivers/ram/rockchip/sdram_rk3288.c           |   2 +-
>   drivers/ram/rockchip/sdram_rk3399.c           |   2 +-
>   drivers/video/rockchip/rk3288_mipi.c          |   2 +-
>   drivers/video/rockchip/rk3399_mipi.c          |   2 +-
>   drivers/video/rockchip/rk_mipi.c              |   2 +-
>   drivers/watchdog/Kconfig                      |   9 +
>   drivers/watchdog/Makefile                     |   2 +-
>   drivers/watchdog/designware_wdt.c             |  73 -------
>   drivers/watchdog/dw_wdt.c                     | 184 ++++++++++++++++++
>   include/configs/rk3399_common.h               |  10 +-
>   include/configs/socfpga_common.h              |   2 +-
>   include/configs/socfpga_stratix10_socdk.h     |   2 +-
>   scripts/config_whitelist.txt                  |   1 -
>   46 files changed, 332 insertions(+), 160 deletions(-)
>   create mode 100644 arch/arm/include/asm/arch-rockchip/cru.h
>   create mode 100644 arch/arm/mach-rockchip/cpu-info.c
>   delete mode 100644 drivers/watchdog/designware_wdt.c
>   create mode 100644 drivers/watchdog/dw_wdt.c
>