Root/target/linux/s3c24xx/files-2.6.30/drivers/ar6000/hif/hif_internal.h

1/*
2 * @file: hif_internal.h
3 *
4 * @abstract: internal header file for hif layer
5 *
6 * @notice: Copyright (c) 2004-2006 Atheros Communications Inc.
7 *
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation;
12 *
13 * Software distributed under the License is distributed on an "AS
14 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
15 * implied. See the License for the specific language governing
16 * rights and limitations under the License.
17 *
18 *
19 *
20 */
21
22#include <linux/sdio/ctsystem.h>
23#include <linux/sdio/sdio_busdriver.h>
24#include <linux/sdio/_sdio_defs.h>
25#include <linux/sdio/sdio_lib.h>
26#include "a_config.h"
27#include "athdefs.h"
28#include "a_types.h"
29#include "a_osapi.h"
30#include "hif.h"
31
32#define MANUFACTURER_ID_AR6001_BASE 0x100
33#define MANUFACTURER_ID_AR6002_BASE 0x200
34#define FUNCTION_CLASS 0x0
35#define MANUFACTURER_CODE 0x271
36
37#define BUS_REQUEST_MAX_NUM 64
38
39#define SDIO_CLOCK_FREQUENCY_DEFAULT 25000000
40#define SDWLAN_ENABLE_DISABLE_TIMEOUT 20
41#define FLAGS_CARD_ENAB 0x02
42#define FLAGS_CARD_IRQ_UNMSK 0x04
43
44#define HIF_MBOX_BLOCK_SIZE 128
45#define HIF_MBOX_BASE_ADDR 0x800
46#define HIF_MBOX_WIDTH 0x800
47#define HIF_MBOX0_BLOCK_SIZE 1
48#define HIF_MBOX1_BLOCK_SIZE HIF_MBOX_BLOCK_SIZE
49#define HIF_MBOX2_BLOCK_SIZE HIF_MBOX_BLOCK_SIZE
50#define HIF_MBOX3_BLOCK_SIZE HIF_MBOX_BLOCK_SIZE
51
52#define HIF_MBOX_START_ADDR(mbox) \
53    HIF_MBOX_BASE_ADDR + mbox * HIF_MBOX_WIDTH
54
55#define HIF_MBOX_END_ADDR(mbox) \
56    HIF_MBOX_START_ADDR(mbox) + HIF_MBOX_WIDTH - 1
57
58struct hif_device {
59    SDDEVICE *handle;
60    void *htc_handle;
61    OSKERNEL_HELPER insert_helper;
62    BOOL helper_started;
63};
64
65typedef struct target_function_context {
66    SDFUNCTION function; /* function description of the bus driver */
67    OS_SEMAPHORE instanceSem; /* instance lock. Unused */
68    SDLIST instanceList; /* list of instances. Unused */
69} TARGET_FUNCTION_CONTEXT;
70
71typedef struct bus_request {
72    struct bus_request *next;
73    SDREQUEST *request;
74    void *context;
75} BUS_REQUEST;
76
77BOOL
78hifDeviceInserted(SDFUNCTION *function, SDDEVICE *device);
79
80void
81hifDeviceRemoved(SDFUNCTION *function, SDDEVICE *device);
82
83SDREQUEST *
84hifAllocateDeviceRequest(SDDEVICE *device);
85
86void
87hifFreeDeviceRequest(SDREQUEST *request);
88
89void
90hifRWCompletionHandler(SDREQUEST *request);
91
92void
93hifIRQHandler(void *context);
94
95HIF_DEVICE *
96addHifDevice(SDDEVICE *handle);
97
98HIF_DEVICE *
99getHifDevice(SDDEVICE *handle);
100
101void
102delHifDevice(SDDEVICE *handle);
103

Archive Download this file



interactive