68 строки
1.3 KiB
C
68 строки
1.3 KiB
C
/*
|
|
* devops.c: Device operations using the PROM.
|
|
*
|
|
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
|
|
* Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
|
|
*/
|
|
#include <linux/types.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/sched.h>
|
|
|
|
#include <asm/openprom.h>
|
|
#include <asm/oplib.h>
|
|
|
|
/* Open the device described by the string 'dstr'. Returns the handle
|
|
* to that device used for subsequent operations on that device.
|
|
* Returns 0 on failure.
|
|
*/
|
|
int
|
|
prom_devopen(const char *dstr)
|
|
{
|
|
unsigned long args[5];
|
|
|
|
args[0] = (unsigned long) "open";
|
|
args[1] = 1;
|
|
args[2] = 1;
|
|
args[3] = (unsigned long) dstr;
|
|
args[4] = (unsigned long) -1;
|
|
|
|
p1275_cmd_direct(args);
|
|
|
|
return (int) args[4];
|
|
}
|
|
|
|
/* Close the device described by device handle 'dhandle'. */
|
|
int
|
|
prom_devclose(int dhandle)
|
|
{
|
|
unsigned long args[4];
|
|
|
|
args[0] = (unsigned long) "close";
|
|
args[1] = 1;
|
|
args[2] = 0;
|
|
args[3] = (unsigned int) dhandle;
|
|
|
|
p1275_cmd_direct(args);
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* Seek to specified location described by 'seekhi' and 'seeklo'
|
|
* for device 'dhandle'.
|
|
*/
|
|
void
|
|
prom_seek(int dhandle, unsigned int seekhi, unsigned int seeklo)
|
|
{
|
|
unsigned long args[7];
|
|
|
|
args[0] = (unsigned long) "seek";
|
|
args[1] = 3;
|
|
args[2] = 1;
|
|
args[3] = (unsigned int) dhandle;
|
|
args[4] = seekhi;
|
|
args[5] = seeklo;
|
|
args[6] = (unsigned long) -1;
|
|
|
|
p1275_cmd_direct(args);
|
|
}
|