Subversion Repositories HelenOS

Rev

Rev 4343 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4343 Rev 4344
Line 35... Line 35...
35
 */
35
 */
36
 
36
 
37
#ifndef KERN_Z8530_H_
37
#ifndef KERN_Z8530_H_
38
#define KERN_Z8530_H_
38
#define KERN_Z8530_H_
39
 
39
 
40
#include <console/chardev.h>
-
 
41
#include <ipc/irq.h>
-
 
42
#include <ddi/irq.h>
40
#include <ddi/irq.h>
-
 
41
#include <arch/types.h>
43
 
42
 
-
 
43
#define WR0 0
-
 
44
#define WR1 1
-
 
45
#define WR2 2
-
 
46
#define WR3 3
-
 
47
#define WR4 4
-
 
48
#define WR5 5
-
 
49
#define WR6 6
-
 
50
#define WR7 7
-
 
51
#define WR8 8
-
 
52
#define WR9 9
-
 
53
#define WR10    10
-
 
54
#define WR11    11
-
 
55
#define WR12    12
-
 
56
#define WR13    13
-
 
57
#define WR14    14
-
 
58
#define WR15    15
-
 
59
 
-
 
60
#define RR0 0
-
 
61
#define RR1 1
-
 
62
#define RR2 2
-
 
63
#define RR3 3
-
 
64
#define RR8 8
-
 
65
#define RR10    10
-
 
66
#define RR12    12
-
 
67
#define RR13    13
-
 
68
#define RR14    14
-
 
69
#define RR15    15
-
 
70
 
-
 
71
/** Reset pending TX interrupt. */
-
 
72
#define WR0_TX_IP_RST   (0x5 << 3)
-
 
73
#define WR0_ERR_RST (0x6 << 3)
-
 
74
 
-
 
75
/** Receive Interrupts Disabled. */
-
 
76
#define WR1_RID     (0x0 << 3)
-
 
77
/** Receive Interrupt on First Character or Special Condition. */
-
 
78
#define WR1_RIFCSC  (0x1 << 3)
-
 
79
/** Interrupt on All Receive Characters or Special Conditions. */
-
 
80
#define WR1_IARCSC  (0x2 << 3)
-
 
81
/** Receive Interrupt on Special Condition. */
-
 
82
#define WR1_RISC    (0x3 << 3)
-
 
83
/** Parity Is Special Condition. */
-
 
84
#define WR1_PISC    (0x1 << 2)
-
 
85
 
-
 
86
/** Rx Enable. */
-
 
87
#define WR3_RX_ENABLE   (0x1 << 0)
-
 
88
/** 8-bits per character. */
-
 
89
#define WR3_RX8BITSCH   (0x3 << 6)
-
 
90
 
-
 
91
/** Master Interrupt Enable. */
-
 
92
#define WR9_MIE     (0x1 << 3)
-
 
93
 
-
 
94
/** Receive Character Available. */
-
 
95
#define RR0_RCA     (0x1 << 0)
-
 
96
 
-
 
97
/** z8530's registers. */
-
 
98
struct z8530 {
-
 
99
    union {
-
 
100
        ioport8_t ctl_b;
-
 
101
        ioport8_t status_b;
-
 
102
    } __attribute__ ((packed));
-
 
103
    uint8_t pad1;
-
 
104
    ioport8_t data_b;
-
 
105
    uint8_t pad2;
-
 
106
    union {
-
 
107
        ioport8_t ctl_a;
-
 
108
        ioport8_t status_a;
-
 
109
    } __attribute__ ((packed));
-
 
110
    uint8_t pad3;
-
 
111
    ioport8_t data_a;
-
 
112
} __attribute__ ((packed));
44
extern bool z8530_belongs_to_kernel;
113
typedef struct z8530 z8530_t;
-
 
114
 
-
 
115
/** Structure representing the z8530 device. */
-
 
116
typedef struct {
-
 
117
    devno_t devno;
-
 
118
    irq_t irq;
-
 
119
    z8530_t *z8530;
-
 
120
} z8530_instance_t;
45
 
121
 
46
extern void z8530_init(devno_t, uintptr_t, inr_t, cir_t, void *);
122
extern bool z8530_init(z8530_t *, devno_t, inr_t, cir_t, void *);
47
extern void z8530_poll(void);
-
 
48
extern void z8530_grab(void);
-
 
49
extern void z8530_release(void);
-
 
50
extern void z8530_interrupt(void);
-
 
51
extern char z8530_key_read(chardev_t *);
-
 
52
extern irq_ownership_t z8530_claim(void *);
123
extern irq_ownership_t z8530_claim(irq_t *);
53
extern void z8530_irq_handler(irq_t *);
124
extern void z8530_irq_handler(irq_t *);
54
 
125
 
55
#endif
126
#endif
56
 
127
 
57
/** @}
128
/** @}