This is a general cleanup patch
[coreboot.git] / src / include / device / pnp.h
index 0d39fc16630b21d566de3cacc94d72fb45762a22..32e9c5eada336ed87657b969f19447b9de879e62 100644 (file)
@@ -1,58 +1,53 @@
 #ifndef DEVICE_PNP_H
 #define DEVICE_PNP_H
 
-static inline void pnp_write_config(unsigned char port, unsigned char value, unsigned char reg)
-{
-       outb(reg, port);
-       outb(value, port +1);
-}
-
-static inline unsigned char pnp_read_config(unsigned char port, unsigned char reg)
-{
-       outb(reg, port);
-       return inb(port +1);
-}
-
-static inline void pnp_set_logical_device(unsigned char port, int device)
-{
-       pnp_write_config(port, device, 0x07);
-}
-
-static inline void pnp_set_enable(unsigned char port, int enable)
-{
-       pnp_write_config(port, enable?0x1:0x0, 0x30);
-}
-
-static inline int pnp_read_enable(unsigned char port)
-{
-       return !!pnp_read_config(port, 0x30);
-}
-
-static inline void pnp_set_iobase0(unsigned char port, unsigned iobase)
-{
-       pnp_write_config(port, (iobase >> 8) & 0xff, 0x60);
-       pnp_write_config(port, iobase & 0xff, 0x61);
-}
-
-static inline void pnp_set_iobase1(unsigned char port, unsigned iobase)
-{
-       pnp_write_config(port, (iobase >> 8) & 0xff, 0x62);
-       pnp_write_config(port, iobase & 0xff, 0x63);
-}
-
-static inline void pnp_set_irq0(unsigned char port, unsigned irq)
-{
-       pnp_write_config(port, irq, 0x70);
-}
-
-static inline void pnp_set_irq1(unsigned char port, unsigned irq)
-{
-       pnp_write_config(port, irq, 0x72);
-}
-
-static inline void pnp_set_drq(unsigned char port, unsigned drq)
-{
-       pnp_write_config(port, drq & 0xff, 0x74);
-}
+#include <stdint.h>
+#include <device/device.h>
+#include <device/pnp_def.h>
+
+/* Primitive pnp resource manipulation */
+void    pnp_write_config(device_t dev, uint8_t reg, uint8_t value);
+uint8_t pnp_read_config(device_t dev, uint8_t reg);
+void    pnp_set_logical_device(device_t dev);
+void    pnp_set_enable(device_t dev, int enable);
+int     pnp_read_enable(device_t dev);
+void    pnp_set_iobase(device_t dev, unsigned index, unsigned iobase);
+void    pnp_set_irq(device_t dev, unsigned index, unsigned irq);
+void    pnp_set_drq(device_t dev, unsigned index, unsigned drq);
+
+/* PNP device operations */
+void pnp_read_resources(device_t dev);
+void pnp_set_resources(device_t dev);
+void pnp_enable_resources(device_t dev);
+void pnp_enable(device_t dev);
+
+extern struct device_operations pnp_ops;
+
+/* PNP helper operations */
+
+struct io_info {
+       unsigned mask, set;
+};
+
+struct pnp_info {
+       struct device_operations *ops;
+       unsigned function;
+       unsigned flags;
+#define PNP_IO0  0x001
+#define PNP_IO1  0x002
+#define PNP_IO2  0x004
+#define PNP_IO3  0x008
+#define PNP_IRQ0 0x010
+#define PNP_IRQ1 0x020
+#define PNP_DRQ0 0x040
+#define PNP_DRQ1 0x080
+#define PNP_EN   0x100
+#define PNP_MSC0 0x200
+#define PNP_MSC1 0x400
+       struct io_info io0, io1, io2, io3;
+};
+struct resource *pnp_get_resource(device_t dev, unsigned index);
+void pnp_enable_devices(struct device *dev, struct device_operations *ops,
+       unsigned functions, struct pnp_info *info);
 
 #endif /* DEVICE_PNP_H */