[PATCH v2 2/6] ARM: at91: xload-mmc: add sama5d3_atmci_start_image() helper

Oleksij Rempel linux at rempel-privat.de
Fri Apr 23 16:54:56 BST 2021


Am 23.04.21 um 17:26 schrieb Ahmad Fatoum:
> Hello Oleksij,
>
> On 23.04.21 16:28, Oleksij Rempel wrote:
>> +void __noreturn sama5d3_atmci_start_image(u32 boot_src, unsigned int clock,
>> +					  unsigned int slot)
>> +{
>> +	void *buf = (void *)SAMA5_DDRCS;
>> +	const struct atmci_instance *instance;
>> +	struct pbl_bio bio;
>> +	const s8 *pin;
>> +	int ret;
>> +
>> +	ret = sama5_bootsource_instance(boot_src);
>> +	if (ret > ARRAY_SIZE(atmci_instances) - 1)
>> +		panic("Couldn't determine boot MCI instance\n");
>> +
>> +	instance = &atmci_instances[boot_src];
>
> What's the difference between slot and instance?

there are 3 MCI controllers (instances), each controller has multiple
slots. Usually slots board specific and configured over devicetree.

> Looks to me like you could drop slot in favor of instance and support
> booting from any controller with the same image?

Currently it is not supported. For some reasons i was not able to detect
boot source. In any case, this can be investigated separately if some
will need this functionality.

>> +
>> +	sama5d3_pmc_enable_periph_clock(SAMA5D2_ID_PIOD);
>> +	for (pin = instance->pins; *pin >= 0; pin++) {
>> +		at91_mux_pio3_pin(IOMEM(SAMA5D3_BASE_PIOD),
>> +					 pin_to_mask(*pin), instance->periph, 0);
>> +	}
>> +
>> +	sama5d3_pmc_enable_periph_clock(instance->id);
>> +
>> +	ret = at91_mci_bio_init(&bio, instance->base, clock, slot);
>> +	if (ret)
>> +		goto out_panic;
>> +
>> +	at91_fat_start_image(&bio, buf, SZ_16M, boot_src);
>> +
>> +out_panic:
>> +	panic("FAT chainloading failed\n");
>> +}
>>
>


--
Regards,
Oleksij



More information about the barebox mailing list