Linux-RISC-V Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
       [not found] <20260306171939.84568-1-k0tran@altlinux.org>
@ 2026-07-28 18:02 ` Conor Dooley
  2026-07-29  9:39   ` E Shattow
  0 siblings, 1 reply; 8+ messages in thread
From: Conor Dooley @ 2026-07-28 18:02 UTC (permalink / raw)
  To: devicetree, Ilya Sorochan
  Cc: conor, Conor Dooley, Emil Renner Berthing, linux-riscv, e,
	heinrich.schuchardt

From: Conor Dooley <mail@conchuod.ie>

On Fri, 06 Mar 2026 20:19:39 +0300, Ilya Sorochan wrote:
> Add bootph-pre-ram to mmc1_pins clk-pins.
> 
> U-Boot pruned their overrides recently in favor of Linux which broke booting
> from sd-card for me and Heinrich Schuchardt [1]. Pruning commit:
> 27f617019dd070cb61f2 ("riscv: dts: starfive: prune redundant jh7110-common overrides")
> 
> [1]  https://lore.kernel.org/all/ffdfc550-559b-4c59-9873-3f040fc3bb0e@canonical.com/
> 
> [...]

Right, I am going to try this again. I don't think there's actually a
valid technical argument against it, since it just affects the stage at
which configuration is applied rather than configuration itself.
If the configuration is wrong, and more devices don't use this configuration
than do, people need to move the node to where they think should be. That
shall be done separately.

I don't want to hear about the politics about whether or not Starfive want
to support it or reverse engineering of binaries etc. All that I care about
is discussion of the hardware itself and which boards need this and which do
not.

Applied to riscv-dt-fixes, thanks!

[1/1] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
      https://git.kernel.org/conor/c/42c57c049054

Thanks,
Conor.

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
  2026-07-28 18:02 ` [PATCH] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card Conor Dooley
@ 2026-07-29  9:39   ` E Shattow
  2026-07-29 10:59     ` Conor Dooley
  2026-07-29 11:21     ` Heinrich Schuchardt
  0 siblings, 2 replies; 8+ messages in thread
From: E Shattow @ 2026-07-29  9:39 UTC (permalink / raw)
  To: Conor Dooley, devicetree, Ilya Sorochan
  Cc: Conor Dooley, Emil Renner Berthing, linux-riscv,
	heinrich.schuchardt



On 7/28/26 11:02, Conor Dooley wrote:
> From: Conor Dooley <mail@conchuod.ie>
> 
> On Fri, 06 Mar 2026 20:19:39 +0300, Ilya Sorochan wrote:
>> Add bootph-pre-ram to mmc1_pins clk-pins.
>>
>> U-Boot pruned their overrides recently in favor of Linux which broke booting
>> from sd-card for me and Heinrich Schuchardt [1]. Pruning commit:
>> 27f617019dd070cb61f2 ("riscv: dts: starfive: prune redundant jh7110-common overrides")
>>
>> [1]  https://lore.kernel.org/all/ffdfc550-559b-4c59-9873-3f040fc3bb0e@canonical.com/
>>
>> [...]
> 
> Right, I am going to try this again. I don't think there's actually a
> valid technical argument against it, since it just affects the stage at
> which configuration is applied rather than configuration itself.
> If the configuration is wrong, and more devices don't use this configuration
> than do, people need to move the node to where they think should be. That
> shall be done separately.
> 
> I don't want to hear about the politics about whether or not Starfive want
> to support it or reverse engineering of binaries etc. All that I care about
> is discussion of the hardware itself and which boards need this and which do
> not.
> 
> Applied to riscv-dt-fixes, thanks!
> 
> [1/1] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
>       https://git.kernel.org/conor/c/42c57c049054
> 
> Thanks,
> Conor.

Second NAK to this being applied, again, do not apply as-is.

As you're not interested in the technical discussion, then you won't
have one.

-E

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
  2026-07-29  9:39   ` E Shattow
@ 2026-07-29 10:59     ` Conor Dooley
  2026-07-29 21:07       ` E Shattow
  2026-07-29 11:21     ` Heinrich Schuchardt
  1 sibling, 1 reply; 8+ messages in thread
From: Conor Dooley @ 2026-07-29 10:59 UTC (permalink / raw)
  To: E Shattow
  Cc: devicetree, Ilya Sorochan, Conor Dooley, Emil Renner Berthing,
	linux-riscv, heinrich.schuchardt


[-- Attachment #1.1: Type: text/plain, Size: 1968 bytes --]

On Wed, Jul 29, 2026 at 02:39:50AM -0700, E Shattow wrote:
> 
> 
> On 7/28/26 11:02, Conor Dooley wrote:
> > From: Conor Dooley <mail@conchuod.ie>
> > 
> > On Fri, 06 Mar 2026 20:19:39 +0300, Ilya Sorochan wrote:
> >> Add bootph-pre-ram to mmc1_pins clk-pins.
> >>
> >> U-Boot pruned their overrides recently in favor of Linux which broke booting
> >> from sd-card for me and Heinrich Schuchardt [1]. Pruning commit:
> >> 27f617019dd070cb61f2 ("riscv: dts: starfive: prune redundant jh7110-common overrides")
> >>
> >> [1]  https://lore.kernel.org/all/ffdfc550-559b-4c59-9873-3f040fc3bb0e@canonical.com/
> >>
> >> [...]
> > 
> > Right, I am going to try this again. I don't think there's actually a
> > valid technical argument against it, since it just affects the stage at
> > which configuration is applied rather than configuration itself.
> > If the configuration is wrong, and more devices don't use this configuration
> > than do, people need to move the node to where they think should be. That
> > shall be done separately.
> > 
> > I don't want to hear about the politics about whether or not Starfive want
> > to support it or reverse engineering of binaries etc. All that I care about
> > is discussion of the hardware itself and which boards need this and which do
> > not.
> > 
> > Applied to riscv-dt-fixes, thanks!
> > 
> > [1/1] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
> >       https://git.kernel.org/conor/c/42c57c049054
> > 
> > Thanks,
> > Conor.
> 
> Second NAK to this being applied, again, do not apply as-is.
> 
> As you're not interested in the technical discussion, then you won't
> have one.

I am interested in technical discussion of the hardware configuration. I'm
not interested in reverse engineering of binaries, GPL compliance or
whether Starfive want this to work or not because I don't see how they
relate to the correctness of the hardware description.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 161 bytes --]

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
  2026-07-29  9:39   ` E Shattow
  2026-07-29 10:59     ` Conor Dooley
@ 2026-07-29 11:21     ` Heinrich Schuchardt
  2026-07-29 21:26       ` E Shattow
  1 sibling, 1 reply; 8+ messages in thread
From: Heinrich Schuchardt @ 2026-07-29 11:21 UTC (permalink / raw)
  To: Conor Dooley
  Cc: Emil Renner Berthing, linux-riscv, Ilya Sorochan, devicetree,
	Conor Dooley, E Shattow

On 7/29/26 11:39, E Shattow wrote:
> 
> 
> On 7/28/26 11:02, Conor Dooley wrote:
>> From: Conor Dooley <mail@conchuod.ie>
>>
>> On Fri, 06 Mar 2026 20:19:39 +0300, Ilya Sorochan wrote:
>>> Add bootph-pre-ram to mmc1_pins clk-pins.
>>>
>>> U-Boot pruned their overrides recently in favor of Linux which broke booting
>>> from sd-card for me and Heinrich Schuchardt [1]. Pruning commit:
>>> 27f617019dd070cb61f2 ("riscv: dts: starfive: prune redundant jh7110-common overrides")
>>>
>>> [1]  https://lore.kernel.org/all/ffdfc550-559b-4c59-9873-3f040fc3bb0e@canonical.com/
>>>
>>> [...]
>>
>> Right, I am going to try this again. I don't think there's actually a
>> valid technical argument against it, since it just affects the stage at
>> which configuration is applied rather than configuration itself.
>> If the configuration is wrong, and more devices don't use this configuration
>> than do, people need to move the node to where they think should be. That
>> shall be done separately.
>>
>> I don't want to hear about the politics about whether or not Starfive want
>> to support it or reverse engineering of binaries etc. All that I care about
>> is discussion of the hardware itself and which boards need this and which do
>> not.
>>
>> Applied to riscv-dt-fixes, thanks!
>>
>> [1/1] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
>>        https://git.kernel.org/conor/c/42c57c049054
>>
>> Thanks,
>> Conor.
> 
> Second NAK to this being applied, again, do not apply as-is.
> 
> As you're not interested in the technical discussion, then you won't
> have one.
> 
> -E

As E does not offer any reason for their NAK, I guess it can be safely 
ignored as invalid.

Best regards

Heinrich



_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
  2026-07-29 10:59     ` Conor Dooley
@ 2026-07-29 21:07       ` E Shattow
  2026-07-30 17:31         ` Conor Dooley
  0 siblings, 1 reply; 8+ messages in thread
From: E Shattow @ 2026-07-29 21:07 UTC (permalink / raw)
  To: Conor Dooley
  Cc: devicetree, Ilya Sorochan, Conor Dooley, Emil Renner Berthing,
	linux-riscv, heinrich.schuchardt


On 7/29/26 03:59, Conor Dooley wrote:
> On Wed, Jul 29, 2026 at 02:39:50AM -0700, E Shattow wrote:
>>
>>
>> On 7/28/26 11:02, Conor Dooley wrote:
>>> From: Conor Dooley <mail@conchuod.ie>
>>>
>>> On Fri, 06 Mar 2026 20:19:39 +0300, Ilya Sorochan wrote:
>>>> Add bootph-pre-ram to mmc1_pins clk-pins.
>>>>
>>>> U-Boot pruned their overrides recently in favor of Linux which broke booting
>>>> from sd-card for me and Heinrich Schuchardt [1]. Pruning commit:
>>>> 27f617019dd070cb61f2 ("riscv: dts: starfive: prune redundant jh7110-common overrides")
>>>>
>>>> [1]  https://lore.kernel.org/all/ffdfc550-559b-4c59-9873-3f040fc3bb0e@canonical.com/
>>>>
>>>> [...]
>>>
>>> Right, I am going to try this again. I don't think there's actually a
>>> valid technical argument against it, since it just affects the stage at
>>> which configuration is applied rather than configuration itself.
>>> If the configuration is wrong, and more devices don't use this configuration
>>> than do, people need to move the node to where they think should be. That
>>> shall be done separately.
>>>
>>> I don't want to hear about the politics about whether or not Starfive want
>>> to support it or reverse engineering of binaries etc. All that I care about
>>> is discussion of the hardware itself and which boards need this and which do
>>> not.
>>>
>>> Applied to riscv-dt-fixes, thanks!
>>>
>>> [1/1] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
>>>       https://git.kernel.org/conor/c/42c57c049054
>>>
>>> Thanks,
>>> Conor.
>>
>> Second NAK to this being applied, again, do not apply as-is.
>>
>> As you're not interested in the technical discussion, then you won't
>> have one.
> 
> I am interested in technical discussion of the hardware configuration. I'm
> not interested in reverse engineering of binaries, GPL compliance or
> whether Starfive want this to work or not because I don't see how they
> relate to the correctness of the hardware description.

The commit message suggesting "...broke booting from sd-card..." is
missing information or should be clearer i.e. "The bootph-pre-ram
hint(s) allow that following the SD Boot mode of StarFive loader in
MaskROM the U-Boot SPL will have all necessary devicetree nodes to
initialize the MMC driver and continue booting U-Boot Main from SD
card". It has not to do with booting Linux from SD card, and is for want
of a more generalized description affecting any SPL that filters on the
patterns of bootph-* hints but U-Boot seems to be one-of-one the only
consumer of this that I am aware of.

Placement of this bootph-pre-ram hint in jh7110-common is (probably?)
not appropriate, as SD Card is not valid on all boards or even at that
mmc device, namely StarFive VisionFive 2 Lite eMMC, Milk-V Mars CM, and
requires testing to know if it breaks existing functionality on boards
with swapped arrangement of mmc0 and mmc1 with respect to SDIO module
and eMMC (i.e. OrangePi RV ? It has been awhile I may misremember this).
The functionality of adding this hint is not even possible for more than
half the boards, and no new boards will have it.

Repeating myself, Hal offered a description of the boot process but I
find that does not exactly match the hardware based on my
reverse-engineering effort. More eyes should be on this to explain what
the hardware does in context of the patch commit message. Are we
correctly describing this hardware, or not?

void _a000efa_BootMain(void)
{
  int err;
  uint gpio_get_val;
  uint get_boot_mode;
  uint32_t fuse33 [1];

  gp = _1100098_ext_csd + 0x68;
                    /* default value of unwritten OTP bits is 1 (high) */
  fuse33[0] = 0xffffffff;
  _a002900_gpio_init();
                    /* #define UART_BUADRATE_32MCLK_115200 115200 */
  _a00107c_uart_init(0,115200);
  _a002944_system_clint_setup();
  _a004908_starfive_otp_probe();
                    /* // get stride*1 bytes of OTP fuse data from OTP
at offset 0x84 (stride * 33)
                       // where stride equals sizeof(uint32_t) */
  err = _a004a12_starfive_otp_read_array(0x84,fuse33,1);
  if (true) {
    if (fuse33[0] != 0xffffffff) {
                    /* AON SYSCONSAIF SYSCFG 24 at 0x17010018
                       bits [1] u0_otpc_crc_pass */
      gpio_get_val = _a00023c_gpio_get_val(0x17010018,1,0x2);
      if (gpio_get_val != 1) {
        err = 0xfffffff8;
        goto _a000f50_boot_fail;
      }
      _a00022e_call_enable_security_clocks_and_reset();
    }
                    /* get RGPIO[3:0] state */
    get_boot_mode = _a0028e4_get_boot_mode();
    if (get_boot_mode == 1) {
                    /* boot mode 1 */
      err = _a0007e2_boot_from_sd(1,fuse33[0]);
    }
    else if (get_boot_mode < 2) {
      if (get_boot_mode != 0) goto _a000f50_boot_fail;
                    /* boot mode 0 */
      err = _a000c66_boot_from_spi(fuse33[0]);
    }
    else if (get_boot_mode == 2) {
                    /* boot mode 2 */
      err = _a00082e_boot_from_emmc(0,fuse33[0]);
    }
    else {
      if (get_boot_mode != 3) goto _a000f50_boot_fail;
                    /* boot mode 3 */
      err = _a000ae4_boot_from_uart(fuse33[0]);
    }
    if (true) {
      _2000004_CLINT_msiphart1 = 1;
      _2000008_CLINT_msiphart2 = 1;
      _200000c_CLINT_msiphart3 = 1;
      _2000010_CLINT_msiphart4 = 1;
      return;
    }
  }
_a000f50_boot_fail:
  _a0012a6_printk_vprintk_vnprintf(_a0068a0_BOOT_fail_Error_is_0xx,err);
  do {
                    /* WARNING: Do nothing block with infinite loop */
  } while( true );
}


int 2a0007e2_boot_from_sd(int dev,uint32_t fuse33)
{
  int err;
  mmc *mmc;

  gp = 01100098_ext_csd + 0x68;
  mmc = 2a0004e2_boot_sdio_init(dev);
  if ((long)mmc << 0x20 < 0) {
    err = -1;
  }
  else if ((ulong)fuse33 == 0xffffffffffffffff) {
    err = 2a00059e_boot_from_sd_without_crypto(dev);
  }
  else {
    err = 2a000688_boot_from_sd_with_crypto(dev);
  }
  return err;
}


mmc * 2a0004e2_boot_sdio_init(int dev)
{
  int r;
  mmc *host_mmc;

  gp = 01100098_ext_csd + 0x68;
  if (dev != 0) {
    01100a08_local_host0.name = 2a006790_SDIO;
    01100a08_local_host0.buswidth = 4;
  }
  else {
    01100a08_local_host0.name = 2a006788_EMMC;
    01100a08_local_host0.buswidth = 8;
  }
  01100a08_local_host0.dev_index = (int)(dev != 0);
  01100a08_local_host0.fifo_mode = 0;
                    /* u32 fifo_depth = 32;
                       host->fifoth_val = MSIZE(0x2) |
                       RX_WMARK(fifo_depth / 2 - 1) |
TX_WMARK(fifo_depth / 2); */
  01100a08_local_host0.fifoth_val = 0x200f0010;
                    /* host->bus_hz = DWMMC_BUS_FREQ; */
  01100a08_local_host0.bus_hz = 4000000;
                    /* if (add_dwmci(host, DWMMC_MAX_FREQ,
DWMMC_MIN_FREQ, 0)) { ... } */
  r = 2a0041ae_add_dwmci(&01100a08_local_host0,1000000,400000,dev);
  host_mmc = (mmc *)0xffffffffffffffff;
  if (r == 0) {
    01100a00_boot_dev = dev;
    r = 2a0030ac_mmc_init(&01100898_host_mmc);
    host_mmc = &01100898_host_mmc;
    if (r != 0) {
      host_mmc = (mmc *)0xffffffffffffffff;
    }
  }
  return host_mmc;
}


int 2a0041ae_add_dwmci(dwmci_host *host,uint32_t max_clk,uint32_t
min_clk,uint32_t dev_num)
{
  uint base;
  mmc *mmc;
  uint32_t caps_change;

  gp = 01100098_ext_csd + 0x68;
  (host->cfg).name = host->name;
  (host->cfg).ops = &2a006b00_dwmci_ops;
  (host->cfg).f_min = min_clk;
  (host->cfg).f_max = max_clk;
                    /* host->cfg.host_caps = host->caps; */
  base = 2a000202_sdio_base_address(dev_num);
  host->ioaddr = (void *)(ulong)base;
  2a000158_configure_sdio_for_mode((long)(int)dev_num);
                    /* host->cfg.voltages = MMC_VDD_32_33 |
MMC_VDD_33_34; */
  (host->cfg).voltages = 0x300000;
                    /* host->cfg.host_caps |= MMC_MODE_4BIT;
                       host->cfg.host_caps &= ~MMC_MODE_8BIT; */
  caps_change = host->caps & 0xfffffff7 | 4;
  if (host->buswidth == 8) {
                    /* host->cfg.host_caps |= MMC_MODE_8BIT;
                       host->cfg.host_caps &= ~MMC_MODE_4BIT; */
    caps_change = host->caps & 0xfffffffb | 8;
  }
  (host->cfg).host_caps = caps_change;
                    /* host->cfg.b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT; */
  (host->cfg).b_max = 0xffff;
  mmc = 2a002e84_mmc_create(&host->cfg,host,dev_num);
  host->mmc = mmc;
  return -(uint)(mmc == (mmc *)0x0);
}


2a0030ac_mmc_init() is a rather messy decompile output of several large
body static functions lumped together, so not quoted here.

uint 2a000202_sdio_base_address(uint32_t sdio_device_index)
{
  gp = 01100098_ext_csd + 0x68;
  if (sdio_device_index != 0) {
    return 0x16020000;
  }
  return 0x16010000;
}


void 2a000158_configure_sdio_for_mode(long mode)
{
  gp = 01100098_ext_csd + 0x68;
  if (mode == 0) {
                    /* n 62
                       din ignore/no-op
                       dout u0_sdio_rst_n
                       doen "low level output" */
    2a002840_configure_sysgpiomux(0x3e,0xfffe,0x13,0);
    2a000306_enable_u0_sdio_clocks_and_reset();
  }
  else if (mode == 1) {
                    /* n 10
                       din ignore/no-op
                       dout u1_sdio_cclk_out
                       doen "low level output" */
    2a002840_configure_sysgpiomux(10,0xfffe,55,0);
                    /* n 9
                       din sys_iomux_gpi_u1_sdio_ccmd_in_cfg (SDIO_CCMD)
                       dout u1_sdio_ccmd_out
                       doen u1_sdio_ccmd_out_en */
    2a002840_configure_sysgpiomux(9,44,57,19);
                    /* n 11
                       din sys_iomux_gpi_u1_sdio_cdata_in_0_cfg
(SDIO_CDATA[0])
                       dout u1_sdio_cdata_out[0]
                       doen u1_sdio_cdata_out_en[0] */
    2a002840_configure_sysgpiomux(11,45,58,20);
                    /* n 12
                       din sys_iomux_gpi_u1_sdio_cdata_in_1_cfg
(SDIO_CDATA[1])
                       dout u1_sdio_cdata_out[1]
                       doen u1_sdio_cdata_out_en[1] */
    2a002840_configure_sysgpiomux(12,46,59,21);
                    /* n 7
                       din sys_iomux_gpi_u1_sdio_cdata_in_2_cfg
(SDIO_CDATA[2])
                       dout u1_sdio_cdata_out[2]
                       doen u1_sdio_cdata_out_en[2] */
    2a002840_configure_sysgpiomux(7,47,60,22);
                    /* n 8
                       din sys_iomux_gpi_u1_sdio_cdata_in_3_cfg
(SDIO_CDATA[3])
                       dout u1_sdio_cdata_out[3]
                       doen u1_sdio_cdata_out_en[3] */
    2a002840_configure_sysgpiomux(8,48,61,23);
    2a000356_enable_u1_sdio_clocks_and_reset();
  }
  return;
}


ulong 2a002840_configure_sysgpiomux(int n,int din,int dout,int doen)
{
  uint *p_reg;
  ulong mask;
  uint reg;

  gp = 01100098_ext_csd + 0x68;
                    /* if din != 0xfffe then assign Index=n SYS IOMUX
GPIOn Input
                       to drive the SYS IOMUX Input signal configured at
(13040080h+din).
                       Index values are valid 0 (GPIO2) through 61 (GPIO63).
                       GPIO0 and GPIO1 are not available. */
  if (din != 0xfffe) {
    mask = (long)(din << 3) & 0x18;
    p_reg = (uint *)((long)(din >> 2) * 4 +
01100020_sysiomux_base_address + 0x80);
    reg = *p_reg;
    *p_reg = (n + 2 << mask ^ reg) & 0x3f << mask ^ reg;
  }
  mask = (long)(n << 3) & 0x18;
                    /* if dout != 0xfffe then assign Index=dout SYS
IOMUX Output signal
                       to connect with GPIOn configured at (13040040h+n).
                       Index values are valid 0 through 107. */
  if (dout != 0xfffe) {
    p_reg = (uint *)(01100020_sysiomux_base_address + 0x40 + (long)(n >>
2) * 4);
    reg = *p_reg;
    *p_reg = (dout << mask ^ reg) & 0x7f << mask ^ reg;
  }
                    /* if doen != 0xfffe then assign Index=doen SYS
IOMUX OEN Output Enable
                       signal to connect with GPIOn configured at
(13040000h+n).
                       Index values are valid 0 through 49. */
  if (doen != 0xfffe) {
    p_reg = (uint *)((long)(n >> 2) * 4 + 01100020_sysiomux_base_address);
    reg = *p_reg;
    *p_reg = (doen << mask ^ reg) & 0x3f << mask ^ reg;
  }
  return 0;
}


void 2a000306_enable_u0_sdio_clocks_and_reset(void)
{
  gp = 01100098_ext_csd + 0x68;
                    /* Clock AHB 0 clk_icg enable */
  2a00024c_set_register(0x13020024,1,0x1f,0x80000000);
                    /* U0 SD Clock AHB clk_icg enable */
  2a00024c_set_register(0x1302016c,1,0x1f,0x80000000);
                    /* U0 SD Card Clock clk_icg enable */
  2a00024c_set_register(0x13020174,1,0x1f,0x80000000);
                    /* Software RESET 2 rstn_u0_sdio_rstn_ahb select and
wait for status */
  2a000264_configure_software_reset(0x13020300,0x13020310,1);
  return;
}


void 2a000356_enable_u1_sdio_clocks_and_reset(void)
{
  gp = 01100098_ext_csd + 0x68;
                    /* Clock AHB 0 clk_icg enable */
  2a00024c_set_register(0x13020024,1,0x1f,0x80000000);
                    /* U1 SD Clock AHB clk_icg enable */
  2a00024c_set_register(0x13020170,1,0x1f,0x80000000);
                    /* U1 SD Card Clock clk_icg enable */
  2a00024c_set_register(0x13020178,1,0x1f,0x80000000);
                    /* Software RESET 2 rstn_u1_sdio_rstn_ahb select and
wait for status */
  2a000264_configure_software_reset(0x13020300,0x13020310,2);
  return;
}


mmc * 2a002e84_mmc_create(mmc_config *cfg,void *priv,uint32_t dev_num)
{
  int cur_dev_num;

  cur_dev_num = 01100010_cur_dev_num;
  gp = 01100098_ext_csd + 0x68;
                    /* if (cfg == NULL || cfg->ops == NULL ||
cfg->ops->send_cmd == NULL ||
                               cfg->f_min == 0 || cfg->f_max == 0 ||
cfg->b_max == 0)
                           return NULL; */
  if (cfg == (mmc_config *)0x0) {
    return (mmc *)0x0;
  }
  if (cfg->ops != (mmc_ops *)0x0) {
    if (cfg->ops->send_cmd == (mmc_ops_send_cmd_t *)0x0) {
      return (mmc *)0x0;
    }
    if (cfg->f_min == 0) {
      return (mmc *)0x0;
    }
    if (cfg->f_max == 0) {
      return (mmc *)0x0;
    }
    if (cfg->b_max != 0) {
      01100898_host_mmc.cfg = cfg;
      01100898_host_mmc.priv = priv;
      01100898_host_mmc.dsr_imp = 0;
      01100898_host_mmc.dsr = 0xffffffff;
                    /* mmc->block_dev.if_type = IF_TYPE_MMC; */
      01100898_host_mmc.block_dev.if_type = (dev_num != 0) + 6;
      01100010_cur_dev_num = 01100010_cur_dev_num + 1;
      01100898_host_mmc.block_dev.dev = cur_dev_num;
      01100898_host_mmc.block_dev.removable = 1;
      01100898_host_mmc.block_dev.block_read = 2a002d1e_mmc_bread;
      01100898_host_mmc.block_dev.block_write = 2a004380_mmc_bwrite;
      01100898_host_mmc.block_dev.block_erase = 2a004232_mmc_berase;
      01100898_host_mmc.block_dev.part_type = cfg->part_type;
      return &01100898_host_mmc;
    }
  }
  return (mmc *)0x0;
}


The "reverse engineering of binaries" is the StarFive loader in hardware
MaskROM that immediately precedes the supposed consumer of this proposed
bootph-pre-ram hint as stated in the patch commit message. It is the
hardware specifically the functionality that we are purporting to
describe. So there it is an excerpt and if you want an explanation of
what that all does to save you the trouble of reading it I am sorry to
disappoint as I don't I don't understand a line of it. What are we
describing and are there more bootph-pre-ram hints needed?

-E

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
  2026-07-29 11:21     ` Heinrich Schuchardt
@ 2026-07-29 21:26       ` E Shattow
  0 siblings, 0 replies; 8+ messages in thread
From: E Shattow @ 2026-07-29 21:26 UTC (permalink / raw)
  To: Heinrich Schuchardt, Conor Dooley
  Cc: Emil Renner Berthing, linux-riscv, Ilya Sorochan, devicetree,
	Conor Dooley



On 7/29/26 04:21, Heinrich Schuchardt wrote:
> On 7/29/26 11:39, E Shattow wrote:
>>
>>
>> On 7/28/26 11:02, Conor Dooley wrote:
>>> From: Conor Dooley <mail@conchuod.ie>
>>>
>>> On Fri, 06 Mar 2026 20:19:39 +0300, Ilya Sorochan wrote:
>>>> Add bootph-pre-ram to mmc1_pins clk-pins.
>>>>
>>>> U-Boot pruned their overrides recently in favor of Linux which broke
>>>> booting
>>>> from sd-card for me and Heinrich Schuchardt [1]. Pruning commit:
>>>> 27f617019dd070cb61f2 ("riscv: dts: starfive: prune redundant jh7110-
>>>> common overrides")
>>>>
>>>> [1]  https://lore.kernel.org/all/
>>>> ffdfc550-559b-4c59-9873-3f040fc3bb0e@canonical.com/
>>>>
>>>> [...]
>>>
>>> Right, I am going to try this again. I don't think there's actually a
>>> valid technical argument against it, since it just affects the stage at
>>> which configuration is applied rather than configuration itself.
>>> If the configuration is wrong, and more devices don't use this
>>> configuration
>>> than do, people need to move the node to where they think should be.
>>> That
>>> shall be done separately.
>>>
>>> I don't want to hear about the politics about whether or not Starfive
>>> want
>>> to support it or reverse engineering of binaries etc. All that I care
>>> about
>>> is discussion of the hardware itself and which boards need this and
>>> which do
>>> not.
>>>
>>> Applied to riscv-dt-fixes, thanks!
>>>
>>> [1/1] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from
>>> SD-card.
>>>        https://git.kernel.org/conor/c/42c57c049054
>>>
>>> Thanks,
>>> Conor.
>>
>> Second NAK to this being applied, again, do not apply as-is.
>>
>> As you're not interested in the technical discussion, then you won't
>> have one.
>>
>> -E
> 
> As E does not offer any reason for their NAK, I guess it can be safely
> ignored as invalid.
> 
> Best regards
> 
> Heinrich
> 
> 

Reason has not changed in 4+ months since the last attempt to shove this
patch through without technical merit. Please participate instead of
being like however this is toward me, I would greatly value your
analysis if you would just attempt to do so as Hal and myself have done.
It is unfortunate I find discrepancies in Hal's description that plainly
does not match what I find in the actual hardware. We should do some of
the work here not relying on Hal, and especially not relying on myself
(I'm not a career programmer obviously). Will you find time to
participate in review of the StarFive loader code and features that are
purported to be so desired for U-Boot compatibility?

https://web.archive.org/web/20260501210605/https://freeshell.de/e/riscv64/hrv-jhre-JH-7110%20BootROM%20analysis_2026_02_22.gar

-E

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
  2026-07-29 21:07       ` E Shattow
@ 2026-07-30 17:31         ` Conor Dooley
  2026-08-01 15:00           ` E Shattow
  0 siblings, 1 reply; 8+ messages in thread
From: Conor Dooley @ 2026-07-30 17:31 UTC (permalink / raw)
  To: E Shattow
  Cc: devicetree, Ilya Sorochan, Conor Dooley, Emil Renner Berthing,
	linux-riscv, heinrich.schuchardt, hal.feng


[-- Attachment #1.1: Type: text/plain, Size: 6519 bytes --]

On Wed, Jul 29, 2026 at 02:07:07PM -0700, E Shattow wrote:
> 
> On 7/29/26 03:59, Conor Dooley wrote:
> > On Wed, Jul 29, 2026 at 02:39:50AM -0700, E Shattow wrote:
> >>
> >>
> >> On 7/28/26 11:02, Conor Dooley wrote:
> >>> From: Conor Dooley <mail@conchuod.ie>
> >>>
> >>> On Fri, 06 Mar 2026 20:19:39 +0300, Ilya Sorochan wrote:
> >>>> Add bootph-pre-ram to mmc1_pins clk-pins.
> >>>>
> >>>> U-Boot pruned their overrides recently in favor of Linux which broke booting
> >>>> from sd-card for me and Heinrich Schuchardt [1]. Pruning commit:
> >>>> 27f617019dd070cb61f2 ("riscv: dts: starfive: prune redundant jh7110-common overrides")
> >>>>
> >>>> [1]  https://lore.kernel.org/all/ffdfc550-559b-4c59-9873-3f040fc3bb0e@canonical.com/
> >>>>
> >>>> [...]
> >>>
> >>> Right, I am going to try this again. I don't think there's actually a
> >>> valid technical argument against it, since it just affects the stage at
> >>> which configuration is applied rather than configuration itself.
> >>> If the configuration is wrong, and more devices don't use this configuration
> >>> than do, people need to move the node to where they think should be. That
> >>> shall be done separately.
> >>>
> >>> I don't want to hear about the politics about whether or not Starfive want
> >>> to support it or reverse engineering of binaries etc. All that I care about
> >>> is discussion of the hardware itself and which boards need this and which do
> >>> not.
> >>>
> >>> Applied to riscv-dt-fixes, thanks!
> >>>
> >>> [1/1] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
> >>>       https://git.kernel.org/conor/c/42c57c049054
> >>>
> >>> Thanks,
> >>> Conor.
> >>
> >> Second NAK to this being applied, again, do not apply as-is.
> >>
> >> As you're not interested in the technical discussion, then you won't
> >> have one.
> > 
> > I am interested in technical discussion of the hardware configuration. I'm
> > not interested in reverse engineering of binaries, GPL compliance or
> > whether Starfive want this to work or not because I don't see how they
> > relate to the correctness of the hardware description.
> 
> The commit message suggesting "...broke booting from sd-card..." is
> missing information or should be clearer i.e. "The bootph-pre-ram
> hint(s) allow that following the SD Boot mode of StarFive loader in
> MaskROM the U-Boot SPL will have all necessary devicetree nodes to
> initialize the MMC driver and continue booting U-Boot Main from SD
> card". It has not to do with booting Linux from SD card, and is for want
> of a more generalized description affecting any SPL that filters on the
> patterns of bootph-* hints but U-Boot seems to be one-of-one the only
> consumer of this that I am aware of.
> 
> Placement of this bootph-pre-ram hint in jh7110-common is (probably?)
> not appropriate, as SD Card is not valid on all boards or even at that
> mmc device, namely StarFive VisionFive 2 Lite eMMC, Milk-V Mars CM, and
> requires testing to know if it breaks existing functionality on boards
> with swapped arrangement of mmc0 and mmc1 with respect to SDIO module
> and eMMC (i.e. OrangePi RV ? It has been awhile I may misremember this).

This kinda comes back to the point I was making about it not changing the
configuration, just the point at which the configuration is applied. All
boards get this configuration eventually, it just seems to be that this
particular boot method needs it earlier?
I'm not sure that applying it earlier would break any boards (although
of course it could), I'd be more likely to think that having the
configuration at all is probably harmful in the cases where it is
harmful.

The other thing I don't really get is why the clk-pins node is needed at
the pre-ram stage but not the mmc-pins node. Surely both are needed? I
suppose it may be the case that the latter matches the default
configuration for the pins but not the former? If that's the case, the
node mmc-pins should get the property too IMO. I've added Hal into the
thread, maybe he can clear stuff up somewhat in that regard.

> The functionality of adding this hint is not even possible for more than
> half the boards, and no new boards will have it.

Ignoring the rest of this for now, these are the supported boards and
inferring sd from cd-gpios:

jh7110-deepcomputing-fml13v01.dts

Looks like sd on 1

jh7110-milkv-marscm-emmc.dts
jh7110-milkv-marscm-lite.dts

looks like sd on 0

jh7110-milkv-mars.dts

looks like sd on 1

jh7110-orangepi-rv.dts

ditto

jh7110-pine64-star64.dts

ditto

jh7110-starfive-visionfive-2-lite.dts

looks like sd on 0

jh7110-starfive-visionfive-2-lite-emmc.dts
jh7110-starfive-visionfive-2-v1.2a.dts

looks like sd on 1

jh7110-starfive-visionfive-2-v1.3b.dts

ditto

Would you be happier if only the boards with sd on mmc1 got the
property?

I'd like to say I will read the decompliation, but I look after this
platform as a favour and I just don't have the time to dedicate to
understanding it. There's a reason it took me ages to even circle back
to this.

> 
> Repeating myself, Hal offered a description of the boot process but I
> find that does not exactly match the hardware based on my
> reverse-engineering effort. More eyes should be on this to explain what
> the hardware does in context of the patch commit message. Are we
> correctly describing this hardware, or not?

> The "reverse engineering of binaries" is the StarFive loader in hardware
> MaskROM that immediately precedes the supposed consumer of this proposed
> bootph-pre-ram hint as stated in the patch commit message. It is the
> hardware specifically the functionality that we are purporting to
> describe. So there it is an excerpt and if you want an explanation of
> what that all does to save you the trouble of reading it I am sorry to
> disappoint as I don't I don't understand a line of it. What are we
> describing and are there more bootph-pre-ram hints needed?

In theory, the state of the hardware prior to the boot loader stage
consuming bootph-pre-ram shouldn't even matter, any node needed by the
stage should be marked with it even if that node matches the default
state of the pinctrl hardware. What the prior stage is or does shouldn't
matter, although of course people tend to only add pinctrl nodes or
annotations when software requirements/expecations don't match the state
it finds the hardware in.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 161 bytes --]

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
  2026-07-30 17:31         ` Conor Dooley
@ 2026-08-01 15:00           ` E Shattow
  0 siblings, 0 replies; 8+ messages in thread
From: E Shattow @ 2026-08-01 15:00 UTC (permalink / raw)
  To: Conor Dooley
  Cc: devicetree, Ilya Sorochan, Conor Dooley, Emil Renner Berthing,
	linux-riscv, heinrich.schuchardt, hal.feng


On 7/30/26 10:31, Conor Dooley wrote:
> On Wed, Jul 29, 2026 at 02:07:07PM -0700, E Shattow wrote:
>>
>> On 7/29/26 03:59, Conor Dooley wrote:
>>> On Wed, Jul 29, 2026 at 02:39:50AM -0700, E Shattow wrote:
>>>>
>>>>
>>>> On 7/28/26 11:02, Conor Dooley wrote:
>>>>> From: Conor Dooley <mail@conchuod.ie>
>>>>>
>>>>> On Fri, 06 Mar 2026 20:19:39 +0300, Ilya Sorochan wrote:
>>>>>> Add bootph-pre-ram to mmc1_pins clk-pins.
>>>>>>
>>>>>> U-Boot pruned their overrides recently in favor of Linux which broke booting
>>>>>> from sd-card for me and Heinrich Schuchardt [1]. Pruning commit:
>>>>>> 27f617019dd070cb61f2 ("riscv: dts: starfive: prune redundant jh7110-common overrides")
>>>>>>
>>>>>> [1]  https://lore.kernel.org/all/ffdfc550-559b-4c59-9873-3f040fc3bb0e@canonical.com/
>>>>>>
>>>>>> [...]
>>>>>
>>>>> Right, I am going to try this again. I don't think there's actually a
>>>>> valid technical argument against it, since it just affects the stage at
>>>>> which configuration is applied rather than configuration itself.
>>>>> If the configuration is wrong, and more devices don't use this configuration
>>>>> than do, people need to move the node to where they think should be. That
>>>>> shall be done separately.
>>>>>
>>>>> I don't want to hear about the politics about whether or not Starfive want
>>>>> to support it or reverse engineering of binaries etc. All that I care about
>>>>> is discussion of the hardware itself and which boards need this and which do
>>>>> not.
>>>>>
>>>>> Applied to riscv-dt-fixes, thanks!
>>>>>
>>>>> [1/1] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card.
>>>>>       https://git.kernel.org/conor/c/42c57c049054
>>>>>
>>>>> Thanks,
>>>>> Conor.
>>>>
>>>> Second NAK to this being applied, again, do not apply as-is.
>>>>
>>>> As you're not interested in the technical discussion, then you won't
>>>> have one.
>>>
>>> I am interested in technical discussion of the hardware configuration. I'm
>>> not interested in reverse engineering of binaries, GPL compliance or
>>> whether Starfive want this to work or not because I don't see how they
>>> relate to the correctness of the hardware description.
>>
>> The commit message suggesting "...broke booting from sd-card..." is
>> missing information or should be clearer i.e. "The bootph-pre-ram
>> hint(s) allow that following the SD Boot mode of StarFive loader in
>> MaskROM the U-Boot SPL will have all necessary devicetree nodes to
>> initialize the MMC driver and continue booting U-Boot Main from SD
>> card". It has not to do with booting Linux from SD card, and is for want
>> of a more generalized description affecting any SPL that filters on the
>> patterns of bootph-* hints but U-Boot seems to be one-of-one the only
>> consumer of this that I am aware of.
>>
>> Placement of this bootph-pre-ram hint in jh7110-common is (probably?)
>> not appropriate, as SD Card is not valid on all boards or even at that
>> mmc device, namely StarFive VisionFive 2 Lite eMMC, Milk-V Mars CM, and
>> requires testing to know if it breaks existing functionality on boards
>> with swapped arrangement of mmc0 and mmc1 with respect to SDIO module
>> and eMMC (i.e. OrangePi RV ? It has been awhile I may misremember this).
> 
> This kinda comes back to the point I was making about it not changing the
> configuration, just the point at which the configuration is applied. All
> boards get this configuration eventually, it just seems to be that this
> particular boot method needs it earlier?
> 
> I'm not sure that applying it earlier would break any boards (although
> of course it could), I'd be more likely to think that having the
> configuration at all is probably harmful in the cases where it is
> harmful.

Indeed the "workaround" I've suggested off-list for JH-7110 U-Boot
builds where deprecated StarFive loader functionality is required has
been to one-liner patch out the U-Boot build system filtering of
devicetree for SPL build. There is excess SRAM capacity on JH-7110 SoC
and it is not any problem of code size. There cannot be any complaint
about missing nodes if none are missing.

> 
> The other thing I don't really get is why the clk-pins node is needed at
> the pre-ram stage but not the mmc-pins node. Surely both are needed? I
> suppose it may be the case that the latter matches the default
> configuration for the pins but not the former? If that's the case, the
> node mmc-pins should get the property too IMO. I've added Hal into the
> thread, maybe he can clear stuff up somewhat in that regard.

More the reason to regard all StarFive loader affected configuration
related nodes as likely that the SPL would need any of them at that
phase. If you're expert enough to know to just hit specific clocks and
GPIO and controller IP configuration without knowledge of the StarFive
loader then I of course accept that determination on whether this is
achieving the stated purpose of the patch to leverage the StarFive
loader "SD boot" method and U-Boot SPL loading U-Boot Main payload and
then from there Linux-as-usual. I do not have that expertise so the
generalized approach is add filtering hints for anything StarFive loader.

> 
>> The functionality of adding this hint is not even possible for more than
>> half the boards, and no new boards will have it.
> 
> Ignoring the rest of this for now, these are the supported boards and
> inferring sd from cd-gpios:
> 
> jh7110-deepcomputing-fml13v01.dts
> 
> Looks like sd on 1

Yes, board reference photos show the multi-select DIP switch. No
schematic available (NDA restricted).

> 
> jh7110-milkv-marscm-emmc.dts
> jh7110-milkv-marscm-lite.dts
> 
> looks like sd on 0

There's transistor logic to select 0b00 or 0b11 RGPIO state from a pin
routed through one of the board interconnects, labeled nRPI_BOOT; not
possible to select those 0b01 and 0b10 StarFive loader mmc modes so (to
the best of my understanding) any MMC action in U-Boot SPL will
originate from StarFive loader non-MMC configuring modes, and there
would be a clean slate except maybe some of the clocks? I'm not sure of
the details from code.

> 
> jh7110-milkv-mars.dts
> 
> looks like sd on 1

Some revisions of Milk-V Mars have the multi-select switch populated.
Most revisions have a button with transistor logic for override of
multi-select switch to initiate StarFive loader UART serial method. Some
have both a button and a multi-select switch. The default in the absence
of populated parts is StarFive loader SPI NOR method.

Having MMC at SPL time seems appropriate for Milk-V Mars of any revision
because the interfaces are wired up and U-Boot SPL i.e. could be
compiled to load U-Boot Main from MMC when originated from e.g. StarFive
loader UART mode, but the goal of this patch as-is specifically
originates from StarFive loader "SD boot" selection.

> 
> jh7110-orangepi-rv.dts
> 
> ditto

I think these are swapped for SDIO WiFi functionality? Not exactly sure,
I never end up with this board to test myself even though I handled the
patch submission with schematic as reference.

It has a UART boot button in photos and schematic, not any multi-select
switch.

> 
> jh7110-pine64-star64.dts
> 
> ditto

Yes, all revisions are with an multi-select switch, and sd where
StarFive loader expects it to be.

> 
> jh7110-starfive-visionfive-2-lite.dts
> 
> looks like sd on 0

It has a UART boot button and a fastboot jumper position which uses the
"user LED" RGPIO3 as an input;  StarFive loader doesn't have anything
about fastboot or RGPIO3 so that specific feature is a vendor U-Boot
configuration.

> 
> jh7110-starfive-visionfive-2-lite-emmc.dts
> jh7110-starfive-visionfive-2-v1.2a.dts
> 
> looks like sd on 1
> 
> jh7110-starfive-visionfive-2-v1.3b.dts
> 
> ditto
> 
> Would you be happier if only the boards with sd on mmc1 got the
> property?

If we're focused on the "SD boot" feature yes I want that to be
per-board, as it is unknown if the errata is a reference layout and
component selection issue or if it is a BootROM code bug. If the former
then that may vary between boards.

I'd rather regard the StarFive loader code listing as the minimum
baseline of adding filtering hints and we can then totally ignore
per-board hinting and testing of StarFive loader functionality and
external SPL behavior. It is configured in the StarFive loader? Set a
filtering hint and get out of the way of SPL re-configuring the same.

> 
> I'd like to say I will read the decompliation, but I look after this
> platform as a favour and I just don't have the time to dedicate to
> understanding it. There's a reason it took me ages to even circle back
> to this.
> 
>>
>> Repeating myself, Hal offered a description of the boot process but I
>> find that does not exactly match the hardware based on my
>> reverse-engineering effort. More eyes should be on this to explain what
>> the hardware does in context of the patch commit message. Are we
>> correctly describing this hardware, or not?
> 
>> The "reverse engineering of binaries" is the StarFive loader in hardware
>> MaskROM that immediately precedes the supposed consumer of this proposed
>> bootph-pre-ram hint as stated in the patch commit message. It is the
>> hardware specifically the functionality that we are purporting to
>> describe. So there it is an excerpt and if you want an explanation of
>> what that all does to save you the trouble of reading it I am sorry to
>> disappoint as I don't I don't understand a line of it. What are we
>> describing and are there more bootph-pre-ram hints needed?
> 
> In theory, the state of the hardware prior to the boot loader stage
> consuming bootph-pre-ram shouldn't even matter, any node needed by the
> stage should be marked with it even if that node matches the default
> state of the pinctrl hardware. What the prior stage is or does shouldn't
> matter, although of course people tend to only add pinctrl nodes or
> annotations when software requirements/expecations don't match the state
> it finds the hardware in.

My initial approach to homogenize bootph-pre-ram hinting and nodes
between U-Boot and Linux for JH-7110 SoC was simple trial-and-error only
adding nodes if they result in getting further along in the boot
process. The questions I had then about "SD boot" and "eMMC boot"
StarFive loader mode errata have only really been clarified by digging
into the code listing of the StarFive loader, and at that not
satisfactorily as of yet. What is all this secureboot logic doing? What
are the technical details of the "SD boot" errata? Where is the
published source available for this GPL2.0+ derived code of StarFive loader?

I agree it should not make any difference what StarFive loader does
preceding the SPL phase for these filtering hints but we just don't know
for sure what the "SD boot" errata is, if it's an electrical layout
thing per-board or MMC initialization code incompatibility. I can see
how we might test MMC functionality to U-Boot SPL with adding these
filtering hints but the test methodology does not involve "SD boot" mode
of StarFive loader as that clobbers the configuration and I wouldn't
know if that's invalidating the testing methodology or not. If it is
specific to "SD boot" mode but then splat over the whole range of boards
untested that just does not inspire any confidence given the vendor
response and what is verifiable.

-E
-E

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-08-01 15:01 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20260306171939.84568-1-k0tran@altlinux.org>
2026-07-28 18:02 ` [PATCH] riscv: dts: starfive: jh7110-common: fix jh7110 SoC boot from SD-card Conor Dooley
2026-07-29  9:39   ` E Shattow
2026-07-29 10:59     ` Conor Dooley
2026-07-29 21:07       ` E Shattow
2026-07-30 17:31         ` Conor Dooley
2026-08-01 15:00           ` E Shattow
2026-07-29 11:21     ` Heinrich Schuchardt
2026-07-29 21:26       ` E Shattow

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox