Beispiel #1
0
static int octeon_gpio_dir_out(struct gpio_chip *chip, unsigned offset,
			       int value)
{
	struct octeon_gpio *gpio = gpiochip_get_data(chip);
	union cvmx_gpio_bit_cfgx cfgx;

	octeon_gpio_set(chip, offset, value);

	cfgx.u64 = 0;
	cfgx.s.tx_oe = 1;

	cvmx_write_csr(gpio->register_base + bit_cfg_reg(offset), cfgx.u64);
	return 0;
}
Beispiel #2
0
void hw_watchdog_reset(void)
{
  static unsigned char v = 0;
  static uint64_t ms = 0;
  static uint64_t now_ms;
  DECLARE_GLOBAL_DATA_PTR;

  now_ms= octeon_get_cycles() / AMPP2_CPU_CLK_MHZ / 1000;

  // maclee: IPMC is falling edge trigger, feeding each 2 seconds
  if ((now_ms - ms) > (wdt_expire_time_ms/20)) {
#ifdef CFG_BOARD_AMPP2_A
    if (v) {
      octeon_gpio_set(GPIO_05_CPU_WATCHDOG_FEED);
    } else {
      octeon_gpio_clr(GPIO_05_CPU_WATCHDOG_FEED);
    }
    v ^= 1;
#endif

    ms = now_ms;
  }
}