blob: c0bb2efa2711b615e471a18819061ac18cbee13a [file] [log] [blame]
Felix Held3f3eca92020-01-23 17:12:32 +01001/* SPDX-License-Identifier: GPL-2.0-or-later */
Zheng Bao9db833b2009-12-28 09:59:44 +00002
Stefan Reinauer24d1d4b2013-03-21 11:51:41 -07003#include <arch/io.h>
Kyösti Mälkki3855c012019-03-03 08:45:19 +02004#include <device/pnp_ops.h>
Edward O'Callaghanb8f05d42015-01-04 16:17:54 +11005#include <device/pnp.h>
6#include <stdint.h>
Ronald G. Minnich1cf26a82005-10-19 17:35:18 +00007#include "pc87417.h"
8
Edward O'Callaghanb8f05d42015-01-04 16:17:54 +11009void pc87417_disable_dev(pnp_devfn_t dev)
Ronald G. Minnich1cf26a82005-10-19 17:35:18 +000010{
11 pnp_set_logical_device(dev);
12 pnp_set_enable(dev, 0);
13}
Zheng Bao9db833b2009-12-28 09:59:44 +000014
Edward O'Callaghanb8f05d42015-01-04 16:17:54 +110015void pc87417_enable_dev(pnp_devfn_t dev)
Ronald G. Minnich1cf26a82005-10-19 17:35:18 +000016{
17 pnp_set_logical_device(dev);
Ronald G. Minnich1cf26a82005-10-19 17:35:18 +000018 pnp_set_enable(dev, 1);
19}
Zheng Bao9db833b2009-12-28 09:59:44 +000020
Edward O'Callaghanb8f05d42015-01-04 16:17:54 +110021void xbus_cfg(pnp_devfn_t dev)
Ronald G. Minnich1cf26a82005-10-19 17:35:18 +000022{
Edward O'Callaghanb8f05d42015-01-04 16:17:54 +110023 u8 i;
Uwe Hermanna69d9782010-11-15 19:35:14 +000024 u16 xbus_index;
Ronald G. Minnich1cf26a82005-10-19 17:35:18 +000025
26 pnp_set_logical_device(dev);
Uwe Hermanna69d9782010-11-15 19:35:14 +000027 /* Select proper BIOS size (4MB). */
28 pnp_write_config(dev, PC87417_XMEMCNF2,
29 (pnp_read_config(dev, PC87417_XMEMCNF2)) | 0x04);
Elyes HAOUAS9b54dfa2020-08-26 18:36:13 +020030 xbus_index = pnp_read_iobase(dev, PNP_IDX_IO0);
Ronald G. Minnich1cf26a82005-10-19 17:35:18 +000031
Uwe Hermanna69d9782010-11-15 19:35:14 +000032 /* Enable writes to devices attached to XCS0 (XBUS Chip Select 0). */
33 for (i = 0; i <= 0xf; i++)
34 outb((i << 4), xbus_index + PC87417_HAP0);
Zheng Bao9db833b2009-12-28 09:59:44 +000035}