3a9a72c220324b58178c160b2f4d6ff2168f5be9
[coreboot.git] / src / superio / renesas / m3885x / superio.c
1 /*
2  * This file is part of the coreboot project.
3  *
4  * Copyright (C) 2009 coresystems GmbH
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; version 2 of the License
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
18  */
19
20 #include <arch/io.h>
21 #include <device/device.h>
22 #include <device/pnp.h>
23 #include <console/console.h>
24 #include <device/smbus.h>
25 #include <string.h>
26 #include <bitops.h>
27 #include <uart8250.h>
28 #include <assert.h>
29 #include <stdlib.h>
30 #include "chip.h"
31
32 void set_kbc_ps2_mode(void);
33 void m3885_configure_multikey(void);
34
35 static void m3885x_init(device_t dev)
36 {
37         struct superio_renesas_m3885x_config *conf = dev->chip_info;
38
39         if (!dev->enabled)
40                 return;
41
42         printk_debug("Renesas M3885x: Initializing keyboard.\n");
43         set_kbc_ps2_mode();
44         pc_keyboard_init(&conf->keyboard);
45         m3885_configure_multikey();
46 }
47
48
49 static void m3885x_read_resources(device_t dev)
50 {
51         // nothing, but this function avoids an error on serial console.
52 }
53
54 static void m3885x_enable_resources(device_t dev)
55 {
56         // nothing, but this function avoids an error on serial console.
57 }
58
59 static struct device_operations ops = {
60         .init             = m3885x_init,
61         .read_resources   = m3885x_read_resources,
62         .enable_resources = m3885x_enable_resources
63 };
64
65 static struct pnp_info pnp_dev_info[] = {
66         { &ops, 0, 0, { 0, 0 }, }
67 };
68
69 static void enable_dev(device_t dev)
70 {
71         pnp_enable_devices(dev, &pnp_ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
72 }
73
74 struct chip_operations superio_renesas_m3885x_ops = {
75         CHIP_NAME("Renesas M3885x Super I/O")
76         .enable_dev = enable_dev,
77 };
78
79