Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
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
Show 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>
* Maintained by: Olof Johansson <olof@lixom.net>
*
*
...
@@ -27,7 +27,6 @@
...
@@ -27,7 +27,6 @@
#include <asm/abs_addr.h>
#include <asm/abs_addr.h>
#include <asm/firmware.h>
#include <asm/firmware.h>
#define IOBMAP_PAGE_SHIFT 12
#define IOBMAP_PAGE_SHIFT 12
#define IOBMAP_PAGE_SIZE (1 << IOBMAP_PAGE_SHIFT)
#define IOBMAP_PAGE_SIZE (1 << IOBMAP_PAGE_SHIFT)
#define IOBMAP_PAGE_MASK (IOBMAP_PAGE_SIZE - 1)
#define IOBMAP_PAGE_MASK (IOBMAP_PAGE_SIZE - 1)
...
@@ -35,13 +34,13 @@
...
@@ -35,13 +34,13 @@
#define IOB_BASE 0xe0000000
#define IOB_BASE 0xe0000000
#define IOB_SIZE 0x3000
#define IOB_SIZE 0x3000
/* Configuration registers */
/* Configuration registers */
#define IOBCAP_REG 0x
1
0
#define IOBCAP_REG 0x
4
0
#define IOBCOM_REG 0x
4
0
#define IOBCOM_REG 0x
10
0
/* Enable IOB address translation */
/* Enable IOB address translation */
#define IOBCOM_ATEN 0x00000100
#define IOBCOM_ATEN 0x00000100
/* Address decode configuration register */
/* Address decode configuration register */
#define IOB_AD_REG 0x
53
#define IOB_AD_REG 0x
14c
/* IOBCOM_AD_REG fields */
/* IOBCOM_AD_REG fields */
#define IOB_AD_VGPRT 0x00000e00
#define IOB_AD_VGPRT 0x00000e00
#define IOB_AD_VGAEN 0x00000100
#define IOB_AD_VGAEN 0x00000100
...
@@ -56,13 +55,13 @@
...
@@ -56,13 +55,13 @@
#define IOB_AD_TRNG_2G 0x00000001
#define IOB_AD_TRNG_2G 0x00000001
#define IOB_AD_TRNG_128G 0x00000003
#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 */
/* 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 */
/* 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 */
/* The top two bits of the level 1 entry contains valid and type flags */
#define IOBMAP_L1E_V 0x40000000
#define IOBMAP_L1E_V 0x40000000
...
@@ -76,7 +75,7 @@
...
@@ -76,7 +75,7 @@
#define IOBMAP_L2E_V 0x80000000
#define IOBMAP_L2E_V 0x80000000
#define IOBMAP_L2E_V_CACHED 0xc0000000
#define IOBMAP_L2E_V_CACHED 0xc0000000
static
u32
__iomem
*
iob
;
static
void
__iomem
*
iob
;
static
u32
iob_l1_emptyval
;
static
u32
iob_l1_emptyval
;
static
u32
iob_l2_emptyval
;
static
u32
iob_l2_emptyval
;
static
u32
*
iob_l2_base
;
static
u32
*
iob_l2_base
;
...
@@ -219,7 +218,7 @@ int __init iob_init(struct device_node *dn)
...
@@ -219,7 +218,7 @@ int __init iob_init(struct device_node *dn)
for
(
i
=
0
;
i
<
64
;
i
++
)
{
for
(
i
=
0
;
i
<
64
;
i
++
)
{
/* Each L1 covers 32MB, i.e. 8K entries = 32K of ram */
/* Each L1 covers 32MB, i.e. 8K entries = 32K of ram */
regword
=
IOBMAP_L1E_V
|
(
__pa
(
iob_l2_base
+
i
*
0x2000
)
>>
12
);
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 */
/* 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)
...
@@ -1410,11 +1410,6 @@ void mpic_cpu_set_priority(int prio)
mpic_cpu_write
(
MPIC_INFO
(
CPU_CURRENT_TASK_PRI
),
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
)
void
mpic_teardown_this_cpu
(
int
secondary
)
{
{
struct
mpic
*
mpic
=
mpic_primary
;
struct
mpic
*
mpic
=
mpic_primary
;
...
@@ -1434,6 +1429,10 @@ void mpic_teardown_this_cpu(int secondary)
...
@@ -1434,6 +1429,10 @@ void mpic_teardown_this_cpu(int secondary)
/* Set current processor priority to max */
/* Set current processor priority to max */
mpic_cpu_write
(
MPIC_INFO
(
CPU_CURRENT_TASK_PRI
),
0xf
);
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
);
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)
...
@@ -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_flag
(
csring
->
events
[
1
]);
pasemi_dma_free_ring
(
&
csring
->
chan
);
pasemi_dma_free_ring
(
&
csring
->
chan
);
pasemi_dma_free_chan
(
&
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
)
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)
...
@@ -1150,7 +1151,10 @@ static int pasemi_mac_open(struct net_device *dev)
if
(
!
mac
->
tx
)
if
(
!
mac
->
tx
)
goto
out_tx_ring
;
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
);
pasemi_mac_setup_csrings
(
mac
);
if
(
!
mac
->
num_cs
)
if
(
!
mac
->
num_cs
)
goto
out_tx_ring
;
goto
out_tx_ring
;
...
@@ -1388,8 +1392,12 @@ static int pasemi_mac_close(struct net_device *dev)
...
@@ -1388,8 +1392,12 @@ static int pasemi_mac_close(struct net_device *dev)
free_irq
(
mac
->
tx
->
chan
.
irq
,
mac
->
tx
);
free_irq
(
mac
->
tx
->
chan
.
irq
,
mac
->
tx
);
free_irq
(
mac
->
rx
->
chan
.
irq
,
mac
->
rx
);
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
]);
pasemi_mac_free_csring
(
mac
->
cs
[
i
]);
mac
->
cs
[
i
]
=
NULL
;
}
mac
->
num_cs
=
0
;
/* Free resources */
/* Free resources */
pasemi_mac_free_rx_resources
(
mac
);
pasemi_mac_free_rx_resources
(
mac
);
...
@@ -1640,6 +1648,26 @@ static int pasemi_mac_poll(struct napi_struct *napi, int budget)
...
@@ -1640,6 +1648,26 @@ static int pasemi_mac_poll(struct napi_struct *napi, int budget)
return
pkts
;
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
)
static
int
pasemi_mac_change_mtu
(
struct
net_device
*
dev
,
int
new_mtu
)
{
{
struct
pasemi_mac
*
mac
=
netdev_priv
(
dev
);
struct
pasemi_mac
*
mac
=
netdev_priv
(
dev
);
...
@@ -1799,6 +1827,9 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
...
@@ -1799,6 +1827,9 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
dev
->
mtu
=
PE_DEF_MTU
;
dev
->
mtu
=
PE_DEF_MTU
;
/* 1500 MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */
/* 1500 MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */
mac
->
bufsz
=
dev
->
mtu
+
ETH_HLEN
+
ETH_FCS_LEN
+
LOCAL_SKB_ALIGN
+
128
;
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
->
change_mtu
=
pasemi_mac_change_mtu
;
dev
->
ethtool_ops
=
&
pasemi_mac_ethtool_ops
;
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