/*HOW PARALLEL PORT DRIVER & CHARACTER DRIVER ARE REGISTERED....HOW PARALLEL PORT WORKS... */
//1ST OF ALL..IN NIBBLE_MODE MEANS BIDIRECTIONAL MODE...//
//SEND BUSY SIGNAL IN BUSY PIN ....PIN WHICH IS CONNECTEDFROM CONTROL PIN NO.1 OF SYSTEM1 TO STATUS S7 PIN OF SYSTEM 2
//IN THAT MUCH TIME SYSTEM2 WILL WAIT USING ADDTIMER OR ALSO WAIT_HEAD_T ..I.E.WAIT QUEUE
//SEND FREE SIGNAL FROM SYSTEM 1 TO SYSTEM THROUGH SAME WIRE AS BEFORE BUSY SIGNAL IS SEND...
//AS SYSTEM 2 GOT FREE SIGNAL...SYSTEM 2 WILL CHECK THE CONDITION THAT if(ch==0x00)...means FREE ...SYSTEM 2 WILL ATTEMPT TO SEND DATA BACK TO SYSTEM 1 THROUGH DATA PINS...& MAKE CONDITION TRUE FOR WAIT_QUEUE TO EXIT FROM THE WAIT QUEUE & make strobe 1 i.e.used FOR DATA VALIDITY OR DATA INVALIDITY..//
//AFTER THAT SYSTEM 1 WILL RECIEVE THE DATA & SEND ACKNOWLEGEMENT BACK TO SENDER ON CONTROL PIN NO.14 TO STATUS PIN NO. 10
printk(KERN_INFO"character driver is registered\n");
else
printk(KERN_INFO"chr driv is not registered\n");
if(check_region(0x378,3)<0)//will return int//checked the region into /proc/ioports....that what are the addresses provided for parllel-port ...use one of the addresses of parallel-port..suppose i have used 0x378 to 0x37a
//0x378 for data ;register of parrallel port to transfer the data either in nibble_mode...or in bidirectional//in nibble_mode...only when used normal or half duplex mode...data pins are used only to send the data & status pins are to receive the data execpt upper most i.e.MSB of status bit...//MSB OF STATUS REGISTER FROM ONE SIDE IS USED TO CHECK BUSY & FROM ANOTHER SIDE IS USED TO SEND STROBE...//
//0x379 for status register ..used to check busy pin & also status pin are used to recieve data in like half-duplex mode....means one sided transfer of data..//
//0x37a is used for control register ..to send control signal./...//by any of its pins..//
{
release_region(0x378,3);//will return void/////release reason in /proc/ioports...if previous driver that was already in it was static & acquired region already...if acquired...then release that region//
}
request_region(0x378,3,"myparport");//will return struct resource type pointer//now when region is release request for that address....or region which is for // port constantly & can not be changed //