Trouble using EPP mode with /dev/ppi0 (freebsd 5.0)

stef stef-listes at wanadoo.fr
Sat May 3 09:04:57 PDT 2003


    Hello,

    it seems I can't write to the paraller port in EPP mode. All reads 
(DATA or ADR) return 0xFF.
Accesses DATA, CONTROL and STATUS registers are working fine. I have the 
feeling that
the /dev/ppi0 is stuck in COMPAT mode.
The ppc device detects correctly the parallel port settings, and uses 
EPP mode.
I have the feeling that the /dev/ppi0 is stuck COMPAT mode.

The test program below gives:

to be written=0x58
written=0x58
read=0xFF

Strangely, when using PPISEPPA to set and read address, 'val' is zeroed:

to be written=0x58
written=0x0
read=0xFF

#include <stdlib.h>
#include <fcntl.h>
#include <stdio.h>
#include <dev/ppbus/ppi.h>
#include <dev/ppbus/ppbconf.h>


int main(int argc,char **argv)
{
int fd=-1;
int rc;
u_int8_t val,control;

    fd=open("/dev/ppi0",O_RDONLY);
    if(fd<0)
    {
        perror("/dev/ppi0");
        return 1;
    }

    val=0x58;
    printf("to be written=0x%0X\n",val);
    rc = ioctl (fd, PPISEPPD, &val);
    if(rc)
    {
        perror("/dev/ppi0");
        return 1;
    }
    printf("written=0x%0X\n",val);

    /* set to data reverse */
    rc = ioctl (fd, PPIGCTRL, &control);
    if(rc)
    {
        perror("/dev/ppi0");
        return 1;
    }
      control = (control & 0x1F) | 0x20;
    rc = ioctl (fd, PPISCTRL, &control);
    if(rc)
    {
        perror("/dev/ppi0");
        return 1;
    }

    rc = ioctl (fd, PPIGEPPD, &val);
    if(rc)
    {
        perror("/dev/ppi0");
        return 1;
    }
    printf("read=0x%0X\n",val);

    close(fd);
    return 0;
}


    Any suggestion or idea ?

Regards,
    Stef



More information about the freebsd-questions mailing list