Code Review
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
netxen: onchip memory access change
[linux-2.6.git]
/
drivers
/
net
/
netxen
/
netxen_nic_hw.c
diff --git
a/drivers/net/netxen/netxen_nic_hw.c
b/drivers/net/netxen/netxen_nic_hw.c
index 52a2f2d675524e80488a60bd990e101528cbccf9..a63324613430c9d803404c975f8c36bdb5eb3e12 100644
(file)
--- a/
drivers/net/netxen/netxen_nic_hw.c
+++ b/
drivers/net/netxen/netxen_nic_hw.c
@@
-31,6
+31,7
@@
#define MASK(n) ((1ULL<<(n))-1)
#define MN_WIN(addr) (((addr & 0x1fc0000) >> 1) | ((addr >> 25) & 0x3ff))
#define OCM_WIN(addr) (((addr & 0x1ff0000) >> 1) | ((addr >> 25) & 0x3ff))
#define MASK(n) ((1ULL<<(n))-1)
#define MN_WIN(addr) (((addr & 0x1fc0000) >> 1) | ((addr >> 25) & 0x3ff))
#define OCM_WIN(addr) (((addr & 0x1ff0000) >> 1) | ((addr >> 25) & 0x3ff))
+#define OCM_WIN_P3P(addr) (addr & 0xffc0000)
#define MS_WIN(addr) (addr & 0x0ffc0000)
#define GET_MEM_OFFS_2M(addr) (addr & MASK(18))
#define MS_WIN(addr) (addr & 0x0ffc0000)
#define GET_MEM_OFFS_2M(addr) (addr & MASK(18))
@@
-1338,7
+1339,7
@@
static int
netxen_nic_pci_set_window_2M(struct netxen_adapter *adapter,
u64 addr, u32 *start)
{
netxen_nic_pci_set_window_2M(struct netxen_adapter *adapter,
u64 addr, u32 *start)
{
- u32 win
_read, win
dow;
+ u32 window;
struct pci_dev *pdev = adapter->pdev;
if ((addr & 0x00ff800) == 0xff800) {
struct pci_dev *pdev = adapter->pdev;
if ((addr & 0x00ff800) == 0xff800) {
@@
-1347,14
+1348,14
@@
netxen_nic_pci_set_window_2M(struct netxen_adapter *adapter,
return -EIO;
}
return -EIO;
}
- window = OCM_WIN(addr);
+ if (NX_IS_REVISION_P3P(adapter->ahw.revision_id))
+ window = OCM_WIN_P3P(addr);
+ else
+ window = OCM_WIN(addr);
+
writel(window, adapter->ahw.ocm_win_crb);
writel(window, adapter->ahw.ocm_win_crb);
- win_read = readl(adapter->ahw.ocm_win_crb);
- if ((win_read >> 7) != window) {
- if (printk_ratelimit())
- dev_warn(&pdev->dev, "failed to set OCM window\n");
- return -EIO;
- }
+ /* read back to flush */
+ readl(adapter->ahw.ocm_win_crb);
adapter->ahw.ocm_win = window;
*start = NETXEN_PCI_OCM0_2M + GET_MEM_OFFS_2M(addr);
adapter->ahw.ocm_win = window;
*start = NETXEN_PCI_OCM0_2M + GET_MEM_OFFS_2M(addr);