cregit-Linux how code gets into the kernel

Release 4.11 drivers/block/paride/paride.h

#ifndef __DRIVERS_PARIDE_H__

#define __DRIVERS_PARIDE_H__

/* 
        paride.h        (c) 1997-8  Grant R. Guenther <grant@torque.net>
                                    Under the terms of the GPL.

   This file defines the interface between the high-level parallel
   IDE device drivers (pd, pf, pcd, pt) and the adapter chips.

*/

/* Changes:

        1.01    GRG 1998.05.05  init_proto, release_proto
*/


#define PARIDE_H_VERSION 	"1.01"

/* Some adapters need to know what kind of device they are in

   Values for devtype:
*/


#define	PI_PD	0	
/* IDE disk */

#define PI_PCD	1	
/* ATAPI CDrom */

#define PI_PF   2	
/* ATAPI disk */

#define PI_PT	3	
/* ATAPI tape */

#define PI_PG   4       
/* ATAPI generic */

/* The paride module contains no state, instead the drivers allocate
   a pi_adapter data structure and pass it to paride in every operation.

*/


struct pi_adapter  {

	
struct pi_protocol *proto;   /* adapter protocol */
	
int	port;		     /* base address of parallel port */
	
int	mode;		     /* transfer mode in use */
	
int     delay;		     /* adapter delay setting */
	
int	devtype;	     /* device type: PI_PD etc. */
	
char    *device;	     /* name of driver */
	
int     unit;		     /* unit number for chained adapters */
	
int	saved_r0;	     /* saved port state */
	
int	saved_r2;	     /* saved port state */
	
int	reserved;	     /* number of ports reserved */
	
unsigned long	private;     /* for protocol module */

	
wait_queue_head_t parq;     /* semaphore for parport sharing */
	
void	*pardev;	     /* pointer to pardevice */
	
char	*parname;	     /* parport name */
	
int	claimed;	     /* parport has already been claimed */
	
void (*claim_cont)(void);    /* continuation for parport wait */
};


typedef struct pi_adapter PIA;

/* functions exported by paride to the high level drivers */

extern int pi_init(PIA *pi, 
	int autoprobe,		/* 1 to autoprobe */
	int port, 		/* base port address */
	int mode, 		/* -1 for autoprobe */
	int unit,		/* unit number, if supported */
	int protocol, 		/* protocol to use */
	int delay, 		/* -1 to use adapter specific default */
	char * scratch, 	/* address of 512 byte buffer */
	int devtype,		/* device type: PI_PD, PI_PCD, etc ... */
	int verbose,		/* log verbose data while probing */
	char *device		/* name of the driver */
	);			/* returns 0 on failure, 1 on success */

extern void pi_release(PIA *pi);

/* registers are addressed as (cont,regr)

        cont: 0 for command register file, 1 for control register(s)
        regr: 0-7 for register number.

*/

extern void pi_write_regr(PIA *pi, int cont, int regr, int val);

extern int pi_read_regr(PIA *pi, int cont, int regr);

extern void pi_write_block(PIA *pi, char * buf, int count);

extern void pi_read_block(PIA *pi, char * buf, int count);

extern void pi_connect(PIA *pi);

extern void pi_disconnect(PIA *pi);

extern void pi_do_claimed(PIA *pi, void (*cont)(void));
extern int pi_schedule_claimed(PIA *pi, void (*cont)(void));

/* macros and functions exported to the protocol modules */


#define delay_p			(pi->delay?udelay(pi->delay):(void)0)

#define out_p(offs,byte)	outb(byte,pi->port+offs); delay_p;

#define in_p(offs)		(delay_p,inb(pi->port+offs))


#define w0(byte)                {out_p(0,byte);}

#define r0()                    (in_p(0) & 0xff)

#define w1(byte)                {out_p(1,byte);}

#define r1()                    (in_p(1) & 0xff)

#define w2(byte)                {out_p(2,byte);}

#define r2()                    (in_p(2) & 0xff)

#define w3(byte)                {out_p(3,byte);}

#define w4(byte)                {out_p(4,byte);}

#define r4()                    (in_p(4) & 0xff)

#define w4w(data)     		{outw(data,pi->port+4); delay_p;}

#define w4l(data)     		{outl(data,pi->port+4); delay_p;}

#define r4w()         		(delay_p,inw(pi->port+4)&0xffff)

#define r4l()         		(delay_p,inl(pi->port+4)&0xffffffff)


static inline u16 pi_swab16( char *b, int k) { union { u16 u; char t[2]; } r; r.t[0]=b[2*k+1]; r.t[1]=b[2*k]; return r.u; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)63100.00%1100.00%
Total63100.00%1100.00%


static inline u32 pi_swab32( char *b, int k) { union { u32 u; char f[4]; } r; r.f[0]=b[4*k+1]; r.f[1]=b[4*k]; r.f[2]=b[4*k+3]; r.f[3]=b[4*k+2]; return r.u; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)95100.00%1100.00%
Total95100.00%1100.00%

struct pi_protocol { char name[8]; /* name for this protocol */ int index; /* index into protocol table */ int max_mode; /* max mode number */ int epp_first; /* modes >= this use 8 ports */ int default_delay; /* delay parameter if not specified */ int max_units; /* max chained units probed for */ void (*write_regr)(PIA *,int,int,int); int (*read_regr)(PIA *,int,int); void (*write_block)(PIA *,char *,int); void (*read_block)(PIA *,char *,int); void (*connect)(PIA *); void (*disconnect)(PIA *); int (*test_port)(PIA *); int (*probe_unit)(PIA *); int (*test_proto)(PIA *,char *,int); void (*log_adapter)(PIA *,char *,int); int (*init_proto)(PIA *); void (*release_proto)(PIA *); struct module *owner; }; typedef struct pi_protocol PIP; extern int paride_register( PIP * ); extern void paride_unregister ( PIP * ); void *pi_register_driver(char *); void pi_unregister_driver(void *); #endif /* __DRIVERS_PARIDE_H__ */ /* end of paride.h */

Overall Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)74894.44%545.45%
Al Viro273.41%436.36%
Sudip Mukherjee151.89%19.09%
Alexey Dobriyan20.25%19.09%
Total792100.00%11100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.