soc/intel/graphics: Repurpose graphics_get_memory_base()
create SOC_INTEL_GFX_MEMBASE_OFFSET for platform to map graphic memory base if required, because it may vary by platfrom. BUG=b:216756721 TEST= Check default offset for existing platform and update platform specific offset in Kconfig under SoC directory. Change-Id: I6b1e34ada9b895dabcdc8116d2470e8831ed0a9e Signed-off-by: Ethan Tsao <ethan.tsao@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/61389 Reviewed-by: Subrata Banik <subratabanik@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
aae362c4ed
commit
646b6a0f6f
|
@ -19,4 +19,14 @@ config SOC_INTEL_DISABLE_IGD
|
||||||
where OS can only use one GPU hence need to disable IGD and don't
|
where OS can only use one GPU hence need to disable IGD and don't
|
||||||
need to run FSP GOP.
|
need to run FSP GOP.
|
||||||
|
|
||||||
|
config SOC_INTEL_GFX_FRAMEBUFFER_OFFSET
|
||||||
|
hex
|
||||||
|
default 0x0
|
||||||
|
help
|
||||||
|
PCI config offset 0x18 point to LMEMBAR and need to add GTT size to
|
||||||
|
reach at DSM which is referred here as SOC_INTEL_GFX_MEMBASE_OFFSET.
|
||||||
|
SoC that follow such design would override SOC_INTEL_GFX_FRAMEBUFFER_OFFSET
|
||||||
|
with GTT_SIZE value. On SoC platform where PCI config offset 0x18 points
|
||||||
|
to the GMADR directly can use the default value 0x0 without any override.
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -59,7 +59,7 @@ static void gma_init(struct device *const dev)
|
||||||
*/
|
*/
|
||||||
if (CONFIG(RUN_FSP_GOP)) {
|
if (CONFIG(RUN_FSP_GOP)) {
|
||||||
const struct soc_intel_common_config *config = chip_get_common_soc_structure();
|
const struct soc_intel_common_config *config = chip_get_common_soc_structure();
|
||||||
fsp_report_framebuffer_info(graphics_get_memory_base(),
|
fsp_report_framebuffer_info(graphics_get_framebuffer_address(),
|
||||||
config->panel_orientation);
|
config->panel_orientation);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -107,21 +107,20 @@ static uintptr_t graphics_get_bar(struct device *dev, unsigned long index)
|
||||||
return gm_res->base;
|
return gm_res->base;
|
||||||
}
|
}
|
||||||
|
|
||||||
uintptr_t graphics_get_memory_base(void)
|
uintptr_t graphics_get_framebuffer_address(void)
|
||||||
{
|
{
|
||||||
uintptr_t memory_base;
|
uintptr_t memory_base;
|
||||||
struct device *dev = pcidev_path_on_root(SA_DEVFN_IGD);
|
struct device *dev = pcidev_path_on_root(SA_DEVFN_IGD);
|
||||||
|
|
||||||
if (is_graphics_disabled(dev))
|
if (is_graphics_disabled(dev))
|
||||||
return 0;
|
return 0;
|
||||||
/*
|
|
||||||
* GFX PCI config space offset 0x18 know as Graphics
|
|
||||||
* Memory Range Address (GMADR)
|
|
||||||
*/
|
|
||||||
memory_base = graphics_get_bar(dev, PCI_BASE_ADDRESS_2);
|
memory_base = graphics_get_bar(dev, PCI_BASE_ADDRESS_2);
|
||||||
if (!memory_base)
|
if (!memory_base)
|
||||||
die_with_post_code(POST_HW_INIT_FAILURE,
|
die_with_post_code(POST_HW_INIT_FAILURE,
|
||||||
"GMADR is not programmed!");
|
"Graphic memory bar2 is not programmed!");
|
||||||
|
|
||||||
|
memory_base += CONFIG_SOC_INTEL_GFX_FRAMEBUFFER_OFFSET;
|
||||||
|
|
||||||
return memory_base;
|
return memory_base;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,6 @@ intel_igd_get_controller_info(const struct device *device);
|
||||||
uint32_t graphics_gtt_read(unsigned long reg);
|
uint32_t graphics_gtt_read(unsigned long reg);
|
||||||
void graphics_gtt_write(unsigned long reg, uint32_t data);
|
void graphics_gtt_write(unsigned long reg, uint32_t data);
|
||||||
void graphics_gtt_rmw(unsigned long reg, uint32_t andmask, uint32_t ormask);
|
void graphics_gtt_rmw(unsigned long reg, uint32_t andmask, uint32_t ormask);
|
||||||
uintptr_t graphics_get_memory_base(void);
|
uintptr_t graphics_get_framebuffer_address(void);
|
||||||
|
|
||||||
#endif /* SOC_INTEL_COMMON_BLOCK_GRAPHICS_H */
|
#endif /* SOC_INTEL_COMMON_BLOCK_GRAPHICS_H */
|
||||||
|
|
Loading…
Reference in New Issue