xref: /linux-6.15/include/linux/mc6821.h (revision b2441318)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
21da177e4SLinus Torvalds #ifndef _MC6821_H_
31da177e4SLinus Torvalds #define _MC6821_H_
41da177e4SLinus Torvalds 
51da177e4SLinus Torvalds /*
61da177e4SLinus Torvalds  * This file describes the memery mapping of the MC6821 PIA.
71da177e4SLinus Torvalds  * The unions describe overlayed registers. Which of them is used is
81da177e4SLinus Torvalds  * determined by bit 2 of the corresponding control register.
91da177e4SLinus Torvalds  * this files expects the PIA_REG_PADWIDTH to be defined the numeric
101da177e4SLinus Torvalds  * value of the register spacing.
111da177e4SLinus Torvalds  *
121da177e4SLinus Torvalds  * Data came from MFC-31-Developer Kit (from Ralph Seidel,
131da177e4SLinus Torvalds  * [email protected]) and Motorola Data Sheet (from
141da177e4SLinus Torvalds  * Richard Hirst, [email protected])
151da177e4SLinus Torvalds  *
161da177e4SLinus Torvalds  * 6.11.95 copyright Joerg Dorchain ([email protected])
171da177e4SLinus Torvalds  *
181da177e4SLinus Torvalds  */
191da177e4SLinus Torvalds 
201da177e4SLinus Torvalds #ifndef PIA_REG_PADWIDTH
211da177e4SLinus Torvalds #define PIA_REG_PADWIDTH 255
221da177e4SLinus Torvalds #endif
231da177e4SLinus Torvalds 
241da177e4SLinus Torvalds struct pia {
251da177e4SLinus Torvalds 	union {
261da177e4SLinus Torvalds 		volatile u_char pra;
271da177e4SLinus Torvalds 		volatile u_char ddra;
281da177e4SLinus Torvalds 	} ua;
291da177e4SLinus Torvalds 	u_char pad1[PIA_REG_PADWIDTH];
301da177e4SLinus Torvalds 	volatile u_char cra;
311da177e4SLinus Torvalds 	u_char pad2[PIA_REG_PADWIDTH];
321da177e4SLinus Torvalds 	union {
331da177e4SLinus Torvalds 		volatile u_char prb;
341da177e4SLinus Torvalds 		volatile u_char ddrb;
351da177e4SLinus Torvalds 	} ub;
361da177e4SLinus Torvalds 	u_char pad3[PIA_REG_PADWIDTH];
371da177e4SLinus Torvalds 	volatile u_char crb;
381da177e4SLinus Torvalds 	u_char pad4[PIA_REG_PADWIDTH];
391da177e4SLinus Torvalds };
401da177e4SLinus Torvalds 
411da177e4SLinus Torvalds #define ppra ua.pra
421da177e4SLinus Torvalds #define pddra ua.ddra
431da177e4SLinus Torvalds #define pprb ub.prb
441da177e4SLinus Torvalds #define pddrb ub.ddrb
451da177e4SLinus Torvalds 
461da177e4SLinus Torvalds #define PIA_C1_ENABLE_IRQ (1<<0)
471da177e4SLinus Torvalds #define PIA_C1_LOW_TO_HIGH (1<<1)
481da177e4SLinus Torvalds #define PIA_DDR (1<<2)
491da177e4SLinus Torvalds #define PIA_IRQ2 (1<<6)
501da177e4SLinus Torvalds #define PIA_IRQ1 (1<<7)
511da177e4SLinus Torvalds 
521da177e4SLinus Torvalds #endif
53