diff options
Diffstat (limited to 'drivers/net/ethernet/sfc/spi.h')
-rw-r--r-- | drivers/net/ethernet/sfc/spi.h | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/drivers/net/ethernet/sfc/spi.h b/drivers/net/ethernet/sfc/spi.h deleted file mode 100644 index 5431a1bbff5c..000000000000 --- a/drivers/net/ethernet/sfc/spi.h +++ /dev/null | |||
@@ -1,99 +0,0 @@ | |||
1 | /**************************************************************************** | ||
2 | * Driver for Solarflare Solarstorm network controllers and boards | ||
3 | * Copyright 2005 Fen Systems Ltd. | ||
4 | * Copyright 2006-2010 Solarflare Communications Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License version 2 as published | ||
8 | * by the Free Software Foundation, incorporated herein by reference. | ||
9 | */ | ||
10 | |||
11 | #ifndef EFX_SPI_H | ||
12 | #define EFX_SPI_H | ||
13 | |||
14 | #include "net_driver.h" | ||
15 | |||
16 | /************************************************************************** | ||
17 | * | ||
18 | * Basic SPI command set and bit definitions | ||
19 | * | ||
20 | *************************************************************************/ | ||
21 | |||
22 | #define SPI_WRSR 0x01 /* Write status register */ | ||
23 | #define SPI_WRITE 0x02 /* Write data to memory array */ | ||
24 | #define SPI_READ 0x03 /* Read data from memory array */ | ||
25 | #define SPI_WRDI 0x04 /* Reset write enable latch */ | ||
26 | #define SPI_RDSR 0x05 /* Read status register */ | ||
27 | #define SPI_WREN 0x06 /* Set write enable latch */ | ||
28 | #define SPI_SST_EWSR 0x50 /* SST: Enable write to status register */ | ||
29 | |||
30 | #define SPI_STATUS_WPEN 0x80 /* Write-protect pin enabled */ | ||
31 | #define SPI_STATUS_BP2 0x10 /* Block protection bit 2 */ | ||
32 | #define SPI_STATUS_BP1 0x08 /* Block protection bit 1 */ | ||
33 | #define SPI_STATUS_BP0 0x04 /* Block protection bit 0 */ | ||
34 | #define SPI_STATUS_WEN 0x02 /* State of the write enable latch */ | ||
35 | #define SPI_STATUS_NRDY 0x01 /* Device busy flag */ | ||
36 | |||
37 | /** | ||
38 | * struct efx_spi_device - an Efx SPI (Serial Peripheral Interface) device | ||
39 | * @device_id: Controller's id for the device | ||
40 | * @size: Size (in bytes) | ||
41 | * @addr_len: Number of address bytes in read/write commands | ||
42 | * @munge_address: Flag whether addresses should be munged. | ||
43 | * Some devices with 9-bit addresses (e.g. AT25040A EEPROM) | ||
44 | * use bit 3 of the command byte as address bit A8, rather | ||
45 | * than having a two-byte address. If this flag is set, then | ||
46 | * commands should be munged in this way. | ||
47 | * @erase_command: Erase command (or 0 if sector erase not needed). | ||
48 | * @erase_size: Erase sector size (in bytes) | ||
49 | * Erase commands affect sectors with this size and alignment. | ||
50 | * This must be a power of two. | ||
51 | * @block_size: Write block size (in bytes). | ||
52 | * Write commands are limited to blocks with this size and alignment. | ||
53 | */ | ||
54 | struct efx_spi_device { | ||
55 | int device_id; | ||
56 | unsigned int size; | ||
57 | unsigned int addr_len; | ||
58 | unsigned int munge_address:1; | ||
59 | u8 erase_command; | ||
60 | unsigned int erase_size; | ||
61 | unsigned int block_size; | ||
62 | }; | ||
63 | |||
64 | static inline bool efx_spi_present(const struct efx_spi_device *spi) | ||
65 | { | ||
66 | return spi->size != 0; | ||
67 | } | ||
68 | |||
69 | int falcon_spi_cmd(struct efx_nic *efx, | ||
70 | const struct efx_spi_device *spi, unsigned int command, | ||
71 | int address, const void *in, void *out, size_t len); | ||
72 | int falcon_spi_wait_write(struct efx_nic *efx, | ||
73 | const struct efx_spi_device *spi); | ||
74 | int falcon_spi_read(struct efx_nic *efx, | ||
75 | const struct efx_spi_device *spi, loff_t start, | ||
76 | size_t len, size_t *retlen, u8 *buffer); | ||
77 | int falcon_spi_write(struct efx_nic *efx, | ||
78 | const struct efx_spi_device *spi, loff_t start, | ||
79 | size_t len, size_t *retlen, const u8 *buffer); | ||
80 | |||
81 | /* | ||
82 | * SFC4000 flash is partitioned into: | ||
83 | * 0-0x400 chip and board config (see falcon_hwdefs.h) | ||
84 | * 0x400-0x8000 unused (or may contain VPD if EEPROM not present) | ||
85 | * 0x8000-end boot code (mapped to PCI expansion ROM) | ||
86 | * SFC4000 small EEPROM (size < 0x400) is used for VPD only. | ||
87 | * SFC4000 large EEPROM (size >= 0x400) is partitioned into: | ||
88 | * 0-0x400 chip and board config | ||
89 | * configurable VPD | ||
90 | * 0x800-0x1800 boot config | ||
91 | * Aside from the chip and board config, all of these are optional and may | ||
92 | * be absent or truncated depending on the devices used. | ||
93 | */ | ||
94 | #define FALCON_NVCONFIG_END 0x400U | ||
95 | #define FALCON_FLASH_BOOTCODE_START 0x8000U | ||
96 | #define EFX_EEPROM_BOOTCONFIG_START 0x800U | ||
97 | #define EFX_EEPROM_BOOTCONFIG_END 0x1800U | ||
98 | |||
99 | #endif /* EFX_SPI_H */ | ||