Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
Archivo: smi.c Proyecto: janfj/dd-wrt
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));
}
Ejemplo n.º 3
0
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 );
}
Ejemplo n.º 4
0
Archivo: gpio.c Proyecto: janfj/dd-wrt
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));
	}
}
Ejemplo n.º 5
0
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 */
}
Ejemplo n.º 6
0
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
}
Ejemplo n.º 7
0
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);
}
Ejemplo n.º 8
0
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;
}
Ejemplo n.º 9
0
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;
}
Ejemplo n.º 10
0
static void
ar7100_gpio_intr_disable(unsigned int irq)
{
    ar7100_reg_rmw_clear(AR7100_GPIO_INT_MASK, 
                        (1 << (irq - AR7100_GPIO_IRQ_BASE)));
}
Ejemplo n.º 11
0
void
ar7100_gpio_config_input(int gpio)
{
    ar7100_reg_rmw_clear(AR7100_GPIO_OE, (1 << gpio));
}
Ejemplo n.º 12
0
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 */
}