Skip to content

Commit 0d5d489

Browse files
committed
RZG2 boot failure fix for boot with TFA which does not pass DT, and R-Car Gen4 PCIe controller driver alignment with Linux fixes.
2 parents f53fe90 + 19c292a commit 0d5d489

3 files changed

Lines changed: 9 additions & 4 deletions

File tree

arch/arm/mach-renesas/cpu_info-rzg2l.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ static const struct tfa_info *get_tfa_info(void)
3030
{
3131
void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
3232

33-
if (fdt_magic(atf_fdt_blob) == FDT_MAGIC) {
33+
if (atf_fdt_blob && fdt_magic(atf_fdt_blob) == FDT_MAGIC) {
3434
unsigned int i;
3535
for (i = 0; i < ARRAY_SIZE(tfa_info); i++) {
3636
if (!fdt_node_check_compatible(atf_fdt_blob, 0,

board/renesas/rzg2l/rzg2l.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ int board_fit_config_name_match(const char *name)
2222
{
2323
void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
2424

25-
if (fdt_magic(atf_fdt_blob) != FDT_MAGIC)
25+
if (!atf_fdt_blob || fdt_magic(atf_fdt_blob) != FDT_MAGIC)
2626
return -1;
2727

2828
if (is_rzg2l_board("renesas,r9a07g044l2"))
@@ -36,7 +36,7 @@ static void apply_atf_overlay(void *fdt_blob)
3636
{
3737
void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
3838

39-
if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
39+
if (atf_fdt_blob && fdt_magic(atf_fdt_blob) == FDT_MAGIC)
4040
fdt_overlay_apply_node(fdt_blob, 0, atf_fdt_blob, 0);
4141
}
4242

drivers/pci/pci-rcar-gen4.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ static int rcar_gen4_pcie_ltssm_control(struct rcar_gen4_pcie *rcar, bool enable
243243

244244
clrbits_le32(rcar->app_base + PCIERSTCTRL1, APP_HOLD_PHY_RST);
245245

246-
ret = readl_poll_timeout(rcar->phy_base + 0x0f8, val, !(val & BIT(18)), 10000);
246+
ret = readl_poll_timeout(rcar->phy_base + 0x0f8, val, val & BIT(18), 10000);
247247
if (ret < 0)
248248
return ret;
249249

@@ -306,6 +306,8 @@ static int rcar_gen4_pcie_common_init(struct rcar_gen4_pcie *rcar)
306306
if (ret)
307307
goto err_unprepare;
308308

309+
mdelay(1);
310+
309311
setbits_le32(rcar->app_base + PCIEMSR0,
310312
DEVICE_TYPE_RC |
311313
((rcar->num_lanes < 4) ? BIFUR_MOD_SET_ON : 0));
@@ -314,6 +316,9 @@ static int rcar_gen4_pcie_common_init(struct rcar_gen4_pcie *rcar)
314316
if (ret)
315317
goto err_unprepare;
316318

319+
reset_status(&rcar->pwr_rst);
320+
mdelay(1);
321+
317322
rcar_gen4_pcie_additional_common_init(rcar);
318323

319324
return 0;

0 commit comments

Comments
 (0)