~ubuntu-branches/ubuntu/trusty/linux-backports-modules-3.2.0/trusty

« back to all changes in this revision

Viewing changes to updates/cw-3.3/include/linux/eeprom_93cx6.h

  • Committer: Package Import Robot
  • Author(s): Leann Ogasawara
  • Date: 2012-02-15 08:42:08 UTC
  • Revision ID: package-import@ubuntu.com-20120215084208-2gcs2zosufz014pi
Tags: 3.2.0-18.1
* Open Precise LBM
* Add compat-wireless v3.3
* Consolidated amd64 server flavour into generic
* Remove lpia control file
* Update Vcs-Git to ubuntu-preicse-lbm

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
        Copyright (C) 2004 - 2006 rt2x00 SourceForge Project
 
3
        <http://rt2x00.serialmonkey.com>
 
4
 
 
5
        This program is free software; you can redistribute it and/or modify
 
6
        it under the terms of the GNU General Public License as published by
 
7
        the Free Software Foundation; either version 2 of the License, or
 
8
        (at your option) any later version.
 
9
 
 
10
        This program is distributed in the hope that it will be useful,
 
11
        but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 
13
        GNU General Public License for more details.
 
14
 
 
15
        You should have received a copy of the GNU General Public License
 
16
        along with this program; if not, write to the
 
17
        Free Software Foundation, Inc.,
 
18
        59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
19
 */
 
20
 
 
21
/*
 
22
        Module: eeprom_93cx6
 
23
        Abstract: EEPROM reader datastructures for 93cx6 chipsets.
 
24
        Supported chipsets: 93c46, 93c56 and 93c66.
 
25
 */
 
26
 
 
27
/*
 
28
 * EEPROM operation defines.
 
29
 */
 
30
#define PCI_EEPROM_WIDTH_93C46  6
 
31
#define PCI_EEPROM_WIDTH_93C56  8
 
32
#define PCI_EEPROM_WIDTH_93C66  8
 
33
#define PCI_EEPROM_WIDTH_93C86  8
 
34
#define PCI_EEPROM_WIDTH_OPCODE 3
 
35
#define PCI_EEPROM_WRITE_OPCODE 0x05
 
36
#define PCI_EEPROM_ERASE_OPCODE 0x07
 
37
#define PCI_EEPROM_READ_OPCODE  0x06
 
38
#define PCI_EEPROM_EWDS_OPCODE  0x10
 
39
#define PCI_EEPROM_EWEN_OPCODE  0x13
 
40
 
 
41
/**
 
42
 * struct eeprom_93cx6 - control structure for setting the commands
 
43
 * for reading the eeprom data.
 
44
 * @data: private pointer for the driver.
 
45
 * @register_read(struct eeprom_93cx6 *eeprom): handler to
 
46
 * read the eeprom register, this function should set all reg_* fields.
 
47
 * @register_write(struct eeprom_93cx6 *eeprom): handler to
 
48
 * write to the eeprom register by using all reg_* fields.
 
49
 * @width: eeprom width, should be one of the PCI_EEPROM_WIDTH_* defines
 
50
 * @drive_data: Set if we're driving the data line.
 
51
 * @reg_data_in: register field to indicate data input
 
52
 * @reg_data_out: register field to indicate data output
 
53
 * @reg_data_clock: register field to set the data clock
 
54
 * @reg_chip_select: register field to set the chip select
 
55
 *
 
56
 * This structure is used for the communication between the driver
 
57
 * and the eeprom_93cx6 handlers for reading the eeprom.
 
58
 */
 
59
struct eeprom_93cx6 {
 
60
        void *data;
 
61
 
 
62
        void (*register_read)(struct eeprom_93cx6 *eeprom);
 
63
        void (*register_write)(struct eeprom_93cx6 *eeprom);
 
64
 
 
65
        int width;
 
66
 
 
67
        char drive_data;
 
68
        char reg_data_in;
 
69
        char reg_data_out;
 
70
        char reg_data_clock;
 
71
        char reg_chip_select;
 
72
};
 
73
 
 
74
extern void eeprom_93cx6_read(struct eeprom_93cx6 *eeprom,
 
75
        const u8 word, u16 *data);
 
76
extern void eeprom_93cx6_multiread(struct eeprom_93cx6 *eeprom,
 
77
        const u8 word, __le16 *data, const u16 words);
 
78
 
 
79
extern void eeprom_93cx6_wren(struct eeprom_93cx6 *eeprom, bool enable);
 
80
 
 
81
extern void eeprom_93cx6_write(struct eeprom_93cx6 *eeprom,
 
82
                               u8 addr, u16 data);