blob: 315b704fb35e829f142c25a4f6e4f9bef8f0a21c [file] [log] [blame]
Angel Ponsf5627e82020-04-05 15:46:52 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Lijian Zhaoa5158492017-08-29 14:37:17 -07002
Lijian Zhaoa5158492017-08-29 14:37:17 -07003#include <device/device.h>
4#include <device/pci.h>
Lijian Zhaoa5158492017-08-29 14:37:17 -07005#include <pc80/isa-dma.h>
6#include <pc80/i8259.h>
7#include <arch/io.h>
Kyösti Mälkkif1b58b72019-03-01 13:43:02 +02008#include <device/pci_ops.h>
Lijian Zhaoa5158492017-08-29 14:37:17 -07009#include <arch/ioapic.h>
10#include <intelblocks/itss.h>
11#include <intelblocks/lpc_lib.h>
Lijian Zhaoa5158492017-08-29 14:37:17 -070012#include <soc/iomap.h>
Subrata Banik2a244c62018-11-14 15:45:39 +053013#include <soc/irq.h>
Lijian Zhao92580212018-04-13 16:34:56 -070014#include <soc/lpc.h>
Lijian Zhaoa5158492017-08-29 14:37:17 -070015#include <soc/pci_devs.h>
16#include <soc/pcr_ids.h>
17
Elyes HAOUASbf0970e2019-03-21 11:10:03 +010018#include "chip.h"
19
Patrick Georgi40b8f012021-05-12 14:52:12 +020020void soc_get_gen_io_dec_range(uint32_t gen_io_dec[LPC_NUM_GENERIC_IO_RANGES])
Lijian Zhao9b50a572017-12-21 13:40:07 -080021{
Furquan Shaikhe4f7e042020-12-23 14:11:00 -080022 const config_t *config = config_of_soc();
Lijian Zhao9b50a572017-12-21 13:40:07 -080023
24 gen_io_dec[0] = config->gen1_dec;
25 gen_io_dec[1] = config->gen2_dec;
26 gen_io_dec[2] = config->gen3_dec;
27 gen_io_dec[3] = config->gen4_dec;
28}
29
Lijian Zhao9b50a572017-12-21 13:40:07 -080030#if ENV_RAMSTAGE
Subrata Banik88852062018-01-10 10:51:50 +053031void lpc_soc_init(struct device *dev)
Lijian Zhaoa5158492017-08-29 14:37:17 -070032{
Jeremy Soller1af482c92019-02-20 16:39:55 -070033 const config_t *config = dev->chip_info;
34
Lijian Zhaoa5158492017-08-29 14:37:17 -070035 /* Legacy initialization */
36 isa_dma_init();
37 pch_misc_init();
38
39 /* Enable CLKRUN_EN for power gating LPC */
40 lpc_enable_pci_clk_cntl();
41
42 /* Set LPC Serial IRQ mode */
Jeremy Soller1af482c92019-02-20 16:39:55 -070043 lpc_set_serirq_mode(config->serirq_mode);
Lijian Zhaoa5158492017-08-29 14:37:17 -070044
45 /* Interrupt configuration */
Subrata Banik1366e442020-09-29 13:55:50 +053046 pch_enable_ioapic();
Subrata Banik78463a72020-09-29 14:28:09 +053047 pch_pirq_init();
Lijian Zhaoa5158492017-08-29 14:37:17 -070048 setup_i8259();
49 i8259_configure_irq_trigger(9, 1);
Lijian Zhaoa5158492017-08-29 14:37:17 -070050}
Subrata Banik71a51382018-01-10 11:01:32 +053051
Lijian Zhao9b50a572017-12-21 13:40:07 -080052#endif