nb/amd/pi/00730F01: Use generic allocation functions for PCI domain
Move the DRAM reporting to read_resoures function before the resources are being set. Use generic PCI domain resource allocation functions to read and set domain resources. Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com> Change-Id: I9605f7fad30eb093bddf9bc34e31dea9f5f846ec Reviewed-on: https://review.coreboot.org/c/coreboot/+/53955 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
This commit is contained in:
parent
824938f390
commit
f5d457dcc2
|
@ -59,13 +59,6 @@ static void get_fx_devs(void)
|
||||||
printk(BIOS_DEBUG, "fx_devs = 0x%x\n", fx_devs);
|
printk(BIOS_DEBUG, "fx_devs = 0x%x\n", fx_devs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 f1_read_config32(unsigned int reg)
|
|
||||||
{
|
|
||||||
if (fx_devs == 0)
|
|
||||||
get_fx_devs();
|
|
||||||
return pci_read_config32(__f1_dev[0], reg);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void f1_write_config32(unsigned int reg, u32 value)
|
static void f1_write_config32(unsigned int reg, u32 value)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -695,46 +688,6 @@ struct chip_operations northbridge_amd_pi_00730F01_ops = {
|
||||||
.final = fam16_finalize,
|
.final = fam16_finalize,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void domain_read_resources(struct device *dev)
|
|
||||||
{
|
|
||||||
unsigned int reg;
|
|
||||||
|
|
||||||
/* Find the already assigned resource pairs */
|
|
||||||
get_fx_devs();
|
|
||||||
for (reg = 0x80; reg <= 0xd8; reg+= 0x08) {
|
|
||||||
u32 base, limit;
|
|
||||||
base = f1_read_config32(reg);
|
|
||||||
limit = f1_read_config32(reg + 0x04);
|
|
||||||
/* Is this register allocated? */
|
|
||||||
if ((base & 3) != 0) {
|
|
||||||
unsigned int nodeid, reg_link;
|
|
||||||
struct device *reg_dev;
|
|
||||||
if (reg < 0xc0) { // mmio
|
|
||||||
nodeid = (limit & 0xf) + (base&0x30);
|
|
||||||
} else { // io
|
|
||||||
nodeid = (limit & 0xf) + ((base>>4)&0x30);
|
|
||||||
}
|
|
||||||
reg_link = (limit >> 4) & 7;
|
|
||||||
reg_dev = __f0_dev[nodeid];
|
|
||||||
if (reg_dev) {
|
|
||||||
/* Reserve the resource */
|
|
||||||
struct resource *res;
|
|
||||||
res = new_resource(reg_dev, IOINDEX(0x1000 + reg, reg_link));
|
|
||||||
if (res) {
|
|
||||||
res->flags = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* FIXME: do we need to check extend conf space?
|
|
||||||
I don't believe that much preset value */
|
|
||||||
pci_domain_read_resources(dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void domain_enable_resources(struct device *dev)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
#if CONFIG_HW_MEM_HOLE_SIZEK != 0
|
#if CONFIG_HW_MEM_HOLE_SIZEK != 0
|
||||||
struct hw_mem_hole_info {
|
struct hw_mem_hole_info {
|
||||||
unsigned int hole_startk;
|
unsigned int hole_startk;
|
||||||
|
@ -781,7 +734,7 @@ static struct hw_mem_hole_info get_hw_mem_hole_info(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void domain_set_resources(struct device *dev)
|
static void domain_read_resources(struct device *dev)
|
||||||
{
|
{
|
||||||
unsigned long mmio_basek;
|
unsigned long mmio_basek;
|
||||||
u32 pci_tolm;
|
u32 pci_tolm;
|
||||||
|
@ -791,6 +744,8 @@ static void domain_set_resources(struct device *dev)
|
||||||
struct hw_mem_hole_info mem_hole;
|
struct hw_mem_hole_info mem_hole;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
pci_domain_read_resources(dev);
|
||||||
|
|
||||||
pci_tolm = 0xffffffffUL;
|
pci_tolm = 0xffffffffUL;
|
||||||
for (link = dev->link_list; link; link = link->next) {
|
for (link = dev->link_list; link; link = link->next) {
|
||||||
pci_tolm = find_pci_tolm(link);
|
pci_tolm = find_pci_tolm(link);
|
||||||
|
@ -871,12 +826,6 @@ static void domain_set_resources(struct device *dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
add_uma_resource_below_tolm(dev, 7);
|
add_uma_resource_below_tolm(dev, 7);
|
||||||
|
|
||||||
for (link = dev->link_list; link; link = link->next) {
|
|
||||||
if (link->children) {
|
|
||||||
assign_resources(link);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *domain_acpi_name(const struct device *dev)
|
static const char *domain_acpi_name(const struct device *dev)
|
||||||
|
@ -889,8 +838,7 @@ static const char *domain_acpi_name(const struct device *dev)
|
||||||
|
|
||||||
static struct device_operations pci_domain_ops = {
|
static struct device_operations pci_domain_ops = {
|
||||||
.read_resources = domain_read_resources,
|
.read_resources = domain_read_resources,
|
||||||
.set_resources = domain_set_resources,
|
.set_resources = pci_domain_set_resources,
|
||||||
.enable_resources = domain_enable_resources,
|
|
||||||
.scan_bus = pci_domain_scan_bus,
|
.scan_bus = pci_domain_scan_bus,
|
||||||
.acpi_name = domain_acpi_name,
|
.acpi_name = domain_acpi_name,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue