blob: 9d85717d63c6a5b1e7910245cf002f634469b7a6 [file] [log] [blame]
Angel Pons4b429832020-04-02 23:48:50 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Damien Zammit62477932015-05-03 21:34:38 +10002
Furquan Shaikh76cedd22020-05-02 10:24:23 -07003#include <acpi/acpigen.h>
4#include <acpi/acpi.h>
Angel Pons69356482020-08-03 15:16:12 +02005#include <commonlib/helpers.h>
Damien Zammit62477932015-05-03 21:34:38 +10006#include <device/device.h>
Damien Zammit62477932015-05-03 21:34:38 +10007#include <northbridge/intel/pineview/pineview.h>
8#include <types.h>
9
10unsigned long acpi_fill_mcfg(unsigned long current)
11{
Angel Ponsaaf5b092020-08-03 14:02:21 +020012 u32 length, pciexbar;
Damien Zammit62477932015-05-03 21:34:38 +100013
Angel Pons653d8712020-08-03 15:40:54 +020014 if (!decode_pcie_bar(&pciexbar, &length))
Damien Zammit62477932015-05-03 21:34:38 +100015 return current;
16
Angel Pons69356482020-08-03 15:16:12 +020017 const int max_buses = length / MiB;
Angel Pons39ff7032020-03-09 21:39:44 +010018 current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *) current, pciexbar, 0, 0,
19 max_buses - 1);
Damien Zammit62477932015-05-03 21:34:38 +100020
21 return current;
22}