northbridge/amd/pi/00730F01/northbridge.c: remove unneeded global variables
Remove global variables `sblink` and `node_nums` and add function `get_node_nums()` which reads from PCI config once and returns a static variable. TEST=Boot Debian 11 on PC Engines apu3 Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com> Change-Id: I20a47f967093ef91355377c164656cabadc30fe6 Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/59870 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Held <felix-coreboot@felixheld.de> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
parent
b049eb2d99
commit
ca1e8aaec4
|
@ -29,8 +29,6 @@
|
||||||
#define PCIE_CAP_AER BIT(5)
|
#define PCIE_CAP_AER BIT(5)
|
||||||
#define PCIE_CAP_ACS BIT(6)
|
#define PCIE_CAP_ACS BIT(6)
|
||||||
|
|
||||||
static unsigned int node_nums;
|
|
||||||
static unsigned int sblink;
|
|
||||||
static struct device *__f0_dev[MAX_NODE_NUMS];
|
static struct device *__f0_dev[MAX_NODE_NUMS];
|
||||||
static struct device *__f1_dev[MAX_NODE_NUMS];
|
static struct device *__f1_dev[MAX_NODE_NUMS];
|
||||||
static struct device *__f2_dev[MAX_NODE_NUMS];
|
static struct device *__f2_dev[MAX_NODE_NUMS];
|
||||||
|
@ -42,6 +40,23 @@ static struct device *get_node_pci(u32 nodeid, u32 fn)
|
||||||
return pcidev_on_root(DEV_CDB + nodeid, fn);
|
return pcidev_on_root(DEV_CDB + nodeid, fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct device *get_mc_dev(void)
|
||||||
|
{
|
||||||
|
return pcidev_on_root(DEV_CDB, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static unsigned int get_node_nums(void)
|
||||||
|
{
|
||||||
|
static unsigned int node_nums;
|
||||||
|
|
||||||
|
if (node_nums)
|
||||||
|
return node_nums;
|
||||||
|
|
||||||
|
node_nums = ((pci_read_config32(get_mc_dev(), 0x60)>>4) & 7) + 1; //NodeCnt[2:0]
|
||||||
|
|
||||||
|
return node_nums;
|
||||||
|
}
|
||||||
|
|
||||||
static void get_fx_devs(void)
|
static void get_fx_devs(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -164,6 +179,9 @@ static void nb_read_resources(struct device *dev)
|
||||||
static void create_vga_resource(struct device *dev, unsigned int nodeid)
|
static void create_vga_resource(struct device *dev, unsigned int nodeid)
|
||||||
{
|
{
|
||||||
struct bus *link;
|
struct bus *link;
|
||||||
|
unsigned int sblink;
|
||||||
|
|
||||||
|
sblink = (pci_read_config32(get_mc_dev(), 0x64)>>8) & 7; // don't forget sublink1
|
||||||
|
|
||||||
/* find out which link the VGA card is connected,
|
/* find out which link the VGA card is connected,
|
||||||
* we only deal with the 'first' vga card */
|
* we only deal with the 'first' vga card */
|
||||||
|
@ -724,7 +742,7 @@ static struct hw_mem_hole_info get_hw_mem_hole_info(void)
|
||||||
int i;
|
int i;
|
||||||
mem_hole.hole_startk = CONFIG_HW_MEM_HOLE_SIZEK;
|
mem_hole.hole_startk = CONFIG_HW_MEM_HOLE_SIZEK;
|
||||||
mem_hole.node_id = -1;
|
mem_hole.node_id = -1;
|
||||||
for (i = 0; i < node_nums; i++) {
|
for (i = 0; i < get_node_nums(); i++) {
|
||||||
resource_t basek, limitk;
|
resource_t basek, limitk;
|
||||||
u32 hole;
|
u32 hole;
|
||||||
if (!get_dram_base_limit(i, &basek, &limitk))
|
if (!get_dram_base_limit(i, &basek, &limitk))
|
||||||
|
@ -742,7 +760,7 @@ static struct hw_mem_hole_info get_hw_mem_hole_info(void)
|
||||||
*/
|
*/
|
||||||
if (mem_hole.node_id == -1) {
|
if (mem_hole.node_id == -1) {
|
||||||
resource_t limitk_pri = 0;
|
resource_t limitk_pri = 0;
|
||||||
for (i = 0; i < node_nums; i++) {
|
for (i = 0; i < get_node_nums(); i++) {
|
||||||
resource_t base_k, limit_k;
|
resource_t base_k, limit_k;
|
||||||
if (!get_dram_base_limit(i, &base_k, &limit_k))
|
if (!get_dram_base_limit(i, &base_k, &limit_k))
|
||||||
continue; // no memory on this node
|
continue; // no memory on this node
|
||||||
|
@ -788,7 +806,7 @@ static void domain_read_resources(struct device *dev)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
idx = 0x10;
|
idx = 0x10;
|
||||||
for (i = 0; i < node_nums; i++) {
|
for (i = 0; i < get_node_nums(); i++) {
|
||||||
resource_t basek, limitk, sizek; // 4 1T
|
resource_t basek, limitk, sizek; // 4 1T
|
||||||
|
|
||||||
if (!get_dram_base_limit(i, &basek, &limitk))
|
if (!get_dram_base_limit(i, &basek, &limitk))
|
||||||
|
@ -856,24 +874,6 @@ static struct device_operations pci_domain_ops = {
|
||||||
.acpi_name = domain_acpi_name,
|
.acpi_name = domain_acpi_name,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void sysconf_init(struct device *dev) // first node
|
|
||||||
{
|
|
||||||
sblink = (pci_read_config32(dev, 0x64)>>8) & 7; // don't forget sublink1
|
|
||||||
node_nums = ((pci_read_config32(dev, 0x60)>>4) & 7) + 1; //NodeCnt[2:0]
|
|
||||||
}
|
|
||||||
|
|
||||||
static void cpu_bus_scan(struct device *dev)
|
|
||||||
{
|
|
||||||
struct device *dev_mc;
|
|
||||||
|
|
||||||
dev_mc = pcidev_on_root(DEV_CDB, 0);
|
|
||||||
if (!dev_mc) {
|
|
||||||
printk(BIOS_ERR, "0:%02x.0 not found", DEV_CDB);
|
|
||||||
die("");
|
|
||||||
}
|
|
||||||
sysconf_init(dev_mc);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void pre_mp_init(void)
|
static void pre_mp_init(void)
|
||||||
{
|
{
|
||||||
x86_setup_mtrrs_with_detect();
|
x86_setup_mtrrs_with_detect();
|
||||||
|
@ -906,7 +906,6 @@ static struct device_operations cpu_bus_ops = {
|
||||||
.read_resources = noop_read_resources,
|
.read_resources = noop_read_resources,
|
||||||
.set_resources = noop_set_resources,
|
.set_resources = noop_set_resources,
|
||||||
.init = mp_cpu_bus_init,
|
.init = mp_cpu_bus_init,
|
||||||
.scan_bus = cpu_bus_scan,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void root_complex_enable_dev(struct device *dev)
|
static void root_complex_enable_dev(struct device *dev)
|
||||||
|
|
Loading…
Reference in New Issue