[PATCH] pci: Enable dm_pci_map_bar() for 64-bit BARs

Philip Oberfichtner pro at denx.de
Fri Nov 24 13:09:22 CET 2023


Hi,

On Fri, Nov 24, 2023 at 10:15:20AM +0000, Moritz Fischer wrote:
> Allow dm_pci_map_bar() usage on systems with CONFIG_PCI_SYS_64BIT.
<snip>
>  
> +	/*
> +	 * This assumes that dm_pciauto_setup_device() will allocate
> +	 * a 64-bit address if CONFIG_SYS_PCI_64BIT is enabled and
> +	 * the device advertises that it supports it.
> +	 */

This patch is also useful if the previous bootstage, e.g. coreboot,
allocated a 64-bit address. In fact I recently did something very
similar (downstream), so

Reviewed-by: Philip Oberfichtner <pro at denx.de>


-- 
=====================================================================
DENX Software Engineering GmbH,        Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-22  Fax: +49-8142-66989-80   Email: pro at denx.de
=====================================================================

> +	if (IS_ENABLED(CONFIG_SYS_PCI_64BIT) &&
> +	    (bar_response & PCI_BASE_ADDRESS_MEM_TYPE_64)) {
> +		dm_pci_read_config32(udev, bar + 4, &bar_response);
> +		pci_bus_addr |= (pci_addr_t)bar_response << 32;
> +	}
> +
>  	if (~((pci_addr_t)0) - pci_bus_addr < offset)
>  		return NULL;
>  
> diff --git a/include/pci.h b/include/pci.h
> index 2f5eb30b83..0d1ac7b015 100644
> --- a/include/pci.h
> +++ b/include/pci.h
> @@ -1350,8 +1350,8 @@ pci_addr_t dm_pci_phys_to_bus(struct udevice *dev, phys_addr_t addr, size_t len,
>   *
>   * Looks up a base address register and finds the physical memory address
>   * that corresponds to it.
> - * Can be used for 32b BARs 0-5 on type 0 functions and for 32b BARs 0-1 on
> - * type 1 functions.
> + * Can be used for 32b/64b BARs 0-5 on type 0 functions and for 32b BARs 0-1
> + * on type 1 functions.
>   * Can also be used on type 0 functions that support Enhanced Allocation for
>   * 32b/64b BARs.  Note that duplicate BEI entries are not supported.
>   *
> -- 
> 2.43.0.rc1.413.gea7ed67945-goog
> 


More information about the U-Boot mailing list