Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4667 | trochtova | 1 | #ifndef ISA_H |
2 | #define ISA_H |
||
3 | |||
4 | #include <adt/list.h> |
||
5 | #include <stdio.h> |
||
6 | #include <stdlib.h> |
||
7 | #include <string.h> |
||
8 | |||
9 | int isa_bus_init(); |
||
10 | |||
11 | struct bridge_to_isa; |
||
12 | struct bridge_to_isa_ops; |
||
13 | struct isa_drv_ops; |
||
14 | struct isa_drv; |
||
15 | |||
16 | typedef struct bridge_to_isa bridge_to_isa_t; |
||
17 | typedef struct bridge_to_isa_ops bridge_to_isa_ops_t; |
||
18 | typedef struct isa_drv_ops isa_drv_ops_t; |
||
19 | typedef struct isa_drv isa_drv_t; |
||
20 | |||
21 | |||
22 | struct isa_drv_ops { |
||
23 | void (*probe)(bridge_to_isa_t *parent); |
||
24 | }; |
||
25 | |||
26 | struct isa_drv { |
||
27 | const char *name; |
||
28 | link_t link; |
||
29 | isa_drv_ops_t *ops; |
||
30 | }; |
||
31 | |||
32 | struct bridge_to_isa { |
||
33 | link_t link; |
||
34 | void *data; |
||
35 | bridge_to_isa_ops_t *ops; |
||
36 | }; |
||
37 | |||
38 | struct bridge_to_isa_ops { |
||
39 | void * (*absolutize)(void *phys_addr); |
||
40 | }; |
||
41 | |||
42 | static inline bridge_to_isa_t * isa_alloc_bridge() |
||
43 | { |
||
44 | bridge_to_isa_t *bridge = (bridge_to_isa_t *)malloc(sizeof(bridge_to_isa_t)); |
||
45 | link_initialize(&bridge->link); |
||
46 | bridge->data = NULL; |
||
47 | bridge->ops = NULL; |
||
48 | return bridge; |
||
49 | } |
||
50 | |||
51 | static inline void isa_init_bridge(bridge_to_isa_t *bridge, bridge_to_isa_ops_t *ops, void *data) |
||
52 | { |
||
53 | bridge->data = data; |
||
54 | bridge->ops = ops; |
||
55 | } |
||
56 | |||
57 | void isa_register_bridge(bridge_to_isa_t *bridge); |
||
58 | void isa_register_driver(isa_drv_t *drv); |
||
59 | |||
60 | #endif |