[PATCH v6 02/17] riscv: sifive: fu540: Use OTP DM driver for serial environment variable

Bin Meng bmeng.cn at gmail.com
Mon Apr 20 10:18:40 CEST 2020


Hi Jagan,

On Mon, Apr 20, 2020 at 4:15 PM Jagan Teki <jagan at amarulasolutions.com> wrote:
>
> Hi Bin,
>
> On Mon, Apr 20, 2020 at 1:24 PM Bin Meng <bmeng.cn at gmail.com> wrote:
> >
> > Hi Jagan,
> >
> > On Tue, Apr 7, 2020 at 5:21 PM Jagan Teki <jagan at amarulasolutions.com> wrote:
> > >
> > > On Tue, Apr 7, 2020 at 1:40 PM Pragnesh Patel <pragnesh.patel at sifive.com> wrote:
> > > >
> > > > Hi Jagan,
> > > >
> > > > >-----Original Message-----
> > > > >From: Jagan Teki <jagan at amarulasolutions.com>
> > > > >Sent: 07 April 2020 13:32
> > > > >To: Pragnesh Patel <pragnesh.patel at sifive.com>
> > > > >Cc: U-Boot-Denx <u-boot at lists.denx.de>; Atish Patra
> > > > ><atish.patra at wdc.com>; palmerdabbelt at google.com; Bin Meng
> > > > ><bmeng.cn at gmail.com>; Paul Walmsley <paul.walmsley at sifive.com>; Troy
> > > > >Benjegerdes <troy.benjegerdes at sifive.com>; Anup Patel
> > > > ><anup.patel at wdc.com>; Sagar Kadam <sagar.kadam at sifive.com>; Rick Chen
> > > > ><rick at andestech.com>; Palmer Dabbelt <palmer at dabbelt.com>
> > > > >Subject: Re: [PATCH v6 02/17] riscv: sifive: fu540: Use OTP DM driver for serial
> > > > >environment variable
> > > > >
> > > > >[External Email] Do not click links or attachments unless you recognize the
> > > > >sender and know the content is safe
> > > > >
> > > > >On Thu, Apr 2, 2020 at 3:47 PM Pragnesh Patel <pragnesh.patel at sifive.com>
> > > > >wrote:
> > > > >>
> > > > >> Hi Jagan,
> > > > >>
> > > > >> >-----Original Message-----
> > > > >> >From: Jagan Teki <jagan at amarulasolutions.com>
> > > > >> >Sent: 02 April 2020 14:59
> > > > >> >To: Pragnesh Patel <pragnesh.patel at sifive.com>
> > > > >> >Cc: U-Boot-Denx <u-boot at lists.denx.de>; Atish Patra
> > > > >> ><atish.patra at wdc.com>; palmerdabbelt at google.com; Bin Meng
> > > > >> ><bmeng.cn at gmail.com>; Paul Walmsley <paul.walmsley at sifive.com>;
> > > > >Troy
> > > > >> >Benjegerdes <troy.benjegerdes at sifive.com>; Anup Patel
> > > > >> ><anup.patel at wdc.com>; Sagar Kadam <sagar.kadam at sifive.com>; Rick
> > > > >Chen
> > > > >> ><rick at andestech.com>; Palmer Dabbelt <palmer at dabbelt.com>
> > > > >> >Subject: Re: [PATCH v6 02/17] riscv: sifive: fu540: Use OTP DM driver
> > > > >> >for serial environment variable
> > > > >> >
> > > > >> >[External Email] Do not click links or attachments unless you
> > > > >> >recognize the sender and know the content is safe
> > > > >> >
> > > > >> >On Thu, Apr 2, 2020 at 2:54 PM Pragnesh Patel
> > > > >> ><pragnesh.patel at sifive.com>
> > > > >> >wrote:
> > > > >> >>
> > > > >> >>
> > > > >> >> Hi Jagan,
> > > > >> >>
> > > > >> >> >-----Original Message-----
> > > > >> >> >From: Jagan Teki <jagan at amarulasolutions.com>
> > > > >> >> >Sent: 02 April 2020 14:49
> > > > >> >> >To: Pragnesh Patel <pragnesh.patel at sifive.com>
> > > > >> >> >Cc: U-Boot-Denx <u-boot at lists.denx.de>; Atish Patra
> > > > >> >> ><atish.patra at wdc.com>; palmerdabbelt at google.com; Bin Meng
> > > > >> >> ><bmeng.cn at gmail.com>; Paul Walmsley <paul.walmsley at sifive.com>;
> > > > >> >Troy
> > > > >> >> >Benjegerdes <troy.benjegerdes at sifive.com>; Anup Patel
> > > > >> >> ><anup.patel at wdc.com>; Sagar Kadam <sagar.kadam at sifive.com>; Rick
> > > > >> >Chen
> > > > >> >> ><rick at andestech.com>; Palmer Dabbelt <palmer at dabbelt.com>
> > > > >> >> >Subject: Re: [PATCH v6 02/17] riscv: sifive: fu540: Use OTP DM
> > > > >> >> >driver for serial environment variable
> > > > >> >> >
> > > > >> >> >[External Email] Do not click links or attachments unless you
> > > > >> >> >recognize the sender and know the content is safe
> > > > >> >> >
> > > > >> >> >On Sun, Mar 29, 2020 at 10:36 PM Pragnesh Patel
> > > > >> >> ><pragnesh.patel at sifive.com> wrote:
> > > > >> >> >>
> > > > >> >> >> Use the OTP DM driver to set the serial environment variable.
> > > > >> >> >>
> > > > >> >> >> Signed-off-by: Pragnesh Patel <pragnesh.patel at sifive.com>
> > > > >> >> >> ---
> > > > >> >> >>  arch/riscv/dts/fu540-c000-u-boot.dtsi         |  14 +++
> > > > >> >> >>  .../dts/hifive-unleashed-a00-u-boot.dtsi      |   6 +
> > > > >> >> >>  board/sifive/fu540/Kconfig                    |   2 +
> > > > >> >> >>  board/sifive/fu540/fu540.c                    | 111 ++++++------------
> > > > >> >> >>  4 files changed, 61 insertions(+), 72 deletions(-)  create mode
> > > > >> >> >> 100644 arch/riscv/dts/fu540-c000-u-boot.dtsi
> > > > >> >> >>  create mode 100644
> > > > >> >> >> arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi
> > > > >> >> >>
> > > > >> >> >> diff --git a/arch/riscv/dts/fu540-c000-u-boot.dtsi
> > > > >> >> >> b/arch/riscv/dts/fu540-c000-u-boot.dtsi
> > > > >> >> >> new file mode 100644
> > > > >> >> >> index 0000000000..db55773bd2
> > > > >> >> >> --- /dev/null
> > > > >> >> >> +++ b/arch/riscv/dts/fu540-c000-u-boot.dtsi
> > > > >> >> >> @@ -0,0 +1,14 @@
> > > > >> >> >> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
> > > > >> >> >> +/*
> > > > >> >> >> + * (C) Copyright 2019 SiFive, Inc  */
> > > > >> >> >> +
> > > > >> >> >> +/ {
> > > > >> >> >> +       soc {
> > > > >> >> >> +               otp: otp at 10070000 {
> > > > >> >> >> +                       compatible = "sifive,fu540-c000-otp";
> > > > >> >> >> +                       reg = <0x0 0x10070000 0x0 0x0FFF>;
> > > > >> >> >> +                       fuse-count = <0x1000>;
> > > > >> >> >> +               };
> > > > >> >> >> +       };
> > > > >> >> >> +};
> > > > >> >> >> diff --git a/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi
> > > > >> >> >> b/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi
> > > > >> >> >> new file mode 100644
> > > > >> >> >> index 0000000000..f1735c1385
> > > > >> >> >> --- /dev/null
> > > > >> >> >> +++ b/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi
> > > > >> >> >> @@ -0,0 +1,6 @@
> > > > >> >> >> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
> > > > >> >> >> +/*
> > > > >> >> >> + * Copyright (C) 2019 SiFive, Inc  */
> > > > >> >> >> +
> > > > >> >> >> +#include "fu540-c000-u-boot.dtsi"
> > > > >> >> >> diff --git a/board/sifive/fu540/Kconfig
> > > > >> >> >> b/board/sifive/fu540/Kconfig index 5ca21474de..900197bbb2 100644
> > > > >> >> >> --- a/board/sifive/fu540/Kconfig
> > > > >> >> >> +++ b/board/sifive/fu540/Kconfig
> > > > >> >> >> @@ -48,5 +48,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
> > > > >> >> >>         imply SIFIVE_GPIO
> > > > >> >> >>         imply CMD_GPIO
> > > > >> >> >>         imply SMP
> > > > >> >> >> +       imply MISC
> > > > >> >> >> +       imply SIFIVE_OTP
> > > > >> >> >
> > > > >> >> >Mark this default y if it is SIFIVE.
> > > > >> >>
> > > > >> >> All other SiFive drivers (SPI_SIFIVE, SIFIVE_GPIO) are enabled by
> > > > >> >> "imply", so I
> > > > >> >am following the same. I think "imply" will make it default y.
> > > > >> >
> > > > >> >Just mark 'default y' on SIFIVE_OTP area of drivers/misc/Kconfig
> > > > >> >depends on SIFIVE SoC would select this driver so-that you no need to
> > > > >> >add impy SIFIVE_OTP here.
> > > > >>
> > > > >> I am not sure if all SiFive SoC will contain SiFive OTP controller, so it's better
> > > > >not to make it default y.
> > > > >>
> > > > >> If all Sifive SoCs contain OTP controller then I need to add another
> > > > >> Kconfig option like "RISCV_SIFIVE" as shown below, config SIFIVE_OTP
> > > > >>         default y if RISCV_SIFIVE
> > > > >
> > > > >Yes, use this TARGET_SIFIVE_FU540
> > > >
> > > > I am okay with this but if other future SiFive SoCs support this OTP then it would be a long chain.
> > > > What's your opinion on this ?
> > >
> > > That is fine, these are at least SoC not boards. boards will increment
> > > a lot but SoC may not. Having SoC dependency or select would be
> > > meaningful.
> > >
> >
> > I am not in favor of adding default y if TARGET_SIFIVE_FU540 in the
> > driver Kconfig file.
> >
> > I think we can add the "imply" or "select" in the SoC Kconfig file
> > instead if adding such "imply" in the board level Kconfig is a
> > concern.
>
> Technically this is an SoC driver and doesn't relate to a specific
> board and to be precise TARGET_SIFIVE_FU540 is SoC not the
> target(board). We do have several examples of following this strategy
> and having a driver selecting on board will be redundant to select the
> same in other boards if they use the same SoC.
>
> On this specific note, I've been encouraged to select it on driver
> Kconfig if SoC (TARGET_SIFIVE_FU540) is defined.

Yes, I understand this is SoC specific. So as I mentioned let's do
this in the SoC Kconfig file instead. Linux also is using the SoC
Kconfig practice to select drivers.

Regards,
Bin


More information about the U-Boot mailing list