Патчи для совместной работы PLIP и LP

Самый лучший способ заставить работать вместе PLIP и LP - это использовать загружаемые модули: можно загрузить и выгрузить из памяти plip.o, когда вам надо что-то распечатать и наоборот. Если вам необходимо использовать PLIP и LP одновременно, попробуте использовать следующие патчи.

PLIP и LP вместе на одном порту

Если вам понадобилась поддержка PLIP и LP, попробуйте следующие патчи.

Вы должны отредактировать некоторые части программы, разумеется, предварительно сохранив копию:

******** изменения для 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

******** изменения для 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 */

Разумеется, я не могу подтвердить, что они правильны и не принесут никакого ущерба, я их получил по почте и разместил без всяких исправлений. Это означает, что я не несу никакой ответственности за последствия. В любом случае. ваши проблемы ограничатся записью исходного файла и перекомпиляцией.

PLIP и LP на разных портах

Если у вас есть хотя бы два параллельных порта, вы можете использовать следующие патчи, которые дадут возможность использовать PLIP на одном порте, а LP на другом.

  1. Раскомментируйте одну строку в исходнике ядра в файле 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, }, */
    }; 
        3 -> 2

  2. Конфигурация ядра
    PLIP (parallel port) support (CONFIG_PLIP) [n] y
    
    Parallel Printer support [y] y

  3. Сообщение ядра при запуске
    lp1 at 0x0378, using polling driver
    .....
    NET3 PLIP version 2.0 gniibe@mri.co.jp
    plip2: Parallel port at 0x278, using assigned IRQ 5.

В этом случае, я несу такую же ответственность, как и в главе 8.1.