mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-25 02:09:42 +00:00
[PATCH] kill include/linux/eeprom.h
This patch kills include/linux/eeprom.h . Rationale: - it was only used by one single driver - even this driver didn't do anything useful with it - most of this file are non-inline and non-static functions (sic) This removes include/linux/eeprom.h and cleans drivers/net/ns83820.c up. If you think eeprom.h should be used more extensively, please consider: - the code has to be moved from the header file to a .c file - the currently empty write function has to be implemented - ns83820.c or any other driver should actually use it Noone did any of these during the more than 3 years eeprom.h already exists... Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
8e3babcd69
commit
48888cc612
2 changed files with 2 additions and 147 deletions
|
@ -110,7 +110,6 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/ip.h> /* for iph */
|
||||
#include <linux/in.h> /* for IPPROTO_... */
|
||||
#include <linux/eeprom.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/prefetch.h>
|
||||
#include <linux/ethtool.h>
|
||||
|
@ -445,7 +444,6 @@ struct ns83820 {
|
|||
|
||||
u32 MEAR_cache;
|
||||
u32 IMR_cache;
|
||||
struct eeprom ee;
|
||||
|
||||
unsigned linkstate;
|
||||
|
||||
|
@ -1558,15 +1556,13 @@ static void ns83820_getmac(struct ns83820 *dev, u8 *mac)
|
|||
unsigned i;
|
||||
for (i=0; i<3; i++) {
|
||||
u32 data;
|
||||
#if 0 /* I've left this in as an example of how to use eeprom.h */
|
||||
data = eeprom_readw(&dev->ee, 0xa + 2 - i);
|
||||
#else
|
||||
|
||||
/* Read from the perfect match memory: this is loaded by
|
||||
* the chip from the EEPROM via the EELOAD self test.
|
||||
*/
|
||||
writel(i*2, dev->base + RFCR);
|
||||
data = readl(dev->base + RFDR);
|
||||
#endif
|
||||
|
||||
*mac++ = data;
|
||||
*mac++ = data >> 8;
|
||||
}
|
||||
|
@ -1851,8 +1847,6 @@ static int __devinit ns83820_init_one(struct pci_dev *pci_dev, const struct pci_
|
|||
spin_lock_init(&dev->misc_lock);
|
||||
dev->pci_dev = pci_dev;
|
||||
|
||||
dev->ee.cache = &dev->MEAR_cache;
|
||||
dev->ee.lock = &dev->misc_lock;
|
||||
SET_MODULE_OWNER(ndev);
|
||||
SET_NETDEV_DEV(ndev, &pci_dev->dev);
|
||||
|
||||
|
@ -1887,9 +1881,6 @@ static int __devinit ns83820_init_one(struct pci_dev *pci_dev, const struct pci_
|
|||
|
||||
dev->IMR_cache = 0;
|
||||
|
||||
setup_ee_mem_bitbanger(&dev->ee, dev->base + MEAR, 3, 2, 1, 0,
|
||||
0);
|
||||
|
||||
err = request_irq(pci_dev->irq, ns83820_irq, SA_SHIRQ,
|
||||
DRV_NAME, ndev);
|
||||
if (err) {
|
||||
|
|
|
@ -1,136 +0,0 @@
|
|||
/* credit winbond-840.c
|
||||
*/
|
||||
#include <asm/io.h>
|
||||
struct eeprom_ops {
|
||||
void (*set_cs)(void *ee);
|
||||
void (*clear_cs)(void *ee);
|
||||
};
|
||||
|
||||
#define EEPOL_EEDI 0x01
|
||||
#define EEPOL_EEDO 0x02
|
||||
#define EEPOL_EECLK 0x04
|
||||
#define EEPOL_EESEL 0x08
|
||||
|
||||
struct eeprom {
|
||||
void *dev;
|
||||
struct eeprom_ops *ops;
|
||||
|
||||
void __iomem * addr;
|
||||
|
||||
unsigned ee_addr_bits;
|
||||
|
||||
unsigned eesel;
|
||||
unsigned eeclk;
|
||||
unsigned eedo;
|
||||
unsigned eedi;
|
||||
unsigned polarity;
|
||||
unsigned ee_state;
|
||||
|
||||
spinlock_t *lock;
|
||||
u32 *cache;
|
||||
};
|
||||
|
||||
|
||||
u8 eeprom_readb(struct eeprom *ee, unsigned address);
|
||||
void eeprom_read(struct eeprom *ee, unsigned address, u8 *bytes,
|
||||
unsigned count);
|
||||
void eeprom_writeb(struct eeprom *ee, unsigned address, u8 data);
|
||||
void eeprom_write(struct eeprom *ee, unsigned address, u8 *bytes,
|
||||
unsigned count);
|
||||
|
||||
/* The EEPROM commands include the alway-set leading bit. */
|
||||
enum EEPROM_Cmds {
|
||||
EE_WriteCmd=(5 << 6), EE_ReadCmd=(6 << 6), EE_EraseCmd=(7 << 6),
|
||||
};
|
||||
|
||||
void setup_ee_mem_bitbanger(struct eeprom *ee, void __iomem *memaddr, int eesel_bit, int eeclk_bit, int eedo_bit, int eedi_bit, unsigned polarity)
|
||||
{
|
||||
ee->addr = memaddr;
|
||||
ee->eesel = 1 << eesel_bit;
|
||||
ee->eeclk = 1 << eeclk_bit;
|
||||
ee->eedo = 1 << eedo_bit;
|
||||
ee->eedi = 1 << eedi_bit;
|
||||
|
||||
ee->polarity = polarity;
|
||||
|
||||
*ee->cache = readl(ee->addr);
|
||||
}
|
||||
|
||||
/* foo. put this in a .c file */
|
||||
static inline void eeprom_update(struct eeprom *ee, u32 mask, int pol)
|
||||
{
|
||||
unsigned long flags;
|
||||
u32 data;
|
||||
|
||||
spin_lock_irqsave(ee->lock, flags);
|
||||
data = *ee->cache;
|
||||
|
||||
data &= ~mask;
|
||||
if (pol)
|
||||
data |= mask;
|
||||
|
||||
*ee->cache = data;
|
||||
//printk("update: %08x\n", data);
|
||||
writel(data, ee->addr);
|
||||
spin_unlock_irqrestore(ee->lock, flags);
|
||||
}
|
||||
|
||||
void eeprom_clk_lo(struct eeprom *ee)
|
||||
{
|
||||
int pol = !!(ee->polarity & EEPOL_EECLK);
|
||||
|
||||
eeprom_update(ee, ee->eeclk, pol);
|
||||
udelay(2);
|
||||
}
|
||||
|
||||
void eeprom_clk_hi(struct eeprom *ee)
|
||||
{
|
||||
int pol = !!(ee->polarity & EEPOL_EECLK);
|
||||
|
||||
eeprom_update(ee, ee->eeclk, !pol);
|
||||
udelay(2);
|
||||
}
|
||||
|
||||
void eeprom_send_addr(struct eeprom *ee, unsigned address)
|
||||
{
|
||||
int pol = !!(ee->polarity & EEPOL_EEDI);
|
||||
unsigned i;
|
||||
address |= 6 << 6;
|
||||
|
||||
/* Shift the read command bits out. */
|
||||
for (i=0; i<11; i++) {
|
||||
eeprom_update(ee, ee->eedi, ((address >> 10) & 1) ^ pol);
|
||||
address <<= 1;
|
||||
eeprom_clk_hi(ee);
|
||||
eeprom_clk_lo(ee);
|
||||
}
|
||||
eeprom_update(ee, ee->eedi, pol);
|
||||
}
|
||||
|
||||
u16 eeprom_readw(struct eeprom *ee, unsigned address)
|
||||
{
|
||||
unsigned i;
|
||||
u16 res = 0;
|
||||
|
||||
eeprom_clk_lo(ee);
|
||||
eeprom_update(ee, ee->eesel, 1 ^ !!(ee->polarity & EEPOL_EESEL));
|
||||
eeprom_send_addr(ee, address);
|
||||
|
||||
for (i=0; i<16; i++) {
|
||||
u32 data;
|
||||
eeprom_clk_hi(ee);
|
||||
res <<= 1;
|
||||
data = readl(ee->addr);
|
||||
//printk("eeprom_readw: %08x\n", data);
|
||||
res |= !!(data & ee->eedo) ^ !!(ee->polarity & EEPOL_EEDO);
|
||||
eeprom_clk_lo(ee);
|
||||
}
|
||||
eeprom_update(ee, ee->eesel, 0 ^ !!(ee->polarity & EEPOL_EESEL));
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
void eeprom_writeb(struct eeprom *ee, unsigned address, u8 data)
|
||||
{
|
||||
}
|
Loading…
Reference in a new issue