aboutsummaryrefslogtreecommitdiff
path: root/src/soc/intel/fsp_baytrail/lpss.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/fsp_baytrail/lpss.c')
-rw-r--r--src/soc/intel/fsp_baytrail/lpss.c152
1 files changed, 0 insertions, 152 deletions
diff --git a/src/soc/intel/fsp_baytrail/lpss.c b/src/soc/intel/fsp_baytrail/lpss.c
deleted file mode 100644
index 2ad6fb3804..0000000000
--- a/src/soc/intel/fsp_baytrail/lpss.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2013 Google Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#include <stdint.h>
-#include <cbmem.h>
-#include <console/console.h>
-#include <device/device.h>
-#include <device/pci.h>
-#include <device/pci_ids.h>
-#include <reg_script.h>
-
-#include <soc/iosf.h>
-#include <soc/nvs.h>
-#include <soc/pci_devs.h>
-#include <soc/ramstage.h>
-
-#include "chip.h"
-
-static void dev_enable_acpi_mode(struct device *dev, int iosf_reg, int nvs_index)
-{
- struct reg_script ops[] = {
- /* Disable PCI interrupt, enable Memory and Bus Master */
- REG_PCI_OR32(PCI_COMMAND,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | (1<<10)),
- /* Enable ACPI mode */
- REG_IOSF_OR(IOSF_PORT_LPSS, iosf_reg,
- LPSS_CTL_PCI_CFG_DIS | LPSS_CTL_ACPI_INT_EN),
- REG_SCRIPT_END
- };
- struct resource *bar;
- global_nvs_t *gnvs;
-
- /* Find ACPI NVS to update BARs */
- gnvs = (global_nvs_t *)cbmem_find(CBMEM_ID_ACPI_GNVS);
- if (!gnvs) {
- printk(BIOS_ERR, "Unable to locate Global NVS\n");
- return;
- }
-
- /* Save BAR0 and BAR1 to ACPI NVS */
- bar = find_resource(dev, PCI_BASE_ADDRESS_0);
- if (bar)
- gnvs->dev.lpss_bar0[nvs_index] = (u32)bar->base;
-
- bar = find_resource(dev, PCI_BASE_ADDRESS_1);
- if (bar)
- gnvs->dev.lpss_bar1[nvs_index] = (u32)bar->base;
-
- /* Device is enabled in ACPI mode */
- gnvs->dev.lpss_en[nvs_index] = 1;
-
- /* Put device in ACPI mode */
- reg_script_run_on_dev(dev, ops);
-}
-
-static void dev_enable_snoop_and_pm(struct device *dev, int iosf_reg)
-{
- struct reg_script ops[] = {
- REG_IOSF_RMW(IOSF_PORT_LPSS, iosf_reg,
- ~(LPSS_CTL_SNOOP | LPSS_CTL_NOSNOOP),
- LPSS_CTL_SNOOP | LPSS_CTL_PM_CAP_PRSNT),
- REG_SCRIPT_END,
- };
-
- reg_script_run_on_dev(dev, ops);
-}
-
-static void dev_ctl_reg(struct device *dev, int *iosf_reg, int *nvs_index)
-{
- *iosf_reg = -1;
- *nvs_index = -1;
-#define SET_IOSF_REG(name_) \
- case PCI_DEVFN(name_ ## _DEV, name_ ## _FUNC): \
- *iosf_reg = LPSS_ ## name_ ## _CTL; \
- *nvs_index = LPSS_NVS_ ## name_
-
- switch (dev->path.pci.devfn) {
- SET_IOSF_REG(SIO_DMA1);
- break;
- SET_IOSF_REG(SIO_DMA2);
- break;
- SET_IOSF_REG(PWM1);
- break;
- SET_IOSF_REG(PWM2);
- break;
- SET_IOSF_REG(HSUART1);
- break;
- SET_IOSF_REG(HSUART2);
- break;
- SET_IOSF_REG(SPI);
- break;
- }
-}
-
-static void lpss_init(struct device *dev)
-{
- struct soc_intel_fsp_baytrail_config *config = config_of(dev);
- int iosf_reg, nvs_index;
-
- dev_ctl_reg(dev, &iosf_reg, &nvs_index);
-
- if (iosf_reg < 0) {
- int slot = PCI_SLOT(dev->path.pci.devfn);
- int func = PCI_FUNC(dev->path.pci.devfn);
- printk(BIOS_DEBUG, "Could not find iosf_reg for %02x.%01x\n",
- slot, func);
- return;
- }
- dev_enable_snoop_and_pm(dev, iosf_reg);
-
- if (config->PcdLpssSioEnablePciMode == LPSS_PCI_MODE_DISABLE)
- dev_enable_acpi_mode(dev, iosf_reg, nvs_index);
-}
-
-static struct device_operations device_ops = {
- .read_resources = pci_dev_read_resources,
- .set_resources = pci_dev_set_resources,
- .enable_resources = pci_dev_enable_resources,
- .init = lpss_init,
- .enable = NULL,
- .scan_bus = NULL,
- .ops_pci = &soc_pci_ops,
-};
-
-static const unsigned short pci_device_ids[] = {
- SIO_DMA1_DEVID,
- SIO_DMA2_DEVID,
- PWM1_DEVID,
- PWM2_DEVID,
- HSUART1_DEVID,
- HSUART2_DEVID,
- SPI_DEVID,
- 0,
-};
-
-static const struct pci_driver southcluster __pci_driver = {
- .ops = &device_ops,
- .vendor = PCI_VENDOR_ID_INTEL,
- .devices = pci_device_ids,
-};