/*
 * Copyright (c) 2018-2019, Intel Corporation
 * Copyright (c) 2010-2015, Wind River Systems, Inc.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/**
 * @file
 * @brief Board configuration macros for the Apollo Lake SoC
 *
 * This header file is used to specify and describe soc-level aspects for
 * the 'Apollo Lake' SoC.
 */

#ifndef __SOC_H_
#define __SOC_H_

#include <misc/util.h>

#ifndef _ASMLANGUAGE
#include <device.h>
#include <random/rand32.h>
#endif

#ifdef CONFIG_GPIO_INTEL_APL
#include "soc_gpio.h"
#endif

#ifdef CONFIG_PCI

/*
 * PCI definitions
 */
#define PCI_BUS_NUMBERS                         1

#define PCI_CTRL_ADDR_REG                       0xCF8
#define PCI_CTRL_DATA_REG                       0xCFC

/**
 * @brief Convert PCI interrupt PIN to IRQ
 *
 * BIOS should have assigned vectors linearly.
 * If not, override this in board configuration.
 */
#define pci_pin2irq(bus, dev, pin)              (pin)

/* I2C controllers */
#define I2C_DW_0_PCI_VENDOR_ID                  0x8086
#define I2C_DW_0_PCI_DEVICE_ID                  0x5aac
#define I2C_DW_0_PCI_CLASS                      0x11
#define I2C_DW_0_PCI_BUS                        0
#define I2C_DW_0_PCI_DEV                        16
#define I2C_DW_0_PCI_FUNCTION                   0
#define I2C_DW_0_PCI_BAR                        0

#define I2C_DW_1_PCI_VENDOR_ID                  0x8086
#define I2C_DW_1_PCI_DEVICE_ID                  0x5aae
#define I2C_DW_1_PCI_CLASS                      0x11
#define I2C_DW_1_PCI_BUS                        0
#define I2C_DW_1_PCI_DEV                        16
#define I2C_DW_1_PCI_FUNCTION                   1
#define I2C_DW_1_PCI_BAR                        0

#define I2C_DW_2_PCI_VENDOR_ID                  0x8086
#define I2C_DW_2_PCI_DEVICE_ID                  0x5ab0
#define I2C_DW_2_PCI_CLASS                      0x11
#define I2C_DW_2_PCI_BUS                        0
#define I2C_DW_2_PCI_DEV                        16
#define I2C_DW_2_PCI_FUNCTION                   2
#define I2C_DW_2_PCI_BAR                        0

#define I2C_DW_3_PCI_VENDOR_ID                  0x8086
#define I2C_DW_3_PCI_DEVICE_ID                  0x5ab2
#define I2C_DW_3_PCI_CLASS                      0x11
#define I2C_DW_3_PCI_BUS                        0
#define I2C_DW_3_PCI_DEV                        16
#define I2C_DW_3_PCI_FUNCTION                   3
#define I2C_DW_3_PCI_BAR                        0

#define I2C_DW_4_PCI_VENDOR_ID                  0x8086
#define I2C_DW_4_PCI_DEVICE_ID                  0x5ab4
#define I2C_DW_4_PCI_CLASS                      0x11
#define I2C_DW_4_PCI_BUS                        0
#define I2C_DW_4_PCI_DEV                        17
#define I2C_DW_4_PCI_FUNCTION                   0
#define I2C_DW_4_PCI_BAR                        0

#define I2C_DW_5_PCI_VENDOR_ID                  0x8086
#define I2C_DW_5_PCI_DEVICE_ID                  0x5ab6
#define I2C_DW_5_PCI_CLASS                      0x11
#define I2C_DW_5_PCI_BUS                        0
#define I2C_DW_5_PCI_DEV                        17
#define I2C_DW_5_PCI_FUNCTION                   1
#define I2C_DW_5_PCI_BAR                        0

#define I2C_DW_6_PCI_VENDOR_ID                  0x8086
#define I2C_DW_6_PCI_DEVICE_ID                  0x5ab8
#define I2C_DW_6_PCI_CLASS                      0x11
#define I2C_DW_6_PCI_BUS                        0
#define I2C_DW_6_PCI_DEV                        17
#define I2C_DW_6_PCI_FUNCTION                   2
#define I2C_DW_6_PCI_BAR                        0

#define I2C_DW_7_PCI_VENDOR_ID                  0x8086
#define I2C_DW_7_PCI_DEVICE_ID                  0x5aba
#define I2C_DW_7_PCI_CLASS                      0x11
#define I2C_DW_7_PCI_BUS                        0
#define I2C_DW_7_PCI_DEV                        17
#define I2C_DW_7_PCI_FUNCTION                   3
#define I2C_DW_7_PCI_BAR                        0

#endif /* CONFIG_PCI */

#endif /* __SOC_H_ */
