On Saturday 03 October 2020 09:17:35 Andre Heider wrote: > On 02/10/2020 12:49, Pali Rohár wrote: > > On Saturday 26 September 2020 11:09:59 Andre Heider wrote: > > > On 25/09/2020 09:46, Pali Rohár wrote: > > > > On Friday 11 September 2020 06:35:10 Andre Heider wrote: > > > ... > > > > > +#ifdef CONFIG_BOARD_LATE_INIT > > > > > +int board_late_init(void) > > > > > +{ > > > > > + bool ddr4, emmc; > > > > > + > > > > > + if (env_get("fdtfile")) > > > > > + return 0; > > > > > + > > > > > + if (!of_machine_is_compatible("globalscale,espressobin")) > > > > > + return 0; > > > > > + > > > > > + /* If the memory controller has been configured for DDR4, we're > > > > > running on v7 */ > > > > > + ddr4 = ((readl(A3700_CH0_MC_CTRL2_REG) >> > > > > > A3700_MC_CTRL2_SDRAM_TYPE_OFFS) > > > > > + & A3700_MC_CTRL2_SDRAM_TYPE_MASK) == > > > > > A3700_MC_CTRL2_SDRAM_TYPE_DDR4; > > > > > + > > > > > + emmc = of_machine_is_compatible("globalscale,espressobin-emmc"); > > > > > > > > Maybe stupid question, but are not we able to detect if eMMC is > > > > connected or not at runtime? That could simplify setup and avoid usage > > > > of additional special DTS file for eMMC in U-Boot. > > > > > > At some point I wondered about the same. > > > > > > IIRC armbian just enables it and uses one u-boot binary everywhere. A > > > non-existing chip won't get detected, so that shouldn't be a problem. > > > > > > But I think it has more to do with enabling/powering up hardware blocks, > > > which is not wanted or may even problematic. > > > > In U-Boot such functionality may be implemented in board_fix_fdt() > > function which allows U-Boot to modify its Device tree prior using it. > > > > You have already wrote code which is doing V5 vs V7 detection, so > > detecting eMMC is the last thing which is missing to have just one > > U-Boot DTS file and therefore only one U-Boot binary for Espressobin. > > That implies setting status=okay for the emmc node, which then powers up > that block. I don't know if that might be problematic. Can we just do that?
No. I mean to detect presence of eMMC in board_fix_fdt() and then set tatus=okay only if check passed. > The emmc detection would also add some delay to the boot process. > > At least it should be powered down if no emmc chip has been detected, but I > didn't check if that happens right now. > > Regards, > Andre