<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>LINUX PLIP MINI-HOWTO: Patches to make PLIP and LP live together.</TITLE> <LINK HREF="PLIP-9.html" REL=next> <LINK HREF="PLIP-7.html" REL=previous> <LINK HREF="PLIP.html#toc8" REL=contents> </HEAD> <BODY> <A HREF="PLIP-9.html">Next</A> <A HREF="PLIP-7.html">Previous</A> <A HREF="PLIP.html#toc8">Contents</A> <HR> <H2><A NAME="s8">8. Patches to make PLIP and LP live together.</A></H2> <P>The best way to make PLIP and LP live together is to use kernel modules: you can load plip.o and unload it when you need to print or vice versa. If you do really need to use both PLIP and LP, try the following patches. <P> <H2><A NAME="ss8.1">8.1 PLIP and LP together on the same port.</A> </H2> <P>If for some reason you wish PLIP and LP supported directly by the kernel, you can try these patches. <P>You must modify the following pieces of code, but <EM>backup</EM> the files before: <P> <HR> <PRE> ******** modifications to linux/drivers/char/lp.c *********************** struct lp_struct lp_table[] = { { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, /* { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, */ }; #define LP_NO 1 ******** modifications to linux/drivers/net/Space.c ******************** #if defined(PLIP) || defined(CONFIG_PLIP) extern int plip_init(struct device *); static struct device plip2_dev = { "plip2", 0, 0, 0, 0, 0x278, 2, 0, 0, 0, NEXT_DEV, plip_init, }; static struct device plip1_dev = { "plip1", 0, 0, 0, 0, 0x378, 7, 0, 0, 0, &plip2_dev, plip_init, }; /* static struct device plip0_dev = { "plip0", 0, 0, 0, 0, 0x3BC, 5, 0, 0, 0, &plip1_dev, plip_init, }; */ # undef NEXT_DEV # define NEXT_DEV (&plip1_dev) #endif /* PLIP */ </PRE> <HR> <P>Of course there is the standard disclaimer: <EM>I received these patches and I put them "as I got them". This means that you try them at your own risk.</EM> Anyway, your biggest trouble should be only restore the original files and recompile. <P> <H2><A NAME="ss8.2">8.2 PLIP and LP on different ports.</A> </H2> <P>If you have at least 2 parallel ports you can try these patches, that should allow you to use PLIP on a port and LP on the other. <P> <OL> <LI>Comment out one line in kernel source file, drivers/char/lp.c. <HR> <PRE> struct lp_struct lp_table[] = { { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, /* { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, */ }; 3 -> 2 </PRE> <HR> </LI> <LI>Kernel configuration <BLOCKQUOTE><CODE> <PRE> PLIP (parallel port) support (CONFIG_PLIP) [n] y Parallel Printer support [y] y </PRE> </CODE></BLOCKQUOTE> </LI> <LI>Kernel message at startup <BLOCKQUOTE><CODE> <PRE> lp1 at 0x0378, using polling driver ..... NET3 PLIP version 2.0 gniibe@mri.co.jp plip2: Parallel port at 0x278, using assigned IRQ 5. </PRE> </CODE></BLOCKQUOTE> </LI> </OL> <P>Again the standard disclaimer, like section 8.1. <P> <P> <HR> <A HREF="PLIP-9.html">Next</A> <A HREF="PLIP-7.html">Previous</A> <A HREF="PLIP.html#toc8">Contents</A> </BODY> </HTML>