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
7eae642f
Commit
7eae642f
authored
Feb 09, 2006
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SPARC64]: Implement SUN4V PCI config space access.
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
bade5622
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
93 additions
and
4 deletions
+93
-4
arch/sparc64/kernel/pci_sun4v.c
arch/sparc64/kernel/pci_sun4v.c
+36
-4
arch/sparc64/kernel/pci_sun4v.h
arch/sparc64/kernel/pci_sun4v.h
+9
-0
arch/sparc64/kernel/pci_sun4v_asm.S
arch/sparc64/kernel/pci_sun4v_asm.S
+48
-0
No files found.
arch/sparc64/kernel/pci_sun4v.c
View file @
7eae642f
...
...
@@ -74,15 +74,47 @@ struct pci_iommu_ops pci_sun4v_iommu_ops = {
static
int
pci_sun4v_read_pci_cfg
(
struct
pci_bus
*
bus_dev
,
unsigned
int
devfn
,
int
where
,
int
size
,
u32
*
value
)
{
/* XXX Implement me! XXX */
return
0
;
struct
pci_pbm_info
*
pbm
=
bus_dev
->
sysdata
;
unsigned
long
devhandle
=
pbm
->
devhandle
;
unsigned
int
bus
=
bus_dev
->
number
;
unsigned
int
device
=
PCI_SLOT
(
devfn
);
unsigned
int
func
=
PCI_FUNC
(
devfn
);
unsigned
long
ret
;
ret
=
pci_sun4v_config_get
(
devhandle
,
HV_PCI_DEVICE_BUILD
(
bus
,
device
,
func
),
where
,
size
);
switch
(
size
)
{
case
1
:
*
value
=
ret
&
0xff
;
break
;
case
2
:
*
value
=
ret
&
0xffff
;
break
;
case
4
:
*
value
=
ret
&
0xffffffff
;
break
;
};
return
PCIBIOS_SUCCESSFUL
;
}
static
int
pci_sun4v_write_pci_cfg
(
struct
pci_bus
*
bus_dev
,
unsigned
int
devfn
,
int
where
,
int
size
,
u32
value
)
{
/* XXX Implement me! XXX */
return
0
;
struct
pci_pbm_info
*
pbm
=
bus_dev
->
sysdata
;
unsigned
long
devhandle
=
pbm
->
devhandle
;
unsigned
int
bus
=
bus_dev
->
number
;
unsigned
int
device
=
PCI_SLOT
(
devfn
);
unsigned
int
func
=
PCI_FUNC
(
devfn
);
unsigned
long
ret
;
ret
=
pci_sun4v_config_put
(
devhandle
,
HV_PCI_DEVICE_BUILD
(
bus
,
device
,
func
),
where
,
size
,
value
);
return
PCIBIOS_SUCCESSFUL
;
}
static
struct
pci_ops
pci_sun4v_ops
=
{
...
...
arch/sparc64/kernel/pci_sun4v.h
View file @
7eae642f
...
...
@@ -16,5 +16,14 @@ extern unsigned long pci_sun4v_iommu_map(unsigned long devhandle,
extern
unsigned
long
pci_sun4v_iommu_demap
(
unsigned
long
devhandle
,
unsigned
long
tsbid
,
unsigned
long
num_ttes
);
extern
unsigned
long
pci_sun4v_config_get
(
unsigned
long
devhandle
,
unsigned
long
pci_device
,
unsigned
long
config_offset
,
unsigned
long
size
);
extern
int
pci_sun4v_config_put
(
unsigned
long
devhandle
,
unsigned
long
pci_device
,
unsigned
long
config_offset
,
unsigned
long
size
,
unsigned
long
data
);
#endif
/* !(_PCI_SUN4V_H) */
arch/sparc64/kernel/pci_sun4v_asm.S
View file @
7eae642f
...
...
@@ -54,3 +54,51 @@ pci_sun4v_iommu_demap:
ta
HV_FAST_TRAP
retl
mov
%
o1
,
%
o0
/
*
%
o0
:
devhandle
*
%
o1
:
pci_device
*
%
o2
:
pci_config_offset
*
%
o3
:
size
*
*
returns
%
o0
:
data
*
*
If
there
is
an
error
,
the
data
will
be
returned
*
as
all
1
's.
*/
.
globl
pci_sun4v_config_get
pci_sun4v_config_get
:
mov
%
o3
,
%
o4
mov
%
o2
,
%
o3
mov
%
o1
,
%
o2
mov
%
o0
,
%
o1
mov
HV_FAST_PCI_CONFIG_GET
,
%
o0
ta
HV_FAST_TRAP
brnz
,
a
,
pn
%
o1
,
1
f
mov
-
1
,
%
o2
1
:
retl
mov
%
o2
,
%
o0
/
*
%
o0
:
devhandle
*
%
o1
:
pci_device
*
%
o2
:
pci_config_offset
*
%
o3
:
size
*
%
o4
:
data
*
*
returns
%
o0
:
status
*
*
status
will
be
zero
if
the
operation
completed
*
successfully
,
else
-
1
if
not
*/
.
globl
pci_sun4v_config_put
pci_sun4v_config_put
:
mov
%
o3
,
%
o4
mov
%
o2
,
%
o3
mov
%
o1
,
%
o2
mov
%
o0
,
%
o1
mov
HV_FAST_PCI_CONFIG_PUT
,
%
o0
ta
HV_FAST_TRAP
brnz
,
a
,
pn
%
o1
,
1
f
mov
-
1
,
%
o1
1
:
retl
mov
%
o1
,
%
o0
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