void ag7100_reset(ag7100_mac_t *mac) { uint32_t mask; //ag7100_reg_rmw_set(mac, AG7100_MAC_CFG1, AG7100_MAC_CFG1_SOFT_RST); mask = ag7100_reset_mask(mac->mac_unit); /* * put into reset, hold, pull out. */ ar7100_reg_rmw_clear(AR7100_GPIO_INT_MASK, /* set gpio to intr disable mode */ (1 << (GPIO_MDC - AR7100_GPIO_IRQ_BASE))); ar7100_reg_rmw_clear(AR7100_GPIO_OE, (1 << GPIO_MDC)); /* set gpio to out val mode */ ar7100_reg_rmw_set(AR7100_GPIO_OUT, (1 << GPIO_MDC)); /* out val */ ar7100_reg_rmw_clear(AR7100_GPIO_INT_MASK, /* set gpio to intr disable mode */ (1 << (GPIO_MDIO - AR7100_GPIO_IRQ_BASE))); ar7100_reg_rmw_clear(AR7100_GPIO_OE, (1 << GPIO_MDIO)); /* set gpio to out val mode */ ar7100_reg_rmw_set(AR7100_GPIO_OUT, (1 << GPIO_MDIO)); /* out val */ ar7100_reg_rmw_set(AR7100_RESET, mask); /* reset switch */ A_MDELAY(200); ar7100_reg_rmw_clear(AR7100_RESET, mask); A_MDELAY(200); }
void ar9100_configGpioPin(int gpio, int dir, int intr) { if (dir == GPIO_DIR_OUT) ar7100_reg_rmw_set(AR7100_GPIO_OE, (1 << gpio)) else ar7100_reg_rmw_clear(AR7100_GPIO_OE, (1 << gpio)); if (intr == GPIO_INT_ENABLE) ar7100_reg_rmw_set(AR7100_GPIO_INT_MASK, (1 << gpio)) else ar7100_reg_rmw_clear(AR7100_GPIO_INT_MASK, (1 << gpio)); }
static void inline generic_i2c_clow_dfloat(void) { ar7100_gpio_drive_low( GENERIC_I2C_SCL ); ar7100_reg_rmw_clear(AR7100_GPIO_OE, GENERIC_I2C_SDA ); udelay( GENERIC_I2C_PAUSE ); }
void ar7100_gpio_out_val(int gpio, int val) { if (val & 0x1) { ar7100_reg_rmw_set(AR7100_GPIO_OUT, (1 << gpio)); } else { ar7100_reg_rmw_clear(AR7100_GPIO_OUT, (1 << gpio)); } }
void ar7100_gpio_out_val(int gpio, int val) { if (val & 0x1) { ar7100_reg_rmw_set(AR7100_GPIO_OUT, (1 << gpio)); } else { ar7100_reg_rmw_clear(AR7100_GPIO_OUT, (1 << gpio)); } (void)ar7100_reg_rd(AR7100_GPIO_OUT); /* flush write to hardware */ }
void ap_usb_led_on(void) { #ifdef CONFIG_WZRAG300NH set_wl0_gpio(3, 0); #elif CONFIG_WNDR3700 ar7100_reg_rmw_clear(AR7100_RESET, AR7100_RESET_GE1_PHY); #elif AP_USB_LED_GPIO ar7100_set_gpio(AP_USB_LED_GPIO, USB_LED_ON); #endif }
static void enable_ethernet(void) { unsigned int mask = ag7100_reset_mask(0); /* * put into reset, hold, pull out. */ ar7100_reg_rmw_set(AR7100_RESET, mask); udelay(1000 * 1000); ar7100_reg_rmw_clear(AR7100_RESET, mask); udelay(1000 * 1000); udelay(20); }
static int generic_i2c_chigh_dread(void) { int d; ar7100_gpio_float_high_test( GENERIC_I2C_SCL ); ar7100_reg_rmw_clear( AR7100_GPIO_OE, GENERIC_I2C_SDA ); udelay( GENERIC_I2C_PAUSE/2 ); d = (ar7100_reg_rd( AR7100_GPIO_IN ) & GENERIC_I2C_SDA) ? 1 : 0; udelay ( GENERIC_I2C_PAUSE/2); return d; }
int __init ar7100_factory_reset_init(void) { #ifdef CONFIG_CUS100 u32 mask = 0; #endif int req, ret; ret = misc_register(&ar7100fr_miscdev); if (ret < 0) { printk("*** ar7100 misc_register failed %d *** \n", ret); return -1; } #ifdef CONFIG_CUS100 mask = ar7100_reg_rd(ar7100_MISC_INT_MASK); ar7100_reg_wr(ar7100_MISC_INT_MASK, mask | (1 << 2)); /* Enable GPIO interrupt mask */ ar7100_gpio_config_int (FACTORY_RESET_GPIO, INT_TYPE_LEVEL,INT_POL_ACTIVE_HIGH); ar7100_gpio_intr_enable(FACTORY_RESET_GPIO); ar7100_gpio_config_input(FACTORY_RESET_GPIO); #else ar7100_gpio_config_input(FACTORY_RESET_GPIO); ar7100_gpio_config_int (FACTORY_RESET_GPIO, INT_TYPE_LEVEL,INT_POL_ACTIVE_LOW); ar7100_reg_rmw_clear(AR7100_GPIO_FUNCTIONS, (1 << 2)); ar7100_reg_rmw_clear(AR7100_GPIO_FUNCTIONS, (1 << 16)); ar7100_reg_rmw_clear(AR7100_GPIO_FUNCTIONS, (1 << 20)); #endif req = request_irq (AR7100_GPIO_IRQn(FACTORY_RESET_GPIO), factory_reset_irq, 0, "FACTORY RESET", NULL); if (req != 0) { printk (KERN_ERR "unable to request IRQ for FACTORY_RESET GPIO (error %d)\n", req); misc_deregister(&ar7100fr_miscdev); ar7100_gpio_intr_shutdown(AR7100_GPIO_IRQn(FACTORY_RESET_GPIO)); return -1; } init_waitqueue_head(&ar7100_fr_wq); return 0; }
static void ar7100_gpio_intr_disable(unsigned int irq) { ar7100_reg_rmw_clear(AR7100_GPIO_INT_MASK, (1 << (irq - AR7100_GPIO_IRQ_BASE))); }
void ar7100_gpio_config_input(int gpio) { ar7100_reg_rmw_clear(AR7100_GPIO_OE, (1 << gpio)); }
void ar7100_gpio_config_input(int gpio) { ar7100_reg_rmw_clear(AR7100_GPIO_OE, (1 << gpio)); (void)ar7100_reg_rd(AR7100_GPIO_OE); /* flush write to hardware */ }