Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 84542838 authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds
Browse files

[PATCH] rio cleanups



INKERNEL is always defined
HOST is never defined
therefore RTA is also never defined

Strip the relevant garbage out of the headers on this basis.

Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 47ba87e0
Loading
Loading
Loading
Loading
+0 −142
Original line number Diff line number Diff line
@@ -40,148 +40,6 @@
#endif
#define _cirrus_h 1

#ifdef RTA
#define	TO_UART	RX
#define TO_DRIVER TX
#endif

#ifdef HOST
#define	TO_UART	TX
#define TO_DRIVER RX
#endif
#ifdef RTA
/* Miscellaneous defines for CIRRUS addresses and related logic for
   interrupts etc.
*/
#define	MAP(a)		((short *)(cirrus_base + (a)))
#define outp(a,b)	(*MAP (a) =(b))
#define inp(a)		((*MAP (a)) & 0xff)
#define	CIRRUS_FIRST	(short*)0x7300
#define	CIRRUS_SECOND	(short*)0x7200
#define	CIRRUS_THIRD	(short*)0x7100
#define	CIRRUS_FOURTH	(short*)0x7000
#define	PORTS_ON_CIRRUS	4
#define	CIRRUS_FIFO_SIZE	12
#define	SPACE		0x20
#define	TAB		0x09
#define	LINE_FEED	0x0a
#define	CARRIAGE_RETURN	0x0d
#define	BACKSPACE	0x08
#define	SPACES_IN_TABS	8
#define	SEND_ESCAPE	0x00
#define START_BREAK	0x81
#define	TIMER_TICK	0x82
#define STOP_BREAK	0x83
#define BASE(a) ((a) < 4 ? (short*)CIRRUS_FIRST : ((a) < 8 ? (short *)CIRRUS_SECOND : ((a) < 12 ? (short*)CIRRUS_THIRD : (short *)CIRRUS_FOURTH)))
#define txack1	((short *)0x7104)
#define rxack1	((short *)0x7102)
#define mdack1  ((short *)0x7106)
#define txack2  ((short *)0x7006)
#define rxack2	((short *)0x7004)
#define mdack2  ((short *)0x7100)
#define int_latch       ((short *) 0x7800)
#define int_status      ((short *) 0x7c00)
#define tx1_pending     0x20
#define rx1_pending     0x10
#define md1_pending     0x40
#define tx2_pending     0x02
#define rx2_pending     0x01
#define md2_pending     0x40
#define module1_bits	0x07
#define module1_modern	0x08
#define module2_bits	0x70
#define module2_modern	0x80
#define module_blank	0xf
#define rs232_d25	0x0
#define	rs232_rj45	0x1
#define rs422_d25	0x3
#define parallel	0x5

#define	CLK0	0x00
#define CLK1	0x01
#define CLK2	0x02
#define CLK3	0x03
#define CLK4	0x04

#define CIRRUS_REVC    0x42
#define CIRRUS_REVE    0x44

#define	TURNON	1
#define TURNOFF 0

/* The list of CIRRUS registers. 
   NB. These registers are relative values on 8 bit boundaries whereas
   on the RTA's the CIRRUS registers are on word boundaries. Use pointer
   arithmetic (short *) to obtain the real addresses required */
#define ccr	0x05		/* Channel Command Register     */
#define ier	0x06		/* Interrupt Enable Register    */
#define cor1	0x08		/* Channel Option Register 1    */
#define cor2	0x09		/* Channel Option Register 2    */
#define cor3	0x0a		/* Channel Option Register 3    */
#define cor4	0x1e		/* Channel Option Register 4    */
#define	cor5	0x1f		/* Channel Option Register 5    */

#define ccsr	0x0b		/* Channel Control Status Register */
#define rdcr	0x0e		/* Receive Data Count Register  */
#define tdcr	0x12		/* Transmit Data Count Register */
#define mcor1	0x15		/* Modem Change Option Register 1 */
#define mcor2	0x16		/* Modem Change Option Regsiter 2 */

#define livr	0x18		/* Local Interrupt Vector Register */
#define schr1	0x1a		/* Special Character Register 1 */
#define schr2	0x1b		/* Special Character Register 2 */
#define schr3	0x1c		/* Special Character Register 3 */
#define schr4	0x1d		/* Special Character Register 4 */

#define rtr	0x20		/* Receive Timer Register */
#define rtpr	0x21		/* Receive Timeout Period Register */
#define lnc	0x24		/* Lnext character */

#define rivr	0x43		/* Receive Interrupt Vector Register    */
#define tivr	0x42		/* Transmit Interrupt Vector Register   */
#define mivr	0x41		/* Modem Interrupt Vector Register      */
#define gfrcr	0x40		/* Global Firmware Revision code Reg    */
#define ricr	0x44		/* Receive Interrupting Channel Reg     */
#define ticr	0x45		/* Transmit Interrupting Channel Reg    */
#define micr	0x46		/* Modem Interrupting Channel Register  */

#define gcr	0x4b		/* Global configuration register */
#define misr    0x4c		/* Modem interrupt status register */

#define rbusr	0x59
#define tbusr	0x5a
#define mbusr	0x5b

#define eoir	0x60		/* End Of Interrupt Register */
#define rdsr	0x62		/* Receive Data / Status Register */
#define tdr	0x63		/* Transmit Data Register */
#define svrr	0x67		/* Service Request Register */

#define car	0x68		/* Channel Access Register */
#define mir	0x69		/* Modem Interrupt Register */
#define tir	0x6a		/* Transmit Interrupt Register */
#define rir	0x6b		/* Receive Interrupt Register */
#define msvr1	0x6c		/* Modem Signal Value Register 1 */
#define msvr2	0x6d		/* Modem Signal Value Register 2 */
#define psvr	0x6f		/* Printer Signal Value Register */

#define tbpr	0x72		/* Transmit Baud Rate Period Register */
#define tcor	0x76		/* Transmit Clock Option Register */

#define rbpr	0x78		/* Receive Baud Rate Period Register */
#define rber	0x7a		/* Receive Baud Rate Extension Register */
#define rcor	0x7c		/* Receive Clock Option Register */
#define ppr	0x7e		/* Prescalar Period Register    */

/* Misc registers used for forcing the 1400 out of its reset woes */
#define airl	0x6d
#define airm	0x6e
#define airh	0x6f
#define btcr	0x66
#define mtcr	0x6c
#define tber	0x74

#endif				/* #ifdef RTA */


/* Bit fields for particular registers */
+0 −7
Original line number Diff line number Diff line
@@ -45,13 +45,6 @@ static char *_rio_defaults_h_sccs = "@(#)defaults.h 1.1";
#define MILLISECOND           (int) (1000/64)	/* 15.625 low ticks */
#define SECOND                (int) 15625	/* Low priority ticks */

#ifdef RTA
#define RX_LIMIT       (ushort) 3
#endif
#ifdef HOST
#define RX_LIMIT       (ushort) 1
#endif

#define LINK_TIMEOUT          (int) (POLL_PERIOD / 2)


+0 −34
Original line number Diff line number Diff line
@@ -102,30 +102,14 @@
/*
** LED stuff
*/
#if defined(RTA)
#define LED_OFF            ((ushort) 0)	/* LED off */
#define LED_RED            ((ushort) 1)	/* LED Red */
#define LED_GREEN          ((ushort) 2)	/* LED Green */
#define LED_ORANGE         ((ushort) 4)	/* LED Orange */
#define LED_1TO8_OPEN      ((ushort) 1)	/* Port 1->8 LED on */
#define LED_9TO16_OPEN     ((ushort) 2)	/* Port 9->16 LED on */
#define LED_SET_COLOUR(colour)	(link->led = (colour))
#define LED_OR_COLOUR(colour)	(link->led |= (colour))
#define LED_TIMEOUT(time)    (link->led_timeout = RioTimePlus(RioTime(),(time)))
#else
#define LED_SET_COLOUR(colour)
#define LED_OR_COLOUR(colour)
#define LED_TIMEOUT(time)
#endif				/* RTA */

struct LPB {
	WORD link_number;	/* Link Number */
	Channel_ptr in_ch;	/* Link In Channel */
	Channel_ptr out_ch;	/* Link Out Channel */
#ifdef RTA
	uchar stat_led;		/* Port open leds */
	uchar led;		/* True, light led! */
#endif
	BYTE attached_serial[4];	/* Attached serial number */
	BYTE attached_host_serial[4];
	/* Serial number of Host who
@@ -144,30 +128,12 @@ struct LPB {
	WORD WaitNoBoot;	/* Secs to hold off booting */
	PKT_ptr add_packet_list;	/* Add packets to here */
	PKT_ptr remove_packet_list;	/* Send packets from here */
#ifdef RTA
#ifdef DCIRRUS
#define    QBUFS_PER_REDIRECT (4 / PKTS_PER_BUFFER + 1)
#else
#define    QBUFS_PER_REDIRECT (8 / PKTS_PER_BUFFER + 1)
#endif
	PKT_ptr_ptr rd_add;	/* Add a new Packet here */
	Q_BUF_ptr rd_add_qb;	/* Pointer to the add Q buf */
	PKT_ptr_ptr rd_add_st_qbb;	/* Pointer to start of the Q's buf */
	PKT_ptr_ptr rd_add_end_qbb;	/* Pointer to the end of the Q's buf */
	PKT_ptr_ptr rd_remove;	/* Remove a Packet here */
	Q_BUF_ptr rd_remove_qb;	/* Pointer to the remove Q buf */
	PKT_ptr_ptr rd_remove_st_qbb;	/* Pointer to the start of the Q buf */
	PKT_ptr_ptr rd_remove_end_qbb;	/* Pointer to the end of the Q buf */
	ushort pkts_in_q;	/* Packets in queue */
#endif

	Channel_ptr lrt_fail_chan;	/* Lrt's failure channel */
	Channel_ptr ltt_fail_chan;	/* Ltt's failure channel */

#if defined (HOST) || defined (INKERNEL)
	/* RUP structure for HOST to driver communications */
	struct RUP rup;
#endif
	struct RUP link_rup;	/* RUP for the link (POLL,
				   topology etc.) */
	WORD attached_link;	/* Number of attached link */
+0 −140
Original line number Diff line number Diff line
@@ -44,8 +44,6 @@ static char *_rio_list_h_sccs = "@(#)list.h 1.9";

#define PKT_IN_USE    0x1

#ifdef INKERNEL

#define ZERO_PTR (ushort) 0x8000
#define	CaD	PortP->Caddr

@@ -54,143 +52,5 @@ static char *_rio_list_h_sccs = "@(#)list.h 1.9";
** to by the TxAdd pointer has PKT_IN_USE clear in its address.
*/

#ifndef linux
#if defined( MIPS ) && !defined( MIPSEISA )
/* May the shoes of the Devil dance on your grave for creating this */
#define   can_add_transmit(PacketP,PortP) \
          (!((uint)(PacketP = (struct PKT *)RIO_PTR(CaD,RINDW(PortP->TxAdd))) \
          & (PKT_IN_USE<<2)))

#elif  defined(MIPSEISA) || defined(nx6000) || \
       defined(drs6000)  || defined(UWsparc)

#define   can_add_transmit(PacketP,PortP) \
          (!((uint)(PacketP = (struct PKT *)RIO_PTR(CaD,RINDW(PortP->TxAdd))) \
	  & PKT_IN_USE))

#else
#define   can_add_transmit(PacketP,PortP) \
          (!((uint)(PacketP = (struct PKT *)RIO_PTR(CaD,*PortP->TxAdd)) \
	  & PKT_IN_USE))
#endif

/*
** To add a packet to the queue, you set the PKT_IN_USE bit in the address,
** and then move the TxAdd pointer along one position to point to the next
** packet pointer. You must wrap the pointer from the end back to the start.
*/
#if defined(MIPS) || defined(nx6000) || defined(drs6000) || defined(UWsparc)
#   define add_transmit(PortP)  \
	WINDW(PortP->TxAdd,RINDW(PortP->TxAdd) | PKT_IN_USE);\
	if (PortP->TxAdd == PortP->TxEnd)\
	    PortP->TxAdd = PortP->TxStart;\
	else\
	    PortP->TxAdd++;\
	WWORD(PortP->PhbP->tx_add , RIO_OFF(CaD,PortP->TxAdd));
#elif defined(AIX)
#   define add_transmit(PortP)  \
	{\
	    register ushort *TxAddP = (ushort *)RIO_PTR(Cad,PortP->TxAddO);\
	    WINDW( TxAddP, RINDW( TxAddP ) | PKT_IN_USE );\
	    if (PortP->TxAddO == PortP->TxEndO )\
		PortP->TxAddO = PortP->TxStartO;\
	    else\
		PortP->TxAddO += sizeof(ushort);\
	    WWORD(((PHB *)RIO_PTR(Cad,PortP->PhbO))->tx_add , PortP->TxAddO );\
	}
#else
#   define add_transmit(PortP)  \
	*PortP->TxAdd |= PKT_IN_USE;\
	if (PortP->TxAdd == PortP->TxEnd)\
	    PortP->TxAdd = PortP->TxStart;\
	else\
	    PortP->TxAdd++;\
	PortP->PhbP->tx_add = RIO_OFF(CaD,PortP->TxAdd);
#endif

/*
** can_remove_receive( PacketP, PortP ) returns non-zero if PKT_IN_USE is set
** for the next packet on the queue. It will also set PacketP to point to the
** relevant packet, [having cleared the PKT_IN_USE bit]. If PKT_IN_USE is clear,
** then can_remove_receive() returns 0.
*/
#if defined(MIPS) || defined(nx6000) || defined(drs6000) || defined(UWsparc)
#   define can_remove_receive(PacketP,PortP) \
	((RINDW(PortP->RxRemove) & PKT_IN_USE) ? \
	(PacketP=(struct PKT *)RIO_PTR(CaD,(RINDW(PortP->RxRemove) & ~PKT_IN_USE))):0)
#elif defined(AIX)
#   define can_remove_receive(PacketP,PortP) \
	((RINDW((ushort *)RIO_PTR(Cad,PortP->RxRemoveO)) & PKT_IN_USE) ? \
	(PacketP=(struct PKT *)RIO_PTR(Cad,RINDW((ushort *)RIO_PTR(Cad,PortP->RxRemoveO)) & ~PKT_IN_USE)):0)
#else
#   define can_remove_receive(PacketP,PortP) \
	((*PortP->RxRemove & PKT_IN_USE) ? \
	(PacketP=(struct PKT *)RIO_PTR(CaD,(*PortP->RxRemove & ~PKT_IN_USE))):0)
#endif


/*
** Will God see it within his heart to forgive us for this thing that
** we have created? To remove a packet from the receive queue you clear
** its PKT_IN_USE bit, and then bump the pointers. Once the pointers
** get to the end, they must be wrapped back to the start.
*/
#if defined(MIPS) || defined(nx6000) || defined(drs6000) || defined(UWsparc)
#   define remove_receive(PortP) \
	WINDW(PortP->RxRemove, (RINDW(PortP->RxRemove) & ~PKT_IN_USE));\
	if (PortP->RxRemove == PortP->RxEnd)\
	    PortP->RxRemove = PortP->RxStart;\
	else\
	    PortP->RxRemove++;\
	WWORD(PortP->PhbP->rx_remove , RIO_OFF(CaD,PortP->RxRemove));
#elif defined(AIX)
#   define remove_receive(PortP) \
    {\
        register ushort *RxRemoveP = (ushort *)RIO_PTR(Cad,PortP->RxRemoveO);\
        WINDW( RxRemoveP, RINDW( RxRemoveP ) & ~PKT_IN_USE );\
        if (PortP->RxRemoveO == PortP->RxEndO)\
            PortP->RxRemoveO = PortP->RxStartO;\
        else\
            PortP->RxRemoveO += sizeof(ushort);\
        WWORD(((PHB *)RIO_PTR(Cad,PortP->PhbO))->rx_remove, PortP->RxRemoveO );\
    }
#else
#   define remove_receive(PortP) \
	*PortP->RxRemove &= ~PKT_IN_USE;\
	if (PortP->RxRemove == PortP->RxEnd)\
	    PortP->RxRemove = PortP->RxStart;\
	else\
	    PortP->RxRemove++;\
	PortP->PhbP->rx_remove = RIO_OFF(CaD,PortP->RxRemove);
#endif
#endif


#else				/* !IN_KERNEL */

#define ZERO_PTR NULL


#ifdef HOST
/* #define can_remove_transmit(pkt,phb) ((((char*)pkt = (*(char**)(phb->tx_remove))-1) || 1)) && (*phb->u3.s2.tx_remove_ptr & PKT_IN_USE))   */
#define remove_transmit(phb) *phb->u3.s2.tx_remove_ptr &= ~(ushort)PKT_IN_USE;\
                             if (phb->tx_remove == phb->tx_end)\
                                phb->tx_remove = phb->tx_start;\
                             else\
                                phb->tx_remove++;
#define can_add_receive(phb) !(*phb->u4.s2.rx_add_ptr & PKT_IN_USE)
#define add_receive(pkt,phb) *phb->rx_add = pkt;\
                             *phb->u4.s2.rx_add_ptr |= PKT_IN_USE;\
                             if (phb->rx_add == phb->rx_end)\
                                phb->rx_add = phb->rx_start;\
                             else\
                                phb->rx_add++;
#endif
#endif

#ifdef RTA
#define splx(oldspl)    if ((oldspl) == 0) spl0()
#endif

#endif				/* ifndef _list.h */
/*********** end of file ***********/
+0 −5
Original line number Diff line number Diff line
@@ -78,14 +78,9 @@ struct PARM_MAP {
	WORD idle_count;	/* Idle time counter */
	WORD busy_count;	/* Busy counter */
	WORD idle_control;	/* Control Idle Process */
#if defined(HOST) || defined(INKERNEL)
	WORD tx_intr;		/* TX interrupt pending */
	WORD rx_intr;		/* RX interrupt pending */
	WORD rup_intr;		/* RUP interrupt pending */
#endif
#if defined(RTA)
	WORD dying_count;	/* Count of processes dead */
#endif
};

#endif
Loading