home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / eeprom_93cx6.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.4 KB  |  74 lines

  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_OPCODE    3
  34. #define PCI_EEPROM_WRITE_OPCODE    0x05
  35. #define PCI_EEPROM_READ_OPCODE    0x06
  36. #define PCI_EEPROM_EWDS_OPCODE    0x10
  37. #define PCI_EEPROM_EWEN_OPCODE    0x13
  38.  
  39. /**
  40.  * struct eeprom_93cx6 - control structure for setting the commands
  41.  * for reading the eeprom data.
  42.  * @data: private pointer for the driver.
  43.  * @register_read(struct eeprom_93cx6 *eeprom): handler to
  44.  * read the eeprom register, this function should set all reg_* fields.
  45.  * @register_write(struct eeprom_93cx6 *eeprom): handler to
  46.  * write to the eeprom register by using all reg_* fields.
  47.  * @width: eeprom width, should be one of the PCI_EEPROM_WIDTH_* defines
  48.  * @reg_data_in: register field to indicate data input
  49.  * @reg_data_out: register field to indicate data output
  50.  * @reg_data_clock: register field to set the data clock
  51.  * @reg_chip_select: register field to set the chip select
  52.  *
  53.  * This structure is used for the communication between the driver
  54.  * and the eeprom_93cx6 handlers for reading the eeprom.
  55.  */
  56. struct eeprom_93cx6 {
  57.     void *data;
  58.  
  59.     void (*register_read)(struct eeprom_93cx6 *eeprom);
  60.     void (*register_write)(struct eeprom_93cx6 *eeprom);
  61.  
  62.     int width;
  63.  
  64.     char reg_data_in;
  65.     char reg_data_out;
  66.     char reg_data_clock;
  67.     char reg_chip_select;
  68. };
  69.  
  70. extern void eeprom_93cx6_read(struct eeprom_93cx6 *eeprom,
  71.     const u8 word, u16 *data);
  72. extern void eeprom_93cx6_multiread(struct eeprom_93cx6 *eeprom,
  73.     const u8 word, __le16 *data, const u16 words);
  74.