~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/mips/ath79/dev-ar913x-wmac.c

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  Atheros AR913X SoC built-in WMAC device support
 
3
 *
 
4
 *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
 
5
 *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
 
6
 *
 
7
 *  This program is free software; you can redistribute it and/or modify it
 
8
 *  under the terms of the GNU General Public License version 2 as published
 
9
 *  by the Free Software Foundation.
 
10
 */
 
11
 
 
12
#include <linux/init.h>
 
13
#include <linux/delay.h>
 
14
#include <linux/irq.h>
 
15
#include <linux/platform_device.h>
 
16
#include <linux/ath9k_platform.h>
 
17
 
 
18
#include <asm/mach-ath79/ath79.h>
 
19
#include <asm/mach-ath79/ar71xx_regs.h>
 
20
#include "dev-ar913x-wmac.h"
 
21
 
 
22
static struct ath9k_platform_data ar913x_wmac_data;
 
23
 
 
24
static struct resource ar913x_wmac_resources[] = {
 
25
        {
 
26
                .start  = AR913X_WMAC_BASE,
 
27
                .end    = AR913X_WMAC_BASE + AR913X_WMAC_SIZE - 1,
 
28
                .flags  = IORESOURCE_MEM,
 
29
        }, {
 
30
                .start  = ATH79_CPU_IRQ_IP2,
 
31
                .end    = ATH79_CPU_IRQ_IP2,
 
32
                .flags  = IORESOURCE_IRQ,
 
33
        },
 
34
};
 
35
 
 
36
static struct platform_device ar913x_wmac_device = {
 
37
        .name           = "ath9k",
 
38
        .id             = -1,
 
39
        .resource       = ar913x_wmac_resources,
 
40
        .num_resources  = ARRAY_SIZE(ar913x_wmac_resources),
 
41
        .dev = {
 
42
                .platform_data = &ar913x_wmac_data,
 
43
        },
 
44
};
 
45
 
 
46
void __init ath79_register_ar913x_wmac(u8 *cal_data)
 
47
{
 
48
        if (cal_data)
 
49
                memcpy(ar913x_wmac_data.eeprom_data, cal_data,
 
50
                       sizeof(ar913x_wmac_data.eeprom_data));
 
51
 
 
52
        /* reset the WMAC */
 
53
        ath79_device_reset_set(AR913X_RESET_AMBA2WMAC);
 
54
        mdelay(10);
 
55
 
 
56
        ath79_device_reset_clear(AR913X_RESET_AMBA2WMAC);
 
57
        mdelay(10);
 
58
 
 
59
        platform_device_register(&ar913x_wmac_device);
 
60
}