blob: d3b7d7661c86444f3354eca72aa792b4db4d2fde [file] [log] [blame]
Felix Held3f3eca92020-01-23 17:12:32 +01001/* SPDX-License-Identifier: GPL-2.0-or-later */
Zheng Bao8a281882011-03-27 16:33:09 +00002
efdesign9800c8c4a2011-07-20 12:37:58 -06003#include <arch/io.h>
Kyösti Mälkki3855c012019-03-03 08:45:19 +02004#include <device/pnp_ops.h>
efdesign9800c8c4a2011-07-20 12:37:58 -06005#include <device/pnp_def.h>
Zheng Bao8a281882011-03-27 16:33:09 +00006#include "wpcm450.h"
7
8static void wpcm450_pnp_set_logical_device(u8 dev, u16 port)
9{
10 outb(0x7, port);
11 outb(dev, port+1);
12}
13
14static void wpcm450_pnp_set_enable(u8 dev, u16 port, u8 enable)
15{
16 outb(0x30, port);
17 outb(enable, port+1);
18}
19
20static void wpcm450_pnp_set_iobase(u8 dev, u16 port, u8 index, u16 iobase)
21{
22 outb(index, port);
23 outb((iobase>>8)&0xFF, port+1);
24 outb(index+1, port);
25 outb(iobase&0xFF, port+1);
26}
27
efdesign9800c8c4a2011-07-20 12:37:58 -060028void wpcm450_enable_dev(u8 dev, u16 port, u16 iobase)
Zheng Bao8a281882011-03-27 16:33:09 +000029{
30 wpcm450_pnp_set_logical_device(dev, port);
31 wpcm450_pnp_set_enable(dev, port, 0);
32 if (iobase)
33 wpcm450_pnp_set_iobase(dev, port, PNP_IDX_IO0, iobase);
34 wpcm450_pnp_set_enable(dev, port, 1);
35}