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) }