lkml.org 
[lkml]   [2003]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectComplete support PC-9800 for 2.5.64-ac4 (8/11) parport
    This is the patch to support NEC PC-9800 subarchitecture
    against 2.5.64-ac4. (8/11)

    Parallel port support.
    - Change IO port and IRQ assign.
    - Add probing for PC98 parport.

    diff -Nru linux-2.5.64-ac2/drivers/parport/parport_pc.c linux98-2.5.64-ac2/drivers/parport/parport_pc.c
    --- linux-2.5.64-ac2/drivers/parport/parport_pc.c 2003-03-08 08:25:20.000000000 +0900
    +++ linux98-2.5.64-ac2/drivers/parport/parport_pc.c 2003-03-08 10:44:43.000000000 +0900
    @@ -1892,6 +1892,9 @@
    config & 0x80 ? "Level" : "Pulses");

    configb = inb (CONFIGB (pb));
    + if (pc98 && (CONFIGB(pb) == 0x14d) && ((configb & 0x38) == 0x30))
    + configb = (configb & ~0x38) | 0x28; /* IRQ 14 */
    +
    printk (KERN_DEBUG "0x%lx: ECP port cfgA=0x%02x cfgB=0x%02x\n",
    pb->base, config, configb);
    printk (KERN_DEBUG "0x%lx: ECP settings irq=", pb->base);
    @@ -2032,6 +2035,9 @@
    ECR_WRITE (pb, ECR_CNF << 5); /* Configuration MODE */

    intrLine = (inb (CONFIGB (pb)) >> 3) & 0x07;
    + if (pc98 && (CONFIGB(pb) == 0x14d) && (intrLine == 6))
    + intrLine = 5; /* IRQ 14 */
    +
    irq = lookup[intrLine];

    ECR_WRITE (pb, oecr);
    @@ -2248,7 +2254,7 @@
    parport_ECR_present(p);
    }

    - if (base != 0x3bc) {
    + if (!pc98 && base != 0x3bc) {
    EPP_res = request_region(base+0x3, 5, fake_name);
    if (EPP_res)
    if (!parport_EPP_supported(p))
    @@ -3022,6 +3028,26 @@
    {
    int count = 0;

    + if (pc98) {
    + /* Set default settings for IEEE1284 parport */
    + int base = 0x140;
    + int base_hi = 0x14c;
    + int irq = 14;
    + int dma = PARPORT_DMA_NONE;
    +
    + /* Check PC9800 old style parport */
    + outb(inb(0x149) & ~0x10, 0x149); /* disable IEEE1284 */
    + if (!(inb(0x149) & 0x10)) { /* IEEE1284 disabled ? */
    + outb(inb(0x149) | 0x10, 0x149); /* enable IEEE1284 */
    + if (inb(0x149) & 0x10) { /* IEEE1284 enabled ? */
    + if (parport_pc_probe_port(base, base_hi,
    + irq, dma, NULL))
    + count++;
    + }
    + }
    +
    + }
    +
    if (parport_pc_probe_port(0x3bc, 0x7bc, autoirq, autodma, NULL))
    count++;
    if (parport_pc_probe_port(0x378, 0x778, autoirq, autodma, NULL))
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 13:34    [W:0.029 / U:59.648 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site