+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <time.h>
-#include <sys/mman.h>
-
-#include "port.h"
-
-/* SET OE[1-read/write, 0 - only read]
- pA - 8bits, pB,C,D,E-18bits */
-#define GPIOB_OE_PINS 0x0
-#define GPIOC_OE_PINS 0x3ffff
-#define GPIO_OFFSET (0x1a000 / sizeof(uint32_t))
-
-volatile uint32_t* GPIO_PTR = NULL;
-volatile uint32_t* GPIOA_OUT_OFFSET = NULL;
-volatile uint32_t* GPIOA_IN_OFFSET = NULL;
-volatile uint32_t* GPIOA_OE_OFFSET = NULL;
-volatile uint32_t* GPIOB_OUT_OFFSET = NULL;
-volatile uint32_t* GPIOB_IN_OFFSET = NULL;
-volatile uint32_t* GPIOB_OE_OFFSET = NULL;
-volatile uint32_t* GPIOC_OUT_OFFSET = NULL;
-volatile uint32_t* GPIOC_IN_OFFSET = NULL;
-volatile uint32_t* GPIOC_OE_OFFSET = NULL;
-volatile uint32_t* GPIOD_OUT_OFFSET = NULL;
-volatile uint32_t* GPIOD_IN_OFFSET = NULL;
-volatile uint32_t* GPIOD_OE_OFFSET = NULL;
-volatile uint32_t* GPIOE_OUT_OFFSET = NULL;
-volatile uint32_t* GPIOE_IN_OFFSET = NULL;
-volatile uint32_t* GPIOE_OE_OFFSET = NULL;
-
-int port_init_ports()
-{
- int memfd;
- uint32_t *mem = NULL;
-
- memfd = open("/dev/mem", O_RDWR);
- if (memfd < 0) {
- perror("Cant open memory device");
- return -1;
- }
-
- mem = mmap((void*)0,
- 2 * 4 * 4 * 8192,
- PROT_READ | PROT_WRITE,
- MAP_SHARED,
- memfd,
- 0xb0000000);
-
- if ((void*)mem == MAP_FAILED) {
- perror("Error mem-map");
- return -1;
- }
-
- /* GPIO */
- GPIO_PTR = mem + GPIO_OFFSET;
-
- GPIOA_OUT_OFFSET = (0x00 + GPIO_PTR);
- GPIOA_IN_OFFSET = (0x04 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOA_OE_OFFSET = (0x08 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOB_OUT_OFFSET = (0x20 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOB_IN_OFFSET = (0x24 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOB_OE_OFFSET = (0x28 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOC_OUT_OFFSET = (0x30 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOC_IN_OFFSET = (0x34 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOC_OE_OFFSET = (0x38 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOD_OUT_OFFSET = (0x40 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOD_IN_OFFSET = (0x44 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOD_OE_OFFSET = (0x48 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOE_OUT_OFFSET = (0x50 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOE_IN_OFFSET = (0x54 / sizeof(uint32_t)) + GPIO_PTR;
- GPIOE_OE_OFFSET = (0x58 / sizeof(uint32_t)) + GPIO_PTR;
-
- close(memfd);
-
- /* set Output Enable */
- /* read all bits on portB */
- *(GPIOB_OE_OFFSET) = GPIOB_OE_PINS;
- /* write portC[17-0] */
- *(GPIOC_OE_OFFSET) = GPIOC_OE_PINS;
-
- return 0;
-}
-
-void port_close_ports()
-{
- GPIO_PTR = NULL;
- GPIOA_OUT_OFFSET = NULL;
- GPIOA_IN_OFFSET = NULL;
- GPIOA_OE_OFFSET = NULL;
- GPIOB_OUT_OFFSET = NULL;
- GPIOB_IN_OFFSET = NULL;
- GPIOB_OE_OFFSET = NULL;
- GPIOC_OUT_OFFSET = NULL;
- GPIOC_IN_OFFSET = NULL;
- GPIOC_OE_OFFSET = NULL;
- GPIOD_OUT_OFFSET = NULL;
- GPIOD_IN_OFFSET = NULL;
- GPIOD_OE_OFFSET = NULL;
- GPIOE_OUT_OFFSET = NULL;
- GPIOE_IN_OFFSET = NULL;
- GPIOE_OE_OFFSET = NULL;
-}