[coreboot] southbridge/intel/i82801gx/i82801gx.h

Antonius Riko antonius.riko at gmail.com
Sat Oct 15 10:24:03 CEST 2016


Everyone,

I tried to port I946GZ and following from 945 example on intel mainboard,

and I got error when compiling :

build/romstage/mainboard/intel/i946gz/romstage.o: In function
`mainboard_romstage_entry':
/home/bianchi/coreboot/src/mainboard/intel/i946gz/romstage.c:214: undefined
reference to `southbridge_detect_s3_resume'
/home/bianchi/coreboot/src/mainboard/intel/i946gz/romstage.c:217: undefined
reference to `enable_smbus'
build/romstage/northbridge/intel/i945/raminit.o: In function
`spd_read_byte':
/home/bianchi/coreboot/src/northbridge/intel/i945/raminit.c:62: undefined
reference to `smbus_read_byte'
/home/bianchi/coreboot/src/northbridge/intel/i945/raminit.c:62: undefined
reference to `smbus_read_byte'
/home/bianchi/coreboot/src/northbridge/intel/i945/raminit.c:62: undefined
reference to `smbus_read_byte'
/home/bianchi/coreboot/src/northbridge/intel/i945/raminit.c:62: undefined
reference to `smbus_read_byte'
/home/bianchi/coreboot/src/northbridge/intel/i945/raminit.c:62: undefined
reference to `smbus_read_byte'
build/romstage/northbridge/intel/i945/raminit.o:/home/bianchi/coreboot/src/northbridge/intel/i945/raminit.c:62:
more undefined references to `smbus_read_byte' follow
src/arch/x86/Makefile.inc:264: recipe for target
'build/cbfs/fallback/romstage.debug' failed
make: *** [build/cbfs/fallback/romstage.debug] Error 1

When I patch it with :

#include <southbridge/intel/i82801gx/early_lpc.c>
#include <southbridge/intel/i82801gx/early_smbus.c>
#include <southbridge/intel/i82801gx/lpc.c>

the errors are gone but I got :
   GEN        generated/bootblock.ld
    CP         bootblock/arch/x86/bootblock.ld
    LINK       cbfs/fallback/bootblock.debug
    OBJCOPY    cbfs/fallback/bootblock.elf
    OBJCOPY    bootblock.raw.bin
    CC         romstage/mainboard/intel/i946gz/romstage.o
In file included from src/mainboard/intel/i946gz/romstage.c:44:0:
src/southbridge/intel/i82801gx/lpc.c: In function 'i82801gx_enable_ioapic':
src/southbridge/intel/i82801gx/lpc.c:52:20: error: passing argument 1 of
'pcie_write_config8' makes integer from pointer without a cast
[-Werror=int-conversion]
  pci_write_config8(dev, ACPI_CNTL, ACPI_EN);
                    ^
In file included from src/arch/x86/include/arch/io.h:247:0,
                 from src/mainboard/intel/i946gz/romstage.c:20:
src/arch/x86/include/arch/pci_mmio_cfg.h:49:6: note: expected 'pci_devfn_t
{aka unsigned int}' but argument is of type 'struct device *'
 void pcie_write_config8(pci_devfn_t dev, unsigned int where, u8 value)
      ^
In file included from src/mainboard/intel/i946gz/romstage.c:44:0:
src/southbridge/intel/i82801gx/lpc.c: In function
'i82801gx_enable_serial_irqs':
src/southbridge/intel/i82801gx/lpc.c:66:20: error: passing argument 1 of
'pcie_write_config8' makes integer from pointer without a cast
[-Werror=int-conversion]
  pci_write_config8(dev, SERIRQ_CNTL,
                    ^
In file included from src/arch/x86/include/arch/io.h:247:0,
                 from src/mainboard/intel/i946gz/romstage.c:20:
src/arch/x86/include/arch/pci_mmio_cfg.h:49:6: note: expected 'pci_devfn_t
{aka unsigned int}' but argument is of type 'struct device *'
 void pcie_write_config8(pci_devfn_t dev, unsigned int where, u8 value)
      ^
In file included from src/mainboard/intel/i946gz/romstage.c:44:0:
src/southbridge/intel/i82801gx/lpc.c: In function 'i82801gx_pirq_init':
src/southbridge/intel/i82801gx/lpc.c:95:24: error: invalid type argument of
'->' (have 'device_t {aka unsigned int}')
  config_t *config = dev->chip_info;
                        ^
src/southbridge/intel/i82801gx/lpc.c:97:43: error: dereferencing pointer to
incomplete type 'config_t {aka struct southbridge_intel_i82801gx_config}'
  pci_write_config8(dev, PIRQA_ROUT, config->pirqa_routing);
                                           ^
src/southbridge/intel/i82801gx/lpc.c:111:17: error: 'all_devices'
undeclared (first use in this function)
  for (irq_dev = all_devices; irq_dev; irq_dev = irq_dev->next) {
                 ^
src/southbridge/intel/i82801gx/lpc.c:111:17: note: each undeclared
identifier is reported only once for each function it appears in
src/southbridge/intel/i82801gx/lpc.c:111:56: error: invalid type argument
of '->' (have 'device_t {aka unsigned int}')
  for (irq_dev = all_devices; irq_dev; irq_dev = irq_dev->next) {
                                                        ^
src/southbridge/intel/i82801gx/lpc.c:114:15: error: invalid type argument
of '->' (have 'device_t {aka unsigned int}')
   if (!irq_dev->enabled || irq_dev->path.type != DEVICE_PATH_PCI)
               ^
src/southbridge/intel/i82801gx/lpc.c:114:35: error: invalid type argument
of '->' (have 'device_t {aka unsigned int}')
   if (!irq_dev->enabled || irq_dev->path.type != DEVICE_PATH_PCI)
                                   ^
src/southbridge/intel/i82801gx/lpc.c: In function 'i82801gx_gpi_routing':
src/southbridge/intel/i82801gx/lpc.c:136:24: error: invalid type argument
of '->' (have 'device_t {aka unsigned int}')
  config_t *config = dev->chip_info;
                        ^
src/southbridge/intel/i82801gx/lpc.c: In function 'i82801gx_power_options':
src/southbridge/intel/i82801gx/lpc.c:169:24: error: invalid type argument
of '->' (have 'device_t {aka unsigned int}')
  config_t *config = dev->chip_info;
                        ^
src/southbridge/intel/i82801gx/lpc.c: In function 'i82801gx_rtc_init':
src/southbridge/intel/i82801gx/lpc.c:287:26: error: passing argument 1 of
'pcie_read_config8' makes integer from pointer without a cast
[-Werror=int-conversion]
  reg8 = pci_read_config8(dev, GEN_PMCON_3);
                          ^
In file included from src/arch/x86/include/arch/io.h:247:0,
                 from src/mainboard/intel/i946gz/romstage.c:20:
src/arch/x86/include/arch/pci_mmio_cfg.h:25:4: note: expected 'pci_devfn_t
{aka unsigned int}' but argument is of type 'struct device *'
 u8 pcie_read_config8(pci_devfn_t dev, unsigned int where)
    ^
In file included from src/mainboard/intel/i946gz/romstage.c:44:0:
src/southbridge/intel/i82801gx/lpc.c:291:21: error: passing argument 1 of
'pcie_write_config8' makes integer from pointer without a cast
[-Werror=int-conversion]
   pci_write_config8(dev, GEN_PMCON_3, reg8);
                     ^
In file included from src/arch/x86/include/arch/io.h:247:0,
                 from src/mainboard/intel/i946gz/romstage.c:20:
src/arch/x86/include/arch/pci_mmio_cfg.h:49:6: note: expected 'pci_devfn_t
{aka unsigned int}' but argument is of type 'struct device *'
 void pcie_write_config8(pci_devfn_t dev, unsigned int where, u8 value)
      ^
In file included from src/mainboard/intel/i946gz/romstage.c:44:0:
src/southbridge/intel/i82801gx/lpc.c: In function 'i82801gx_fixups':
src/southbridge/intel/i82801gx/lpc.c:402:20: error: passing argument 1 of
'pcie_write_config8' makes integer from pointer without a cast
[-Werror=int-conversion]
  pci_write_config8(dev, 0xad, 0x3);
                    ^
In file included from src/arch/x86/include/arch/io.h:247:0,
                 from src/mainboard/intel/i946gz/romstage.c:20:
src/arch/x86/include/arch/pci_mmio_cfg.h:49:6: note: expected 'pci_devfn_t
{aka unsigned int}' but argument is of type 'struct device *'
 void pcie_write_config8(pci_devfn_t dev, unsigned int where, u8 value)
      ^
In file included from src/mainboard/intel/i946gz/romstage.c:44:0:
src/southbridge/intel/i82801gx/lpc.c: In function 'lpc_init':
src/southbridge/intel/i82801gx/lpc.c:410:21: error: passing argument 1 of
'pcie_write_config16' makes integer from pointer without a cast
[-Werror=int-conversion]
  pci_write_config16(dev, PCI_COMMAND, 0x000f);
                     ^
In file included from src/arch/x86/include/arch/io.h:247:0,
                 from src/mainboard/intel/i946gz/romstage.c:20:
src/arch/x86/include/arch/pci_mmio_cfg.h:57:6: note: expected 'pci_devfn_t
{aka unsigned int}' but argument is of type 'struct device *'
 void pcie_write_config16(pci_devfn_t dev, unsigned int where, u16 value)
      ^
In file included from src/mainboard/intel/i946gz/romstage.c:44:0:
src/southbridge/intel/i82801gx/lpc.c:418:21: error: passing argument 1 of
'i82801gx_pirq_init' makes integer from pointer without a cast
[-Werror=int-conversion]
  i82801gx_pirq_init(dev);
                     ^
src/southbridge/intel/i82801gx/lpc.c:91:13: note: expected 'device_t {aka
unsigned int}' but argument is of type 'struct device *'
 static void i82801gx_pirq_init(device_t dev)
             ^
src/southbridge/intel/i82801gx/lpc.c:421:25: error: passing argument 1 of
'i82801gx_power_options' makes integer from pointer without a cast
[-Werror=int-conversion]
  i82801gx_power_options(dev);
                         ^
src/southbridge/intel/i82801gx/lpc.c:162:13: note: expected 'device_t {aka
unsigned int}' but argument is of type 'struct device *'
 static void i82801gx_power_options(device_t dev)
             ^
src/southbridge/intel/i82801gx/lpc.c:424:29: error: passing argument 1 of
'i82801gx_configure_cstates' makes integer from pointer without a cast
[-Werror=int-conversion]
  i82801gx_configure_cstates(dev);
                             ^
src/southbridge/intel/i82801gx/lpc.c:266:13: note: expected 'device_t {aka
unsigned int}' but argument is of type 'struct device *'
 static void i82801gx_configure_cstates(device_t dev)
             ^
src/southbridge/intel/i82801gx/lpc.c: At top level:
src/southbridge/intel/i82801gx/lpc.c:484:6: error: no previous prototype
for 'acpi_fill_fadt' [-Werror=missing-prototypes]
 void acpi_fill_fadt(acpi_fadt_t * fadt)
      ^
src/southbridge/intel/i82801gx/lpc.c: In function 'acpi_fill_fadt':
src/southbridge/intel/i82801gx/lpc.c:486:17: error: initialization makes
integer from pointer without a cast [-Werror=int-conversion]
  device_t dev = dev_find_slot(0, PCI_DEVFN(0x1f,0));
                 ^
src/southbridge/intel/i82801gx/lpc.c:487:22: error: invalid type argument
of '->' (have 'device_t {aka unsigned int}')
  config_t *chip = dev->chip_info;
                      ^
src/southbridge/intel/i82801gx/lpc.c: In function
'i82801gx_lpc_read_resources':
src/southbridge/intel/i82801gx/lpc.c:611:2: error: implicit declaration of
function 'pci_dev_read_resources' [-Werror=implicit-function-declaration]
  pci_dev_read_resources(dev);
  ^
src/southbridge/intel/i82801gx/lpc.c:614:21: error: passing argument 1 of
'new_resource' makes pointer from integer without a cast
[-Werror=int-conversion]
  res = new_resource(dev, IOINDEX_SUBTRACTIVE(io_index++, 0));
                     ^
In file included from src/include/device/device.h:14:0,
                 from src/arch/x86/include/arch/acpi.h:54,
                 from src/mainboard/intel/i946gz/romstage.c:25:
src/include/device/resource.h:61:25: note: expected 'struct device *' but
argument is of type 'device_t {aka unsigned int}'
 extern struct resource *new_resource(struct device * dev, unsigned index);
                         ^
In file included from src/mainboard/intel/i946gz/romstage.c:44:0:
src/southbridge/intel/i82801gx/lpc.c:620:21: error: passing argument 1 of
'new_resource' makes pointer from integer without a cast
[-Werror=int-conversion]
  res = new_resource(dev, IOINDEX_SUBTRACTIVE(io_index++, 0));
                     ^
In file included from src/include/device/device.h:14:0,
                 from src/arch/x86/include/arch/acpi.h:54,
                 from src/mainboard/intel/i946gz/romstage.c:25:
src/include/device/resource.h:61:25: note: expected 'struct device *' but
argument is of type 'device_t {aka unsigned int}'
 extern struct resource *new_resource(struct device * dev, unsigned index);
                         ^
In file included from src/mainboard/intel/i946gz/romstage.c:44:0:
src/southbridge/intel/i82801gx/lpc.c:626:21: error: passing argument 1 of
'new_resource' makes pointer from integer without a cast
[-Werror=int-conversion]
  res = new_resource(dev, 3); /* IOAPIC */
                     ^
In file included from src/include/device/device.h:14:0,
                 from src/arch/x86/include/arch/acpi.h:54,
                 from src/mainboard/intel/i946gz/romstage.c:25:
src/include/device/resource.h:61:25: note: expected 'struct device *' but
argument is of type 'device_t {aka unsigned int}'
 extern struct resource *new_resource(struct device * dev, unsigned index);
                         ^
In file included from src/mainboard/intel/i946gz/romstage.c:44:0:
src/southbridge/intel/i82801gx/lpc.c:637:23: error: passing argument 1 of
'new_resource' makes pointer from integer without a cast
[-Werror=int-conversion]
    res = new_resource(dev, IOINDEX_SUBTRACTIVE(io_index++, 0));
                       ^
In file included from src/include/device/device.h:14:0,
                 from src/arch/x86/include/arch/acpi.h:54,
                 from src/mainboard/intel/i946gz/romstage.c:25:
src/include/device/resource.h:61:25: note: expected 'struct device *' but
argument is of type 'device_t {aka unsigned int}'
 extern struct resource *new_resource(struct device * dev, unsigned index);
                         ^
In file included from src/mainboard/intel/i946gz/romstage.c:44:0:
src/southbridge/intel/i82801gx/lpc.c: At top level:
src/southbridge/intel/i82801gx/lpc.c:684:15: error: variable 'pci_ops' has
initializer but incomplete type
 static struct pci_operations pci_ops = {
               ^
src/southbridge/intel/i82801gx/lpc.c:685:2: error: unknown field
'set_subsystem' specified in initializer
  .set_subsystem = set_subsystem,
  ^
src/southbridge/intel/i82801gx/lpc.c:685:19: error: excess elements in
struct initializer [-Werror]
  .set_subsystem = set_subsystem,
                   ^
src/southbridge/intel/i82801gx/lpc.c:685:19: note: (near initialization for
'pci_ops')
src/southbridge/intel/i82801gx/lpc.c:688:15: error: variable 'device_ops'
has initializer but incomplete type
 static struct device_operations device_ops = {
               ^
src/southbridge/intel/i82801gx/lpc.c:689:2: error: unknown field
'read_resources' specified in initializer
  .read_resources  = i82801gx_lpc_read_resources,
  ^
src/southbridge/intel/i82801gx/lpc.c:689:21: error: excess elements in
struct initializer [-Werror]
  .read_resources  = i82801gx_lpc_read_resources,
                     ^
src/southbridge/intel/i82801gx/lpc.c:689:21: note: (near initialization for
'device_ops')
src/southbridge/intel/i82801gx/lpc.c:690:2: error: unknown field
'set_resources' specified in initializer
  .set_resources  = pci_dev_set_resources,
  ^
src/southbridge/intel/i82801gx/lpc.c:690:20: error: 'pci_dev_set_resources'
undeclared here (not in a function)
  .set_resources  = pci_dev_set_resources,
                    ^
src/southbridge/intel/i82801gx/lpc.c:690:20: error: excess elements in
struct initializer [-Werror]
src/southbridge/intel/i82801gx/lpc.c:690:20: note: (near initialization for
'device_ops')
src/southbridge/intel/i82801gx/lpc.c:691:2: error: unknown field
'enable_resources' specified in initializer
  .enable_resources = pci_dev_enable_resources,
  ^
src/southbridge/intel/i82801gx/lpc.c:691:22: error:
'pci_dev_enable_resources' undeclared here (not in a function)
  .enable_resources = pci_dev_enable_resources,
                      ^
src/southbridge/intel/i82801gx/lpc.c:691:22: error: excess elements in
struct initializer [-Werror]
src/southbridge/intel/i82801gx/lpc.c:691:22: note: (near initialization for
'device_ops')
src/southbridge/intel/i82801gx/lpc.c:692:2: error: unknown field
'acpi_inject_dsdt_generator' specified in initializer
  .acpi_inject_dsdt_generator = southbridge_inject_dsdt,
  ^
src/southbridge/intel/i82801gx/lpc.c:692:32: error: excess elements in
struct initializer [-Werror]
  .acpi_inject_dsdt_generator = southbridge_inject_dsdt,
                                ^
src/southbridge/intel/i82801gx/lpc.c:692:32: note: (near initialization for
'device_ops')
src/southbridge/intel/i82801gx/lpc.c:693:2: error: unknown field
'write_acpi_tables' specified in initializer
  .write_acpi_tables      = acpi_write_hpet,
  ^
src/southbridge/intel/i82801gx/lpc.c:693:28: error: 'acpi_write_hpet'
undeclared here (not in a function)
  .write_acpi_tables      = acpi_write_hpet,
                            ^
src/southbridge/intel/i82801gx/lpc.c:693:28: error: excess elements in
struct initializer [-Werror]
src/southbridge/intel/i82801gx/lpc.c:693:28: note: (near initialization for
'device_ops')
src/southbridge/intel/i82801gx/lpc.c:694:2: error: unknown field 'init'
specified in initializer
  .init   = lpc_init,
  ^
src/southbridge/intel/i82801gx/lpc.c:694:12: error: excess elements in
struct initializer [-Werror]
  .init   = lpc_init,
            ^
src/southbridge/intel/i82801gx/lpc.c:694:12: note: (near initialization for
'device_ops')
src/southbridge/intel/i82801gx/lpc.c:695:2: error: unknown field 'scan_bus'
specified in initializer
  .scan_bus  = scan_lpc_bus,
  ^
src/southbridge/intel/i82801gx/lpc.c:695:15: error: 'scan_lpc_bus'
undeclared here (not in a function)
  .scan_bus  = scan_lpc_bus,
               ^
src/southbridge/intel/i82801gx/lpc.c:695:15: error: excess elements in
struct initializer [-Werror]
src/southbridge/intel/i82801gx/lpc.c:695:15: note: (near initialization for
'device_ops')
src/southbridge/intel/i82801gx/lpc.c:696:2: error: unknown field 'enable'
specified in initializer
  .enable   = i82801gx_enable,
  ^
src/southbridge/intel/i82801gx/lpc.c:696:14: error: 'i82801gx_enable'
undeclared here (not in a function)
  .enable   = i82801gx_enable,
              ^
src/southbridge/intel/i82801gx/lpc.c:696:14: error: excess elements in
struct initializer [-Werror]
src/southbridge/intel/i82801gx/lpc.c:696:14: note: (near initialization for
'device_ops')
src/southbridge/intel/i82801gx/lpc.c:697:2: error: unknown field 'ops_pci'
specified in initializer
  .ops_pci  = &pci_ops,
  ^
src/southbridge/intel/i82801gx/lpc.c:697:14: error: excess elements in
struct initializer [-Werror]
  .ops_pci  = &pci_ops,
              ^
src/southbridge/intel/i82801gx/lpc.c:697:14: note: (near initialization for
'device_ops')

Is there any way fixing it ?

Thanks
Rick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20161015/9b914fd7/attachment.html>


More information about the coreboot mailing list