[PATCH v3 20/22] ppc: qemu: Create a virtual memory mapping of the platform bus

Vladimir Oltean olteanv at gmail.com
Sun Mar 14 09:19:38 CET 2021


On Sun, Mar 14, 2021 at 01:15:08PM +0800, Bin Meng wrote:
> QEMU ppce500 target can dynamically instantiate an eTSEC device on
> a platform bus if "-device eTSEC" is given to QEMU. It is presented
> as a "simple-bus" in the device tree, with an additional compatible
> string "qemu,platform".
> 
> Let's create a virtual memory mapping for it in misc_init_r(), in
> preparation to adding eTSEC support.
> 
> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
> 
> ---
> +static int platform_bus_map_region(ulong map_addr, phys_addr_t paddr,
> +				   phys_size_t size)

Function could have been void (minor detail).

> +{
> +	/* Align map_addr */
> +	map_addr += size - 1;
> +	map_addr &= ~(size - 1);
> +
> +	/* Map virtual memory for range */
> +	assert(!tlb_map_range(map_addr, paddr, size, TLB_MAP_IO));
> +
> +	return 0;
> +}
> +
>  int misc_init_r(void)
>  {
>  	struct udevice *dev;
> @@ -148,6 +163,22 @@ int misc_init_r(void)
>  	 */
>  	disable_tlb(find_tlb_idx((void *)CONFIG_SYS_TMPVIRT, 1));
>  
> +	/*
> +	 * Detect the presence of the platform bus node, and
> +	 * create a virtual memory mapping for it.
> +	 */
> +	for (ret = uclass_find_first_device(UCLASS_SIMPLE_BUS, &dev);
> +	     dev;
> +	     ret = uclass_find_next_device(&dev)) {
> +		if (device_is_compatible(dev, "qemu,platform")) {
> +			struct simple_bus_plat *plat = dev_get_uclass_plat(dev);
> +
> +			platform_bus_map_region(CONFIG_PLATFORM_BUS_MAP_ADDR,
> +						plat->target, plat->size);
> +			break;
> +		}
> +	}
> +
>  	return 0;
>  }

Reviewed-by: Vladimir Oltean <vladimir.oltean at nxp.com>


More information about the U-Boot mailing list