68 lines
1.3 KiB
C
68 lines
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);
|
||
|
}
|