1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package GoGPIO_AM335x
- import (
- "syscall"
- )
- const (
- i_IOC_NRBITS = 8
- i_IOC_TYPEBITS = 8
- i_IOC_SIZEBITS = 14
- i_IOC_DIRBITS = 2
- i_IOC_NRMASK = ((1 << i_IOC_NRBITS)-1)
- i_IOC_TYPEMASK = ((1 << i_IOC_TYPEBITS)-1)
- i_IOC_SIZEMASK = ((1 << i_IOC_SIZEBITS)-1)
- i_IOC_DIRMASK = ((1 << i_IOC_DIRBITS)-1)
- i_IOC_NRSHIFT = 0
- i_IOC_TYPESHIFT = (i_IOC_NRSHIFT+i_IOC_NRBITS)
- i_IOC_SIZESHIFT = (i_IOC_TYPESHIFT+i_IOC_TYPEBITS)
- i_IOC_DIRSHIFT = (i_IOC_SIZESHIFT+i_IOC_SIZEBITS)
- i_IOC_NONE = 0
- i_IOC_WRITE = 1
- i_IOC_READ = 2
- i_IOC_IN = (i_IOC_WRITE << i_IOC_DIRSHIFT)
- i_IOC_OUT = (i_IOC_READ << i_IOC_DIRSHIFT)
- i_IOC_INOUT = ((i_IOC_WRITE | i_IOC_READ) << i_IOC_DIRSHIFT)
- i_IOCSIZE_MASK = (i_IOC_SIZEMASK << i_IOC_SIZESHIFT)
- i_IOCSIZE_SHIFT = i_IOC_SIZESHIFT
- )
- func ifn_IOC(Dir uint32, Type uint32, Nr uint32, Size uint32) uint32 {
- return (((Dir) << i_IOC_DIRSHIFT) | ((Type) << i_IOC_TYPESHIFT) | ((Nr) << i_IOC_NRSHIFT) | ((Size) << i_IOC_SIZESHIFT))
- }
- func ifn_IO(Type uint32, Nr uint32) uint32 {
- return ifn_IOC(i_IOC_NONE,(Type),(Nr),0)
- }
- func ifn_IOR(Type uint32, Nr uint32, Size uint32) uint32 {
- return ifn_IOC(i_IOC_READ,(Type),(Nr),Size)
- }
- func ifn_IOW(Type uint32,Nr uint32,Size uint32) uint32 {
- return ifn_IOC(i_IOC_WRITE,(Type),(Nr),Size)
- }
- func ifn_IOWR(Type uint32,Nr uint32,Size uint32) uint32 {
- return ifn_IOC(i_IOC_READ | i_IOC_WRITE,(Type),(Nr),Size)
- }
- func ifn_IOR_BAD(Type uint32, Nr uint32, Size uint32) uint32 {
- return ifn_IOC(i_IOC_READ,(Type),(Nr),Size)
- }
- func ifn_IOW_BAD(Type uint32,Nr uint32,Size uint32) uint32 {
- return ifn_IOC(i_IOC_WRITE,(Type),(Nr),Size)
- }
- func ifn_IOWR_BAD(Type uint32,Nr uint32,Size uint32) uint32 {
- return ifn_IOC(i_IOC_READ | i_IOC_WRITE,(Type),(Nr),Size)
- }
- func ioctl(fd, req, arg uintptr) error {
- _,_,err :=syscall.Syscall(syscall.SYS_IOCTL,fd,req,arg)
- if err != 0 {
- return syscall.Errno(err)
- }
- return nil
- }
- func sysopen(devpath string) (int,error) {
- if fd, err := syscall.Open(devpath, syscall.O_RDWR, 0777); err != nil {
- return fd, err
- } else {
- return fd, nil
- }
- }
- func sysclose(fd int) error {
- return syscall.Close(fd)
- }
|