Hi Patrick

On 11/15/21 3:32 PM, Patrick Delaunay wrote:
> The support of a predefined DDR PHY tuning result is removed for
> STM32MP1 driver because it is not needed at the supported frequency
> when built-in calibration is executed.
> 
> The calibration parameters were provided in the device tree by the
> optional node "st,phy-cal", activated in ddr helper file by the
> compilation flag DDR_PHY_CAL_SKIP and filled with values generated
> by the CubeMX DDR utilities.
> 
> This patch
> - updates the binding file to remove "st,phy-cal" support
> - updates the device trees and remove the associated defines
> - simplifies the STM32MP1 DDR driver and remove the support of
>   the optional parameter "st,phy-cal"
> 
> After this patch, the built-in calibration is always executed
> and the calibration registers are moved in the phy dynamic part;
> that allows manual tests.
> 
> Signed-off-by: Patrick Delaunay <patrick.delau...@foss.st.com>
> ---
> 
>  arch/arm/dts/stm32mp15-ddr.dtsi               | 30 ---------
>  .../dts/stm32mp15-ddr3-1x4Gb-1066-binG.dtsi   | 12 ----
>  .../dts/stm32mp15-ddr3-2x4Gb-1066-binG.dtsi   | 12 ----
>  .../stm32mp15-ddr3-dhsom-2x1Gb-1066-binG.dtsi | 12 ----
>  .../stm32mp15-ddr3-dhsom-2x2Gb-1066-binG.dtsi | 12 ----
>  .../stm32mp15-ddr3-dhsom-2x4Gb-1066-binG.dtsi | 12 ----
>  .../stm32mp15-ddr3-icore-1x4Gb-1066-binG.dtsi | 12 ----
>  .../memory-controllers/st,stm32mp1-ddr.txt    | 32 ---------
>  drivers/ram/stm32mp1/stm32mp1_ddr.c           | 65 +++++++------------
>  drivers/ram/stm32mp1/stm32mp1_ddr.h           | 17 -----
>  drivers/ram/stm32mp1/stm32mp1_interactive.c   | 15 +----
>  drivers/ram/stm32mp1/stm32mp1_ram.c           | 22 +------
>  12 files changed, 27 insertions(+), 226 deletions(-)
> 
> diff --git a/arch/arm/dts/stm32mp15-ddr.dtsi b/arch/arm/dts/stm32mp15-ddr.dtsi
> index 2a139c54e9..0aac9131a6 100644
> --- a/arch/arm/dts/stm32mp15-ddr.dtsi
> +++ b/arch/arm/dts/stm32mp15-ddr.dtsi
> @@ -116,24 +116,6 @@
>                       DDR_MR3
>               >;
>  
> -#ifdef DDR_PHY_CAL_SKIP
> -             st,phy-cal = <
> -                     DDR_DX0DLLCR
> -                     DDR_DX0DQTR
> -                     DDR_DX0DQSTR
> -                     DDR_DX1DLLCR
> -                     DDR_DX1DQTR
> -                     DDR_DX1DQSTR
> -                     DDR_DX2DLLCR
> -                     DDR_DX2DQTR
> -                     DDR_DX2DQSTR
> -                     DDR_DX3DLLCR
> -                     DDR_DX3DQTR
> -                     DDR_DX3DQSTR
> -             >;
> -
> -#endif
> -
>               status = "okay";
>       };
>  };
> @@ -224,18 +206,6 @@
>  #undef DDR_ODTCR
>  #undef DDR_ZQ0CR1
>  #undef DDR_DX0GCR
> -#undef DDR_DX0DLLCR
> -#undef DDR_DX0DQTR
> -#undef DDR_DX0DQSTR
>  #undef DDR_DX1GCR
> -#undef DDR_DX1DLLCR
> -#undef DDR_DX1DQTR
> -#undef DDR_DX1DQSTR
>  #undef DDR_DX2GCR
> -#undef DDR_DX2DLLCR
> -#undef DDR_DX2DQTR
> -#undef DDR_DX2DQSTR
>  #undef DDR_DX3GCR
> -#undef DDR_DX3DLLCR
> -#undef DDR_DX3DQTR
> -#undef DDR_DX3DQSTR
> diff --git a/arch/arm/dts/stm32mp15-ddr3-1x4Gb-1066-binG.dtsi 
> b/arch/arm/dts/stm32mp15-ddr3-1x4Gb-1066-binG.dtsi
> index 978331b279..e60d0ae606 100644
> --- a/arch/arm/dts/stm32mp15-ddr3-1x4Gb-1066-binG.dtsi
> +++ b/arch/arm/dts/stm32mp15-ddr3-1x4Gb-1066-binG.dtsi
> @@ -100,20 +100,8 @@
>  #define DDR_ODTCR 0x00010000
>  #define DDR_ZQ0CR1 0x00000038
>  #define DDR_DX0GCR 0x0000CE81
> -#define DDR_DX0DLLCR 0x40000000
> -#define DDR_DX0DQTR 0xFFFFFFFF
> -#define DDR_DX0DQSTR 0x3DB02000
>  #define DDR_DX1GCR 0x0000CE81
> -#define DDR_DX1DLLCR 0x40000000
> -#define DDR_DX1DQTR 0xFFFFFFFF
> -#define DDR_DX1DQSTR 0x3DB02000
>  #define DDR_DX2GCR 0x0000CE80
> -#define DDR_DX2DLLCR 0x40000000
> -#define DDR_DX2DQTR 0xFFFFFFFF
> -#define DDR_DX2DQSTR 0x3DB02000
>  #define DDR_DX3GCR 0x0000CE80
> -#define DDR_DX3DLLCR 0x40000000
> -#define DDR_DX3DQTR 0xFFFFFFFF
> -#define DDR_DX3DQSTR 0x3DB02000
>  
>  #include "stm32mp15-ddr.dtsi"
> diff --git a/arch/arm/dts/stm32mp15-ddr3-2x4Gb-1066-binG.dtsi 
> b/arch/arm/dts/stm32mp15-ddr3-2x4Gb-1066-binG.dtsi
> index 426be21f42..1a6fa80edf 100644
> --- a/arch/arm/dts/stm32mp15-ddr3-2x4Gb-1066-binG.dtsi
> +++ b/arch/arm/dts/stm32mp15-ddr3-2x4Gb-1066-binG.dtsi
> @@ -100,20 +100,8 @@
>  #define DDR_ODTCR 0x00010000
>  #define DDR_ZQ0CR1 0x00000038
>  #define DDR_DX0GCR 0x0000CE81
> -#define DDR_DX0DLLCR 0x40000000
> -#define DDR_DX0DQTR 0xFFFFFFFF
> -#define DDR_DX0DQSTR 0x3DB02000
>  #define DDR_DX1GCR 0x0000CE81
> -#define DDR_DX1DLLCR 0x40000000
> -#define DDR_DX1DQTR 0xFFFFFFFF
> -#define DDR_DX1DQSTR 0x3DB02000
>  #define DDR_DX2GCR 0x0000CE81
> -#define DDR_DX2DLLCR 0x40000000
> -#define DDR_DX2DQTR 0xFFFFFFFF
> -#define DDR_DX2DQSTR 0x3DB02000
>  #define DDR_DX3GCR 0x0000CE81
> -#define DDR_DX3DLLCR 0x40000000
> -#define DDR_DX3DQTR 0xFFFFFFFF
> -#define DDR_DX3DQSTR 0x3DB02000
>  
>  #include "stm32mp15-ddr.dtsi"
> diff --git a/arch/arm/dts/stm32mp15-ddr3-dhsom-2x1Gb-1066-binG.dtsi 
> b/arch/arm/dts/stm32mp15-ddr3-dhsom-2x1Gb-1066-binG.dtsi
> index b3eb280f96..0a277cd675 100644
> --- a/arch/arm/dts/stm32mp15-ddr3-dhsom-2x1Gb-1066-binG.dtsi
> +++ b/arch/arm/dts/stm32mp15-ddr3-dhsom-2x1Gb-1066-binG.dtsi
> @@ -101,20 +101,8 @@
>  #define DDR_ODTCR 0x00010000
>  #define DDR_ZQ0CR1 0x00000038
>  #define DDR_DX0GCR 0x0000CE81
> -#define DDR_DX0DLLCR 0x40000000
> -#define DDR_DX0DQTR 0xFFFFFFFF
> -#define DDR_DX0DQSTR 0x3DB02000
>  #define DDR_DX1GCR 0x0000CE81
> -#define DDR_DX1DLLCR 0x40000000
> -#define DDR_DX1DQTR 0xFFFFFFFF
> -#define DDR_DX1DQSTR 0x3DB02000
>  #define DDR_DX2GCR 0x0000CE81
> -#define DDR_DX2DLLCR 0x40000000
> -#define DDR_DX2DQTR 0xFFFFFFFF
> -#define DDR_DX2DQSTR 0x3DB02000
>  #define DDR_DX3GCR 0x0000CE81
> -#define DDR_DX3DLLCR 0x40000000
> -#define DDR_DX3DQTR 0xFFFFFFFF
> -#define DDR_DX3DQSTR 0x3DB02000
>  
>  #include "stm32mp15-ddr.dtsi"
> diff --git a/arch/arm/dts/stm32mp15-ddr3-dhsom-2x2Gb-1066-binG.dtsi 
> b/arch/arm/dts/stm32mp15-ddr3-dhsom-2x2Gb-1066-binG.dtsi
> index ed3a5248f8..92774fffb9 100644
> --- a/arch/arm/dts/stm32mp15-ddr3-dhsom-2x2Gb-1066-binG.dtsi
> +++ b/arch/arm/dts/stm32mp15-ddr3-dhsom-2x2Gb-1066-binG.dtsi
> @@ -101,20 +101,8 @@
>  #define DDR_ODTCR 0x00010000
>  #define DDR_ZQ0CR1 0x00000038
>  #define DDR_DX0GCR 0x0000CE81
> -#define DDR_DX0DLLCR 0x40000000
> -#define DDR_DX0DQTR 0xFFFFFFFF
> -#define DDR_DX0DQSTR 0x3DB02000
>  #define DDR_DX1GCR 0x0000CE81
> -#define DDR_DX1DLLCR 0x40000000
> -#define DDR_DX1DQTR 0xFFFFFFFF
> -#define DDR_DX1DQSTR 0x3DB02000
>  #define DDR_DX2GCR 0x0000CE81
> -#define DDR_DX2DLLCR 0x40000000
> -#define DDR_DX2DQTR 0xFFFFFFFF
> -#define DDR_DX2DQSTR 0x3DB02000
>  #define DDR_DX3GCR 0x0000CE81
> -#define DDR_DX3DLLCR 0x40000000
> -#define DDR_DX3DQTR 0xFFFFFFFF
> -#define DDR_DX3DQSTR 0x3DB02000
>  
>  #include "stm32mp15-ddr.dtsi"
> diff --git a/arch/arm/dts/stm32mp15-ddr3-dhsom-2x4Gb-1066-binG.dtsi 
> b/arch/arm/dts/stm32mp15-ddr3-dhsom-2x4Gb-1066-binG.dtsi
> index d5813d64b0..e53ab18a69 100644
> --- a/arch/arm/dts/stm32mp15-ddr3-dhsom-2x4Gb-1066-binG.dtsi
> +++ b/arch/arm/dts/stm32mp15-ddr3-dhsom-2x4Gb-1066-binG.dtsi
> @@ -101,20 +101,8 @@
>  #define DDR_ODTCR 0x00010000
>  #define DDR_ZQ0CR1 0x00000038
>  #define DDR_DX0GCR 0x0000CE81
> -#define DDR_DX0DLLCR 0x40000000
> -#define DDR_DX0DQTR 0xFFFFFFFF
> -#define DDR_DX0DQSTR 0x3DB02000
>  #define DDR_DX1GCR 0x0000CE81
> -#define DDR_DX1DLLCR 0x40000000
> -#define DDR_DX1DQTR 0xFFFFFFFF
> -#define DDR_DX1DQSTR 0x3DB02000
>  #define DDR_DX2GCR 0x0000CE81
> -#define DDR_DX2DLLCR 0x40000000
> -#define DDR_DX2DQTR 0xFFFFFFFF
> -#define DDR_DX2DQSTR 0x3DB02000
>  #define DDR_DX3GCR 0x0000CE81
> -#define DDR_DX3DLLCR 0x40000000
> -#define DDR_DX3DQTR 0xFFFFFFFF
> -#define DDR_DX3DQSTR 0x3DB02000
>  
>  #include "stm32mp15-ddr.dtsi"
> diff --git a/arch/arm/dts/stm32mp15-ddr3-icore-1x4Gb-1066-binG.dtsi 
> b/arch/arm/dts/stm32mp15-ddr3-icore-1x4Gb-1066-binG.dtsi
> index 24c81269b0..ff582ac6af 100644
> --- a/arch/arm/dts/stm32mp15-ddr3-icore-1x4Gb-1066-binG.dtsi
> +++ b/arch/arm/dts/stm32mp15-ddr3-icore-1x4Gb-1066-binG.dtsi
> @@ -100,20 +100,8 @@
>  #define DDR_ODTCR 0x00010000
>  #define DDR_ZQ0CR1 0x00000038
>  #define DDR_DX0GCR 0x0000CE81
> -#define DDR_DX0DLLCR 0x40000000
> -#define DDR_DX0DQTR 0xFFFFFFFF
> -#define DDR_DX0DQSTR 0x3DB02000
>  #define DDR_DX1GCR 0x0000CE81
> -#define DDR_DX1DLLCR 0x40000000
> -#define DDR_DX1DQTR 0xFFFFFFFF
> -#define DDR_DX1DQSTR 0x3DB02000
>  #define DDR_DX2GCR 0x0000CE81
> -#define DDR_DX2DLLCR 0x40000000
> -#define DDR_DX2DQTR 0xFFFFFFFF
> -#define DDR_DX2DQSTR 0x3DB02000
>  #define DDR_DX3GCR 0x0000CE81
> -#define DDR_DX3DLLCR 0x40000000
> -#define DDR_DX3DQTR 0xFFFFFFFF
> -#define DDR_DX3DQSTR 0x3DB02000
>  
>  #include "stm32mp15-ddr.dtsi"
> diff --git a/doc/device-tree-bindings/memory-controllers/st,stm32mp1-ddr.txt 
> b/doc/device-tree-bindings/memory-controllers/st,stm32mp1-ddr.txt
> index ac6a7df432..926e3e83b3 100644
> --- a/doc/device-tree-bindings/memory-controllers/st,stm32mp1-ddr.txt
> +++ b/doc/device-tree-bindings/memory-controllers/st,stm32mp1-ddr.txt
> @@ -128,23 +128,6 @@ phyc attributes:
>               MR2
>               MR3
>  
> -- st,phy-cal : phy cal depending of calibration or tuning of DDR
> -     This parameter is optional; when it is absent the built-in PHY
> -     calibration is done.
> -     for STM32MP15x: 12 values are requested in this order
> -             DX0DLLCR
> -             DX0DQTR
> -             DX0DQSTR
> -             DX1DLLCR
> -             DX1DQTR
> -             DX1DQSTR
> -             DX2DLLCR
> -             DX2DQTR
> -             DX2DQSTR
> -             DX3DLLCR
> -             DX3DQTR
> -             DX3DQSTR
> -
>  Example:
>  
>  / {
> @@ -280,21 +263,6 @@ Example:
>                               0x00000000 /*MR3*/
>                       >;
>  
> -                     st,phy-cal = <
> -                             0x40000000 /*DX0DLLCR*/
> -                             0xFFFFFFFF /*DX0DQTR*/
> -                             0x3DB02000 /*DX0DQSTR*/
> -                             0x40000000 /*DX1DLLCR*/
> -                             0xFFFFFFFF /*DX1DQTR*/
> -                             0x3DB02000 /*DX1DQSTR*/
> -                             0x40000000 /*DX2DLLCR*/
> -                             0xFFFFFFFF /*DX2DQTR*/
> -                             0x3DB02000 /*DX2DQSTR*/
> -                             0x40000000 /*DX3DLLCR*/
> -                             0xFFFFFFFF /*DX3DQTR*/
> -                             0x3DB02000 /*DX3DQSTR*/
> -                     >;
> -
>                       status = "okay";
>               };
>       };
> diff --git a/drivers/ram/stm32mp1/stm32mp1_ddr.c 
> b/drivers/ram/stm32mp1/stm32mp1_ddr.c
> index 1f8422518b..9d086601a4 100644
> --- a/drivers/ram/stm32mp1/stm32mp1_ddr.c
> +++ b/drivers/ram/stm32mp1/stm32mp1_ddr.c
> @@ -68,7 +68,6 @@ struct reg_desc {
>  
>  #define DDRPHY_REG_REG_SIZE  11      /* st,phy-reg */
>  #define      DDRPHY_REG_TIMING_SIZE  10      /* st,phy-timing */
> -#define      DDRPHY_REG_CAL_SIZE     12      /* st,phy-cal */
>  
>  #define DDRCTL_REG_REG(x)    DDRCTL_REG(x, stm32mp1_ddrctrl_reg)
>  static const struct reg_desc ddr_reg[DDRCTL_REG_REG_SIZE] = {
> @@ -178,22 +177,6 @@ static const struct reg_desc 
> ddrphy_timing[DDRPHY_REG_TIMING_SIZE] = {
>       DDRPHY_REG_TIMING(mr3),
>  };
>  
> -#define DDRPHY_REG_CAL(x)    DDRPHY_REG(x, stm32mp1_ddrphy_cal)
> -static const struct reg_desc ddrphy_cal[DDRPHY_REG_CAL_SIZE] = {
> -     DDRPHY_REG_CAL(dx0dllcr),
> -     DDRPHY_REG_CAL(dx0dqtr),
> -     DDRPHY_REG_CAL(dx0dqstr),
> -     DDRPHY_REG_CAL(dx1dllcr),
> -     DDRPHY_REG_CAL(dx1dqtr),
> -     DDRPHY_REG_CAL(dx1dqstr),
> -     DDRPHY_REG_CAL(dx2dllcr),
> -     DDRPHY_REG_CAL(dx2dqtr),
> -     DDRPHY_REG_CAL(dx2dqstr),
> -     DDRPHY_REG_CAL(dx3dllcr),
> -     DDRPHY_REG_CAL(dx3dqtr),
> -     DDRPHY_REG_CAL(dx3dqstr),
> -};
> -
>  /**************************************************************
>   * DYNAMIC REGISTERS: only used for debug purpose (read/modify)
>   **************************************************************/
> @@ -218,12 +201,24 @@ static const struct reg_desc ddrphy_dyn[] = {
>       DDRPHY_REG_DYN(zq0sr1),
>       DDRPHY_REG_DYN(dx0gsr0),
>       DDRPHY_REG_DYN(dx0gsr1),
> +     DDRPHY_REG_DYN(dx0dllcr),
> +     DDRPHY_REG_DYN(dx0dqtr),
> +     DDRPHY_REG_DYN(dx0dqstr),
>       DDRPHY_REG_DYN(dx1gsr0),
>       DDRPHY_REG_DYN(dx1gsr1),
> +     DDRPHY_REG_DYN(dx1dllcr),
> +     DDRPHY_REG_DYN(dx1dqtr),
> +     DDRPHY_REG_DYN(dx1dqstr),
>       DDRPHY_REG_DYN(dx2gsr0),
>       DDRPHY_REG_DYN(dx2gsr1),
> +     DDRPHY_REG_DYN(dx2dllcr),
> +     DDRPHY_REG_DYN(dx2dqtr),
> +     DDRPHY_REG_DYN(dx2dqstr),
>       DDRPHY_REG_DYN(dx3gsr0),
>       DDRPHY_REG_DYN(dx3gsr1),
> +     DDRPHY_REG_DYN(dx3dllcr),
> +     DDRPHY_REG_DYN(dx3dqtr),
> +     DDRPHY_REG_DYN(dx3dqstr),
>  };
>  
>  #define DDRPHY_REG_DYN_SIZE  ARRAY_SIZE(ddrphy_dyn)
> @@ -240,7 +235,6 @@ enum reg_type {
>       REG_MAP,
>       REGPHY_REG,
>       REGPHY_TIMING,
> -     REGPHY_CAL,
>  #ifdef CONFIG_STM32MP1_DDR_INTERACTIVE
>  /* dynamic registers => managed in driver or not changed,
>   * can be dumped in interactive mode
> @@ -264,8 +258,6 @@ struct ddr_reg_info {
>       enum base_type base;
>  };
>  
> -#define DDRPHY_REG_CAL(x)    DDRPHY_REG(x, stm32mp1_ddrphy_cal)
> -
>  const struct ddr_reg_info ddr_registers[REG_TYPE_NB] = {
>  [REG_REG] = {
>       "static", ddr_reg, DDRCTL_REG_REG_SIZE, DDR_BASE},
> @@ -279,8 +271,6 @@ const struct ddr_reg_info ddr_registers[REG_TYPE_NB] = {
>       "static", ddrphy_reg, DDRPHY_REG_REG_SIZE, DDRPHY_BASE},
>  [REGPHY_TIMING] = {
>       "timing", ddrphy_timing, DDRPHY_REG_TIMING_SIZE, DDRPHY_BASE},
> -[REGPHY_CAL] = {
> -     "cal", ddrphy_cal, DDRPHY_REG_CAL_SIZE, DDRPHY_BASE},
>  #ifdef CONFIG_STM32MP1_DDR_INTERACTIVE
>  [REG_DYN] = {
>       "dyn", ddr_dyn, DDR_REG_DYN_SIZE, DDR_BASE},
> @@ -456,9 +446,6 @@ static u32 get_par_addr(const struct stm32mp1_ddr_config 
> *config,
>       case REGPHY_TIMING:
>               par_addr = (u32)&config->p_timing;
>               break;
> -     case REGPHY_CAL:
> -             par_addr = (u32)&config->p_cal;
> -             break;
>       case REG_DYN:
>       case REGPHY_DYN:
>       case REG_TYPE_NB:
> @@ -774,8 +761,6 @@ start:
>   */
>       set_reg(priv, REGPHY_REG, &config->p_reg);
>       set_reg(priv, REGPHY_TIMING, &config->p_timing);
> -     if (config->p_cal_present)
> -             set_reg(priv, REGPHY_CAL, &config->p_cal);
>  
>       if (INTERACTIVE(STEP_PHY_INIT))
>               goto start;
> @@ -810,36 +795,32 @@ start:
>  
>       wait_operating_mode(priv, DDRCTRL_STAT_OPERATING_MODE_NORMAL);
>  
> -     if (config->p_cal_present) {
> -             log_debug("DDR DQS training skipped.\n");
> -     } else {
> -             log_debug("DDR DQS training : ");
> +     log_debug("DDR DQS training : ");
>  /*  8. Disable Auto refresh and power down by setting
>   *    - RFSHCTL3.dis_au_refresh = 1
>   *    - PWRCTL.powerdown_en = 0
>   *    - DFIMISC.dfiinit_complete_en = 0
>   */
> -             stm32mp1_refresh_disable(priv->ctl);
> +     stm32mp1_refresh_disable(priv->ctl);
>  
>  /*  9. Program PUBL PGCR to enable refresh during training and rank to train
>   *     not done => keep the programed value in PGCR
>   */
>  
>  /* 10. configure PUBL PIR register to specify which training step to run */
> -             /* RVTRN is excuted only on LPDDR2/LPDDR3 */
> -             if (config->c_reg.mstr & DDRCTRL_MSTR_DDR3)
> -                     pir = DDRPHYC_PIR_QSTRN;
> -             else
> -                     pir = DDRPHYC_PIR_QSTRN | DDRPHYC_PIR_RVTRN;
> -             stm32mp1_ddrphy_init(priv->phy, pir);
> +     /* RVTRN is excuted only on LPDDR2/LPDDR3 */
> +     if (config->c_reg.mstr & DDRCTRL_MSTR_DDR3)
> +             pir = DDRPHYC_PIR_QSTRN;
> +     else
> +             pir = DDRPHYC_PIR_QSTRN | DDRPHYC_PIR_RVTRN;
> +     stm32mp1_ddrphy_init(priv->phy, pir);
>  
>  /* 11. monitor PUB PGSR.IDONE to poll cpmpletion of training sequence */
> -             ddrphy_idone_wait(priv->phy);
> +     ddrphy_idone_wait(priv->phy);
>  
>  /* 12. set back registers in step 8 to the orginal values if desidered */
> -             stm32mp1_refresh_restore(priv->ctl, config->c_reg.rfshctl3,
> -                                      config->c_reg.pwrctl);
> -     } /* if (config->p_cal_present) */
> +     stm32mp1_refresh_restore(priv->ctl, config->c_reg.rfshctl3,
> +                              config->c_reg.pwrctl);
>  
>       /* enable uMCTL2 AXI port 0 and 1 */
>       setbits_le32(&priv->ctl->pctrl_0, DDRCTRL_PCTRL_N_PORT_EN);
> diff --git a/drivers/ram/stm32mp1/stm32mp1_ddr.h 
> b/drivers/ram/stm32mp1/stm32mp1_ddr.h
> index 4998f04439..3bfcb85a8f 100644
> --- a/drivers/ram/stm32mp1/stm32mp1_ddr.h
> +++ b/drivers/ram/stm32mp1/stm32mp1_ddr.h
> @@ -140,21 +140,6 @@ struct stm32mp1_ddrphy_timing {
>       u32 mr3;
>  };
>  
> -struct stm32mp1_ddrphy_cal {
> -     u32 dx0dllcr;
> -     u32 dx0dqtr;
> -     u32 dx0dqstr;
> -     u32 dx1dllcr;
> -     u32 dx1dqtr;
> -     u32 dx1dqstr;
> -     u32 dx2dllcr;
> -     u32 dx2dqtr;
> -     u32 dx2dqstr;
> -     u32 dx3dllcr;
> -     u32 dx3dqtr;
> -     u32 dx3dqstr;
> -};
> -
>  struct stm32mp1_ddr_info {
>       const char *name;
>       u32 speed; /* in kHZ */
> @@ -169,8 +154,6 @@ struct stm32mp1_ddr_config {
>       struct stm32mp1_ddrctrl_perf c_perf;
>       struct stm32mp1_ddrphy_reg p_reg;
>       struct stm32mp1_ddrphy_timing p_timing;
> -     struct stm32mp1_ddrphy_cal p_cal;
> -     bool p_cal_present;
>  };
>  
>  int stm32mp1_ddr_clk_enable(struct ddr_info *priv, u32 mem_speed);
> diff --git a/drivers/ram/stm32mp1/stm32mp1_interactive.c 
> b/drivers/ram/stm32mp1/stm32mp1_interactive.c
> index 8c2310ac90..a667d49cff 100644
> --- a/drivers/ram/stm32mp1/stm32mp1_interactive.c
> +++ b/drivers/ram/stm32mp1/stm32mp1_interactive.c
> @@ -111,7 +111,7 @@ static void stm32mp1_do_usage(void)
>               "help                       displays help\n"
>               "info                       displays DDR information\n"
>               "info  <param> <val>        changes DDR information\n"
> -             "      with <param> = step, name, size, speed or cal\n"
> +             "      with <param> = step, name, size or speed\n"
>               "freq                       displays the DDR PHY frequency in 
> kHz\n"
>               "freq  <freq>               changes the DDR PHY frequency\n"
>               "param [type|reg]           prints input parameters\n"
> @@ -132,7 +132,7 @@ static void stm32mp1_do_usage(void)
>               "\nwith for [type|reg]:\n"
>               "  all registers if absent\n"
>               "  <type> = ctl, phy\n"
> -             "           or one category (static, timing, map, perf, cal, 
> dyn)\n"
> +             "           or one category (static, timing, map, perf, dyn)\n"
>               "  <reg> = name of the register\n"
>       };
>  
> @@ -165,7 +165,6 @@ static void stm32mp1_do_info(struct ddr_info *priv,
>               printf("name = %s\n", config->info.name);
>               printf("size = 0x%x\n", config->info.size);
>               printf("speed = %d kHz\n", config->info.speed);
> -             printf("cal = %d\n", config->p_cal_present);
>               return;
>       }
>  
> @@ -214,16 +213,6 @@ static void stm32mp1_do_info(struct ddr_info *priv,
>               }
>               return;
>       }
> -     if (!strcmp(argv[1], "cal")) {
> -             if (strict_strtoul(argv[2], 10, &value) < 0 ||
> -                 (value != 0 && value != 1)) {
> -                     printf("invalid value %s\n", argv[2]);
> -             } else {
> -                     config->p_cal_present = value;
> -                     printf("cal = %d\n", config->p_cal_present);
> -             }
> -             return;
> -     }
>       printf("argument %s invalid\n", argv[1]);
>  }
>  
> diff --git a/drivers/ram/stm32mp1/stm32mp1_ram.c 
> b/drivers/ram/stm32mp1/stm32mp1_ram.c
> index 98fa1f4f11..3b65269b98 100644
> --- a/drivers/ram/stm32mp1/stm32mp1_ram.c
> +++ b/drivers/ram/stm32mp1/stm32mp1_ram.c
> @@ -95,26 +95,22 @@ static __maybe_unused int stm32mp1_ddr_setup(struct 
> udevice *dev)
>       {       .name = x,                                              \
>               .offset = offsetof(struct stm32mp1_ddr_config, y),      \
>               .size = sizeof(config.y) / sizeof(u32),                 \
> -             .present = z,                                           \
>       }
>  
>  #define CTL_PARAM(x) PARAM("st,ctl-"#x, c_##x, NULL)
>  #define PHY_PARAM(x) PARAM("st,phy-"#x, p_##x, NULL)
> -#define PHY_PARAM_OPT(x) PARAM("st,phy-"#x, p_##x, &config.p_##x##_present)
>  
>       const struct {
>               const char *name; /* name in DT */
>               const u32 offset; /* offset in config struct */
>               const u32 size;   /* size of parameters */
> -             bool * const present;  /* presence indication for opt */
>       } param[] = {
>               CTL_PARAM(reg),
>               CTL_PARAM(timing),
>               CTL_PARAM(map),
>               CTL_PARAM(perf),
>               PHY_PARAM(reg),
> -             PHY_PARAM(timing),
> -             PHY_PARAM_OPT(cal)
> +             PHY_PARAM(timing)
>       };
>  
>       config.info.speed = ofnode_read_u32_default(node, "st,mem-speed", 0);
> @@ -133,25 +129,11 @@ static __maybe_unused int stm32mp1_ddr_setup(struct 
> udevice *dev)
>                                        param[idx].size);
>               dev_dbg(dev, "%s: %s[0x%x] = %d\n", __func__,
>                       param[idx].name, param[idx].size, ret);
> -             if (ret &&
> -                 (ret != -FDT_ERR_NOTFOUND || !param[idx].present)) {
> +             if (ret) {
>                       dev_err(dev, "Cannot read %s, error=%d\n",
>                               param[idx].name, ret);
>                       return -EINVAL;
>               }
> -             if (param[idx].present) {
> -                     /* save presence of optional parameters */
> -                     *param[idx].present = true;
> -                     if (ret == -FDT_ERR_NOTFOUND) {
> -                             *param[idx].present = false;
> -#ifdef CONFIG_STM32MP1_DDR_INTERACTIVE
> -                             /* reset values if used later */
> -                             memset((void *)((u32)&config +
> -                                             param[idx].offset),
> -                                     0, param[idx].size * sizeof(u32));
> -#endif
> -                     }
> -             }
>       }
>  
>       ret = clk_get_by_name(dev, "axidcg", &axidcg);
> 
Reviewed-by: Patrice Chotard <patrice.chot...@foss.st.com>
Thanks
Patrice

Reply via email to