1b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare/****************************************************************************
2b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ****************************************************************************
3b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ***
4b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ***   This header was automatically generated from a Linux kernel header
5b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ***   of the same name, to make information necessary for userspace to
6b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ***   call into the kernel available to libc.  It contains only constants,
7b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ***   structures, and macros generated from the original header, and thus,
8b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ***   contains no copyrightable information.
9b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ***
10b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ****************************************************************************
11b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare ****************************************************************************/
12b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#ifndef _LINUX_MCA_H
13b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define _LINUX_MCA_H
14b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
15b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#include <linux/device.h>
16b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
17b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define MCA_bus 0
18b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
19b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearetypedef int (*MCA_ProcFn)(char* buf, int slot, void* dev);
20b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
21b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beareenum MCA_AdapterStatus {
22b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare MCA_ADAPTER_NORMAL = 0,
23b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare MCA_ADAPTER_NONE = 1,
24b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare MCA_ADAPTER_DISABLED = 2,
25b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare MCA_ADAPTER_ERROR = 3
26b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare};
27b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
28b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct mca_device {
29b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare u64 dma_mask;
30b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare int pos_id;
31b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare int slot;
32b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
33b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare int index;
34b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
35b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare int driver_loaded;
36b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
37b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned char pos[8];
38b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
39b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare short pos_register;
40b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
41b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare enum MCA_AdapterStatus status;
42b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct device dev;
43b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare char name[32];
44b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare};
45b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define to_mca_device(mdev) container_of(mdev, struct mca_device, dev)
46b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
47b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct mca_bus_accessor_functions {
48b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned char (*mca_read_pos)(struct mca_device *, int reg);
49b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void (*mca_write_pos)(struct mca_device *, int reg,
50b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare unsigned char byte);
51b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare int (*mca_transform_irq)(struct mca_device *, int irq);
52b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare int (*mca_transform_ioport)(struct mca_device *,
53b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare int region);
54b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void * (*mca_transform_memory)(struct mca_device *,
55b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void *memory);
56b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare};
57b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
58b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct mca_bus {
59b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare u64 default_dma_mask;
60b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare int number;
61b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct mca_bus_accessor_functions f;
62b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct device dev;
63b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare char name[32];
64b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare};
65b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define to_mca_bus(mdev) container_of(mdev, struct mca_bus, dev)
66b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
67b17fe090db1a34bac2c56bef93925fc893300e70Bruce Bearestruct mca_driver {
68b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare const short *id_table;
69b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare void *driver_data;
70b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare struct device_driver driver;
71b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare};
72b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#define to_mca_driver(mdriver) container_of(mdriver, struct mca_driver, driver)
73b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare
74b17fe090db1a34bac2c56bef93925fc893300e70Bruce Beare#endif
75