Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
c7cd5b98
Commit
c7cd5b98
authored
Apr 17, 2008
by
Paul Mackerras
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-2.6.26' of master.kernel.org:/pub/scm/linux/kernel/git/olof/pasemi
parents
e92716f2
7132799b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
46 additions
and
17 deletions
+46
-17
arch/powerpc/platforms/pasemi/iommu.c
arch/powerpc/platforms/pasemi/iommu.c
+9
-10
arch/powerpc/sysdev/mpic.c
arch/powerpc/sysdev/mpic.c
+4
-5
drivers/net/pasemi_mac.c
drivers/net/pasemi_mac.c
+33
-2
No files found.
arch/powerpc/platforms/pasemi/iommu.c
View file @
c7cd5b98
/*
* Copyright (C) 2005-200
7
, PA Semi, Inc
* Copyright (C) 2005-200
8
, PA Semi, Inc
*
* Maintained by: Olof Johansson <olof@lixom.net>
*
...
...
@@ -27,7 +27,6 @@
#include <asm/abs_addr.h>
#include <asm/firmware.h>
#define IOBMAP_PAGE_SHIFT 12
#define IOBMAP_PAGE_SIZE (1 << IOBMAP_PAGE_SHIFT)
#define IOBMAP_PAGE_MASK (IOBMAP_PAGE_SIZE - 1)
...
...
@@ -35,13 +34,13 @@
#define IOB_BASE 0xe0000000
#define IOB_SIZE 0x3000
/* Configuration registers */
#define IOBCAP_REG 0x
1
0
#define IOBCOM_REG 0x
4
0
#define IOBCAP_REG 0x
4
0
#define IOBCOM_REG 0x
10
0
/* Enable IOB address translation */
#define IOBCOM_ATEN 0x00000100
/* Address decode configuration register */
#define IOB_AD_REG 0x
53
#define IOB_AD_REG 0x
14c
/* IOBCOM_AD_REG fields */
#define IOB_AD_VGPRT 0x00000e00
#define IOB_AD_VGAEN 0x00000100
...
...
@@ -56,13 +55,13 @@
#define IOB_AD_TRNG_2G 0x00000001
#define IOB_AD_TRNG_128G 0x00000003
#define IOB_TABLEBASE_REG 0x
55
#define IOB_TABLEBASE_REG 0x
154
/* Base of the 64 4-byte L1 registers */
#define IOB_XLT_L1_REGBASE 0x
ac
0
#define IOB_XLT_L1_REGBASE 0x
2b0
0
/* Register to invalidate TLB entries */
#define IOB_AT_INVAL_TLB_REG 0x
b4
0
#define IOB_AT_INVAL_TLB_REG 0x
2d0
0
/* The top two bits of the level 1 entry contains valid and type flags */
#define IOBMAP_L1E_V 0x40000000
...
...
@@ -76,7 +75,7 @@
#define IOBMAP_L2E_V 0x80000000
#define IOBMAP_L2E_V_CACHED 0xc0000000
static
u32
__iomem
*
iob
;
static
void
__iomem
*
iob
;
static
u32
iob_l1_emptyval
;
static
u32
iob_l2_emptyval
;
static
u32
*
iob_l2_base
;
...
...
@@ -219,7 +218,7 @@ int __init iob_init(struct device_node *dn)
for
(
i
=
0
;
i
<
64
;
i
++
)
{
/* Each L1 covers 32MB, i.e. 8K entries = 32K of ram */
regword
=
IOBMAP_L1E_V
|
(
__pa
(
iob_l2_base
+
i
*
0x2000
)
>>
12
);
out_le32
(
iob
+
IOB_XLT_L1_REGBASE
+
i
,
regword
);
out_le32
(
iob
+
IOB_XLT_L1_REGBASE
+
i
*
4
,
regword
);
}
/* set 2GB translation window, based at 0 */
...
...
arch/powerpc/sysdev/mpic.c
View file @
c7cd5b98
...
...
@@ -1410,11 +1410,6 @@ void mpic_cpu_set_priority(int prio)
mpic_cpu_write
(
MPIC_INFO
(
CPU_CURRENT_TASK_PRI
),
prio
);
}
/*
* XXX: someone who knows mpic should check this.
* do we need to eoi the ipi including for kexec cpu here (see xics comments)?
* or can we reset the mpic in the new kernel?
*/
void
mpic_teardown_this_cpu
(
int
secondary
)
{
struct
mpic
*
mpic
=
mpic_primary
;
...
...
@@ -1434,6 +1429,10 @@ void mpic_teardown_this_cpu(int secondary)
/* Set current processor priority to max */
mpic_cpu_write
(
MPIC_INFO
(
CPU_CURRENT_TASK_PRI
),
0xf
);
/* We need to EOI the IPI since not all platforms reset the MPIC
* on boot and new interrupts wouldn't get delivered otherwise.
*/
mpic_eoi
(
mpic
);
spin_unlock_irqrestore
(
&
mpic_lock
,
flags
);
}
...
...
drivers/net/pasemi_mac.c
View file @
c7cd5b98
...
...
@@ -404,6 +404,7 @@ static void pasemi_mac_free_csring(struct pasemi_mac_csring *csring)
pasemi_dma_free_flag
(
csring
->
events
[
1
]);
pasemi_dma_free_ring
(
&
csring
->
chan
);
pasemi_dma_free_chan
(
&
csring
->
chan
);
pasemi_dma_free_fun
(
csring
->
fun
);
}
static
int
pasemi_mac_setup_rx_resources
(
const
struct
net_device
*
dev
)
...
...
@@ -1150,7 +1151,10 @@ static int pasemi_mac_open(struct net_device *dev)
if
(
!
mac
->
tx
)
goto
out_tx_ring
;
if
(
dev
->
mtu
>
1500
)
{
/* We might already have allocated rings in case mtu was changed
* before interface was brought up.
*/
if
(
dev
->
mtu
>
1500
&&
!
mac
->
num_cs
)
{
pasemi_mac_setup_csrings
(
mac
);
if
(
!
mac
->
num_cs
)
goto
out_tx_ring
;
...
...
@@ -1388,8 +1392,12 @@ static int pasemi_mac_close(struct net_device *dev)
free_irq
(
mac
->
tx
->
chan
.
irq
,
mac
->
tx
);
free_irq
(
mac
->
rx
->
chan
.
irq
,
mac
->
rx
);
for
(
i
=
0
;
i
<
mac
->
num_cs
;
i
++
)
for
(
i
=
0
;
i
<
mac
->
num_cs
;
i
++
)
{
pasemi_mac_free_csring
(
mac
->
cs
[
i
]);
mac
->
cs
[
i
]
=
NULL
;
}
mac
->
num_cs
=
0
;
/* Free resources */
pasemi_mac_free_rx_resources
(
mac
);
...
...
@@ -1640,6 +1648,26 @@ static int pasemi_mac_poll(struct napi_struct *napi, int budget)
return
pkts
;
}
#ifdef CONFIG_NET_POLL_CONTROLLER
/*
* Polling 'interrupt' - used by things like netconsole to send skbs
* without having to re-enable interrupts. It's not called while
* the interrupt routine is executing.
*/
static
void
pasemi_mac_netpoll
(
struct
net_device
*
dev
)
{
const
struct
pasemi_mac
*
mac
=
netdev_priv
(
dev
);
disable_irq
(
mac
->
tx
->
chan
.
irq
);
pasemi_mac_tx_intr
(
mac
->
tx
->
chan
.
irq
,
mac
->
tx
);
enable_irq
(
mac
->
tx
->
chan
.
irq
);
disable_irq
(
mac
->
rx
->
chan
.
irq
);
pasemi_mac_rx_intr
(
mac
->
rx
->
chan
.
irq
,
mac
->
rx
);
enable_irq
(
mac
->
rx
->
chan
.
irq
);
}
#endif
static
int
pasemi_mac_change_mtu
(
struct
net_device
*
dev
,
int
new_mtu
)
{
struct
pasemi_mac
*
mac
=
netdev_priv
(
dev
);
...
...
@@ -1799,6 +1827,9 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
dev
->
mtu
=
PE_DEF_MTU
;
/* 1500 MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */
mac
->
bufsz
=
dev
->
mtu
+
ETH_HLEN
+
ETH_FCS_LEN
+
LOCAL_SKB_ALIGN
+
128
;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev
->
poll_controller
=
pasemi_mac_netpoll
;
#endif
dev
->
change_mtu
=
pasemi_mac_change_mtu
;
dev
->
ethtool_ops
=
&
pasemi_mac_ethtool_ops
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment