Пример #1
0
void send_cmd_no_tms(int iTDI)
{
    if(iTDI == 0)
    {
      if (tdi != 0)
      {
          GPIO_CLR(JTAG_TDI);
          tdi = 0;
      }
    }
    else
    {
        if (tdi != 1)
        {
            GPIO_SET(JTAG_TDI);
            tdi = 1;
        }
    }

    //nop_sleep(WAIT);
    GPIO_SET(JTAG_TCK);
    //nop_sleep(WAIT);
    GPIO_CLR(JTAG_TCK);
    //nop_sleep(WAIT);
}
Пример #2
0
//Entire file needs a rewrite, maybe routing table, for easy of transition in TAP controller
void UpdateState(int j_state, int iTMS)
{
    switch(j_state)
    {
    case JTAG_RESET:
        GPIO_SET(JTAG_TMS);
        for(i=0; i<5; i++) //make sure we are in run-test/idle
        {
            nop_sleep(WAIT);
            GPIO_CLR(JTAG_TCK);
            nop_sleep(WAIT);
            GPIO_SET(JTAG_TCK);
            nop_sleep(WAIT);
        }
        GPIO_CLR(JTAG_TCK);
        nop_sleep(WAIT);
        jtag_state=JTAG_RESET;
        break;
    case JTAG_AUTO: //auto called when TMS is high, this one does no TMS=1,TCK=1
        if((jtag_state & 0xFFE) < 15)
        {
            jtag_state++;
            if(jtag_state > 5)
                jtag_state = JTAG_RESET;
        }
        else if((jtag_state | 0x116) == 0x116) //if we are in UPDATE-IR/
            jtag_state = JTAG_DR_SCAN;
        break;
    }
}
Пример #3
0
int 
main()
{
	if(init_gpio() == -1) 
	{
		printf("Failed to map the physical GPIO registers into the virtual memory space.\n");
        return (-1);
    }
	
	printf("Helloblink is started with GIOP%d at pin number 8.\n", LED_PIN);
	
	// Define gpio 4 (LED) as output
	INP_GPIO(LED_PIN);
	OUT_GPIO(LED_PIN);

	while(1)
	{
		GPIO_SET(LED_PIN);
		usleep(100 * 1000);
	
		GPIO_CLR(LED_PIN);
		usleep(100 * 1000);
	}

	return 0;	
}
Пример #4
0
/**  
 * device_write() - Called when a process writes to the device file 
 */
static ssize_t device_write(struct file *filp, 
							const char *buff, 
							size_t len, 
							loff_t * off)
{
	int i;
	
	// Copy data from user space to kernel space.
	for(i=0; i<len && i<BUF_LEN; i++)
	{
		get_user(msg[i], buff+i);
	}
	msg_Ptr = msg;

	if(strcmp(msg_Ptr, "1") == 1)
	{
		printk(KERN_INFO "Put LED on\n");
		GPIO_SET(GPIO_LED);
	} 
	else
	{
		printk(KERN_INFO "Put LED off\n");
		GPIO_CLR(GPIO_LED);
	}

	return i;
}
Пример #5
0
inline void digitalWrite(int g, int val)
{
	if (val == LOW)
		GPIO_CLR(g);
	else
		GPIO_SET(g);
}
Пример #6
0
static inline void leds_set(int state) 
{ 
  if (state % 2)
    GPIO_SET(virt_addr) = (1 << gpio_nr);
  else
    GPIO_CLR(virt_addr) = (1 << gpio_nr);
}
Пример #7
0
void gpioSet(int pin, int v){
    // Ottieni il numero BCM dal numero fornito
    pin = libgpio_gpio_map[pin];
    // Set/Clear cono in due registri separati quindi...
    if(v) GPIO_SET(pin) = 1 << (pin & 0x1f);
    else  GPIO_CLR(pin) = 1 << (pin & 0x1f);
}
Пример #8
0
void resetPin(u32 bank, u8 pin) {

    u32 pinMask = 0x1 << (pin);
#if defined(ARCH_SI32)
    SET_REG(GPIO_CLR(bank), pinMask);
#elif defined(ARCH_STM32)
    SET_REG(GPIO_BSRR(bank), pinMask << 16);
#endif // defined(ARCH_SI32)
}
Пример #9
0
void syncJTAGs()
{
    GPIO_SET(JTAG_TMS);
    for(i=0; i<5; i++) //make sure we are in run-test/idle
    {
        nop_sleep(WAIT);
        GPIO_CLR(JTAG_TCK);
        nop_sleep(WAIT);
        GPIO_SET(JTAG_TCK);
        nop_sleep(WAIT);
    }
    GPIO_CLR(JTAG_TCK);
    nop_sleep(WAIT);

    send_cmd(0,0); //Idle clock
    send_cmd(0,1); //SELECT-DR-SCAN
    jtag_state = JTAG_DR_SCAN;
}
Пример #10
0
// called in non-RT context
static ssize_t rpi_gpio_ioctl_nrt(struct rtdm_dev_context* context, rtdm_user_info_t* user_info, unsigned int request, void __user* arg)
{
  struct rpi_gpio_context *ctx = (struct rpi_gpio_context *) context->dev_private;
  
  // Set or Clear
  if (request == 0)
    GPIO_SET(ctx->gpio_addr) = (1 << ctx->gpio_nrt);
  else
    GPIO_CLR(ctx->gpio_addr) = (1 << ctx->gpio_nrt);

  return 0;
}
Пример #11
0
void
gpio_init_outpin (unsigned int pin)
{
  SYSCFG_UNLOCK;

  gpio_init_pin(pin);

  // clear pin data and set direction
  GPIO_CLR(pin)  =  GPIO_MASK(pin);
  GPIO_DIR(pin) &= ~GPIO_MASK(pin);

  SYSCFG_LOCK;
}
Пример #12
0
int main(int argc, char **argv) {
  int rep;

  // Set up gpi pointer for direct register access
  volatile unsigned *gpio = setup_io();

  // Switch GPIO 17, 22 to output mode
  INP_GPIO(gpio, 17); // must use INP_GPIO before we can use OUT_GPIO
  OUT_GPIO(gpio, 17);
  INP_GPIO(gpio, 22); // must use INP_GPIO before we can use OUT_GPIO
  OUT_GPIO(gpio, 22);

  for (rep=0; rep<10; rep++) {
    GPIO_SET(gpio, 17);
    sleep(1);
    GPIO_SET(gpio, 22);
    GPIO_CLR(gpio, 17);
    sleep(1);
    GPIO_CLR(gpio, 22);
  }

  return 0;
}
Пример #13
0
void send_cmd(int iTDI,int iTMS)
{
    if(iTDI == 1)
    {
        GPIO_SET(JTAG_TDI);
        tdi = 1;
    }
    else
    {
        GPIO_CLR(JTAG_TDI);
        tdi = 0;
    }

    if(iTMS == 1)
    {
        GPIO_SET(JTAG_TMS);
    }
    else
        GPIO_CLR(JTAG_TMS);

    //nop_sleep(WAIT);
    tick_clk();
    //nop_sleep(WAIT);
}
Пример #14
0
/**
 * r_irq_handler() - IRQ handler fired on interrupt
 */
static irqreturn_t r_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 
{
	unsigned long flags;
   
	// disable hard interrupts (remember them in flag 'flags')
	local_irq_save(flags);

	// Set output
	if (GPIO_READ(GPIO_PWM1))
	{
		GPIO_SET(GPIO_OUTP);
	}
	else
	{
		GPIO_CLR(GPIO_OUTP);
	}

	// restore hard interrupts
	local_irq_restore(flags);

	return (IRQ_HANDLED);
}
Пример #15
0
void
pi_start(void)
{
#warning IMPLEMENT _start
	stage2_args args;

	clear_bss();
	call_ctors();

	cpu_init();
	gpio_init();

	// Flick on "OK" led
	GPIO_CLR(16);

	mmu_init();
	serial_init();
	console_init();

	args.heap_size = HEAP_SIZE;
	args.arguments = NULL;

	main(&args);
}
Пример #16
0
static inline void blink(void) {
	GPIO_SET(1 << PIN);
	await(1000000);
	GPIO_CLR(1 << PIN);
}
Пример #17
0
void reset_clk()
{
    GPIO_CLR(JTAG_TCK);
}
Пример #18
0
void gpio_clear(uint32_t gpioport, uint32_t gpios)
{
	GPIO_CLR(gpioport) = gpios;
}
/**************************************************************************************************
 * @fn      MT_SysGpio
 *
 * @brief   ZAccel RPC interface for controlling the available GPIO pins.
 *
 * @param   uint8 pData - Pointer to the data.
 *
 * @return  None
 *************************************************************************************************/
void MT_SysGpio(uint8 *pBuf)
{
  uint8 cmd, val;
  GPIO_Op_t op;

  cmd = pBuf[MT_RPC_POS_CMD1];
  pBuf += MT_RPC_FRAME_HDR_SZ;

  op = (GPIO_Op_t)(*pBuf++);
  val = *pBuf;

  switch (op)
  {
    case GPIO_DIR:
      if (val & BV(0)) {GPIO_DIR_OUT(0);} else {GPIO_DIR_IN(0);}
      if (val & BV(1)) {GPIO_DIR_OUT(1);} else {GPIO_DIR_IN(1);}
      if (val & BV(2)) {GPIO_DIR_OUT(2);} else {GPIO_DIR_IN(2);}
      if (val & BV(3)) {GPIO_DIR_OUT(3);} else {GPIO_DIR_IN(3);}
      break;

    case GPIO_TRI:
      if(val & BV(0)) {GPIO_TRI(0);} else if(val & BV(4)) {GPIO_PULL_DN(0);} else {GPIO_PULL_UP(0);}
      if(val & BV(1)) {GPIO_TRI(1);} else if(val & BV(5)) {GPIO_PULL_DN(1);} else {GPIO_PULL_UP(1);}
      if(val & BV(2)) {GPIO_TRI(2);} else if(val & BV(6)) {GPIO_PULL_DN(2);} else {GPIO_PULL_UP(2);}
      if(val & BV(3)) {GPIO_TRI(3);} else if(val & BV(7)) {GPIO_PULL_DN(3);} else {GPIO_PULL_UP(3);}
      break;

    case GPIO_SET:
      if (val & BV(0)) {GPIO_SET(0);}
      if (val & BV(1)) {GPIO_SET(1);}
      if (val & BV(2)) {GPIO_SET(2);}
      if (val & BV(3)) {GPIO_SET(3);}
      break;

    case GPIO_CLR:
      if (val & BV(0)) {GPIO_CLR(0);}
      if (val & BV(1)) {GPIO_CLR(1);}
      if (val & BV(2)) {GPIO_CLR(2);}
      if (val & BV(3)) {GPIO_CLR(3);}
      break;

    case GPIO_TOG:
      if (val & BV(0)) {GPIO_TOG(0);}
      if (val & BV(1)) {GPIO_TOG(1);}
      if (val & BV(2)) {GPIO_TOG(2);}
      if (val & BV(3)) {GPIO_TOG(3);}
      break;

    case GPIO_GET:
      break;

    case GPIO_HiD:
      (val) ? GPIO_HiD_SET() :  GPIO_HiD_CLR();
      break;

    default:
      break;
  }

  val  = (GPIO_GET(0)) ? BV(0) : 0;
  val |= (GPIO_GET(1)) ? BV(1) : 0;
  val |= (GPIO_GET(2)) ? BV(2) : 0;
  val |= (GPIO_GET(3)) ? BV(3) : 0;

  /* Build and send back the response */
  MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS), cmd, 1, &val);
}
Пример #20
0
void tick_clk()
{
    GPIO_SET(JTAG_TCK);
    //nop_sleep(WAIT);
    GPIO_CLR(JTAG_TCK);
}
Пример #21
0
int N6100LCD::init(void)
{
    if (MAP_FAILED==gpio_ && gpio_init() < 0) {
        DBG("gpio init failed\n");
        return -1;
    }
    if (spi_ < 0 && spi_init() < 0) {
        DBG("spi init failed\n");
        return -1;
    }

    DBG("gpio = %X\n", gpio_);
    DBG("spi  = %d\n", spi_);

    INP_GPIO(rst_);
    OUT_GPIO(rst_);

    GPIO_CLR(rst_);
    usleep(200*1000);
    GPIO_SET(rst_);
    usleep(200*1000);

    if (type_ == TYPE_EPSON) {
        spi_cmd(DISCTL); // Display control (0xCA)
        spi_data(0x0C);  // 12 = 1100 - CL dividing ratio [don't divide] switching period 8H (default)
        spi_data(0x20);  // nlines/4 - 1 = 132/4 - 1 = 32 duty
        spi_data(0x00);  // No inversely highlighted lines

        spi_cmd(COMSCN); // common scanning direction (0xBB)
        spi_data(0x01);  // 1->68, 132<-69 scan direction

        spi_cmd(OSCON); // internal oscialltor ON (0xD1)
        spi_cmd(SLPOUT); // sleep out (0x94)

        spi_cmd(PWRCTR); // power ctrl (0x20)
        spi_data(0x0F);  // everything on, no external reference resistors

        spi_cmd(DISINV); // invert display mode (0xA7)

        spi_cmd(DATCTL); // data control (0xBC)
        spi_data(0x03);  // Inverse page address, reverse rotation column address, column scan-direction !!! try 0x01
        spi_data(0x00);  // normal RGB arrangement
        spi_data(0x02);  // 16-bit Grayscale Type A (12-bit color)

        spi_cmd(VOLCTR); // electronic volume, this is the contrast/brightness (0x81)
        spi_data(32);  // volume (contrast) setting - fine tuning, original (0-63)
        spi_data(3);   // internal resistor ratio - coarse adjustment (0-7)

        spi_cmd(NOP);
        usleep(100 * 1000);
        spi_cmd(DISON); // display on (0xAF)
      } else if (type_ == TYPE_PHILIPS) {
        spi_cmd(SLEEPOUT); // Sleep Out (0x11)
        spi_cmd(BSTRON);   // Booster voltage on (0x03)
        spi_cmd(DISPON);   // Display on (0x29)

        //spi_cmd(INVON);    // Inversion on (0x20)

        // 12-bit color pixel format:
        spi_cmd(COLMOD);   // Color interface format (0x3A)
        spi_data(0x03);        // 0b011 is 12-bit/pixel mode

        spi_cmd(MADCTL);   // Memory Access Control(PHILLIPS)
        //spi_data(0x08);
        spi_data(0xC0);

        spi_cmd(SETCON);   // Set Contrast(PHILLIPS)
        spi_data(0x3E);

        spi_cmd(NOPP);     // nop(PHILLIPS)
      }

    spi_flush();
    DBG("lcd init ok\n");
    return 0;
}
Пример #22
0
void gpio_clear(u32 gpioport, u32 gpios)
{
	GPIO_CLR(gpioport) = gpios;
}
Пример #23
0
int
main ( int argc, char **argv )
{
    int                 result;
    int                 period, half_period, half_period2;
    uint32_t volatile * gpio_base = 0;

    /* Retreive the mapped GPIO memory. */
    result = setup_gpio_mmap ( &gpio_base );

    if ( result < 0 ) {
        printf ( "-- error: cannot setup mapped GPIO.\n" );
        exit ( 1 );
    }

    period = 1000; /* default = 1Hz */
    if ( argc > 1 ) {
        period = atoi ( argv[1] );
    }
    half_period = set_frequency(1000);
    half_period2 = set_frequency(500);

    /* Setup GPIO of LED0 to output. */
    GPIO_CONF_AS_OUTPUT ( gpio_base, GPIO_LED0 );
    GPIO_CONF_AS_OUTPUT ( gpio_base, GPIO_LED1 );

	 GPIO_CONF_AS_INPUT ( gpio_base, GPIO_BTN0 );

    printf ( "-- info: start blinking.\n" );

    /* Blink led at frequency of 1Hz. */

    while (1) {
        /*GPIO_SET ( gpio_base, GPIO_LED0 );
	GPIO_SET ( gpio_base, GPIO_LED1 );
 	delay ( half_period );
	 
	GPIO_CLR ( gpio_base, GPIO_LED0 );
	delay ( half_period2 );
	GPIO_CLR ( gpio_base, GPIO_LED1 );
       	delay ( half_period2 );*/


	if(GPIO_VALUE( gpio_base, GPIO_BTN0 )==0)
	{

		GPIO_SET ( gpio_base, GPIO_LED0 );
		GPIO_SET ( gpio_base, GPIO_LED1 );
	 	delay ( half_period );
		 
		GPIO_CLR ( gpio_base, GPIO_LED0 );
		delay ( half_period2 );
		GPIO_CLR ( gpio_base, GPIO_LED1 );
	       	delay ( half_period2 );

	}


    }
    return 0;
}