2 #include <console/console.h>
3 #include <device/device.h>
4 #include <device/pnp.h>
9 void pmh7_register_set_bit(int reg, int bit)
13 outb(reg, EC_LENOVO_PMH7_ADDR);
14 val = inb(EC_LENOVO_PMH7_DATA);
15 outb(reg, EC_LENOVO_PMH7_ADDR);
16 outb(val | (1 << bit), EC_LENOVO_PMH7_DATA);
19 void pmh7_register_clear_bit(int reg, int bit)
23 outb(reg, EC_LENOVO_PMH7_ADDR);
24 val = inb(EC_LENOVO_PMH7_DATA);
25 outb(reg, EC_LENOVO_PMH7_ADDR);
26 outb(val &= ~(1 << bit), EC_LENOVO_PMH7_DATA);
29 char pmh7_register_read(int reg)
31 outb(reg, EC_LENOVO_PMH7_ADDR);
32 return inb(EC_LENOVO_PMH7_DATA);
35 void pmh7_register_write(int reg, int val)
37 outb(reg, EC_LENOVO_PMH7_ADDR);
38 outb(val, EC_LENOVO_PMH7_DATA);
41 static void enable_dev(device_t dev)
43 struct resource *resource;
44 resource = new_resource(dev, EC_LENOVO_PMH7_INDEX);
45 resource->flags = IORESOURCE_IO | IORESOURCE_FIXED;
46 resource->base = EC_LENOVO_PMH7_BASE;
53 struct chip_operations ec_lenovo_pmh7_ops = {
54 CHIP_NAME("Lenovo Power Management Hardware Hub 7")
55 .enable_dev = enable_dev,