Пример #1
0
static void ifxmips_mii_chip_init(int mode)
{
	ifxmips_pmu_enable(IFXMIPS_PMU_PWDCR_DMA);
	ifxmips_pmu_enable(IFXMIPS_PMU_PWDCR_PPE);

	if (mode == REV_MII_MODE)
		ifxmips_w32_mask(PPE32_MII_MASK, PPE32_MII_REVERSE, IFXMIPS_PPE32_CFG);
	else if (mode == MII_MODE)
		ifxmips_w32_mask(PPE32_MII_MASK, PPE32_MII_NORMAL, IFXMIPS_PPE32_CFG);
	ifxmips_w32(PPE32_PLEN_UNDER | PPE32_PLEN_OVER, IFXMIPS_PPE32_IG_PLEN_CTRL);
	ifxmips_w32(PPE32_CGEN, IFXMIPS_PPE32_ENET_MAC_CFG);
	wmb();
}
Пример #2
0
static int ifxmips_led_probe(struct platform_device *dev)
{
    int i = 0;

    ifxmips_led_setup_gpio();

    ifxmips_w32(0, IFXMIPS_LED_AR);
    ifxmips_w32(0, IFXMIPS_LED_CPU0);
    ifxmips_w32(0, IFXMIPS_LED_CPU1);
    ifxmips_w32(LED_CON0_SWU, IFXMIPS_LED_CON0);
    ifxmips_w32(0, IFXMIPS_LED_CON1);

    /* setup the clock edge that the shift register is triggered on */
    ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) & ~IFXMIPS_LED_EDGE_MASK,
                IFXMIPS_LED_CON0);
    ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) | IFXMIPS_LED_CLK_EDGE,
                IFXMIPS_LED_CON0);

    /* per default leds 15-0 are set */
    ifxmips_w32(IFXMIPS_LED_GROUP1 | IFXMIPS_LED_GROUP0, IFXMIPS_LED_CON1);

    /* leds are update periodically by the FPID */
    ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) & ~IFXMIPS_LED_UPD_MASK,
                IFXMIPS_LED_CON1);
    ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) | IFXMIPS_LED_UPD_SRC_FPI,
                IFXMIPS_LED_CON1);

    /* set led update speed */
    ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) & ~IFXMIPS_LED_MASK,
                IFXMIPS_LED_CON1);
    ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON1) | IFXMIPS_LED_SPEED,
                IFXMIPS_LED_CON1);

    /* adsl 0 and 1 leds are updated by the arc */
    ifxmips_w32(ifxmips_r32(IFXMIPS_LED_CON0) | IFXMIPS_LED_ADSL_SRC,
                IFXMIPS_LED_CON0);

    /* per default, the leds are turned on */
    ifxmips_pmu_enable(IFXMIPS_PMU_PWDCR_LED);

    for (i = 0; i < IFXMIPS_MAX_LED; i++) {
        struct ifxmips_led *tmp =
            kzalloc(sizeof(struct ifxmips_led), GFP_KERNEL);
        tmp->cdev.brightness_set = ifxmips_ledapi_set;
        tmp->cdev.name = kmalloc(sizeof("ifxmips:led:00"), GFP_KERNEL);
        sprintf((char *)tmp->cdev.name, "ifxmips:led:%02d", i);
        tmp->cdev.default_trigger = NULL;
        tmp->bit = i;
        led_classdev_register(&dev->dev, &tmp->cdev);
    }

    return 0;
}