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
472c54f0
Commit
472c54f0
authored
Sep 28, 2018
by
Tony Lindgren
Browse files
Options
Browse Files
Download
Plain Diff
Merge commit '
4f3530f4
' into omap-for-v4.20/ti-sysc
parents
23731eac
4f3530f4
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
55 additions
and
21 deletions
+55
-21
arch/arm/mach-omap2/omap_hwmod.c
arch/arm/mach-omap2/omap_hwmod.c
+38
-1
drivers/bus/ti-sysc.c
drivers/bus/ti-sysc.c
+17
-20
No files found.
arch/arm/mach-omap2/omap_hwmod.c
View file @
472c54f0
...
...
@@ -2160,6 +2160,37 @@ static int of_dev_hwmod_lookup(struct device_node *np,
return
-
ENODEV
;
}
/**
* omap_hwmod_fix_mpu_rt_idx - fix up mpu_rt_idx register offsets
*
* @oh: struct omap_hwmod *
* @np: struct device_node *
*
* Fix up module register offsets for modules with mpu_rt_idx.
* Only needed for cpsw with interconnect target module defined
* in device tree while still using legacy hwmod platform data
* for rev, sysc and syss registers.
*
* Can be removed when all cpsw hwmod platform data has been
* dropped.
*/
static
void
omap_hwmod_fix_mpu_rt_idx
(
struct
omap_hwmod
*
oh
,
struct
device_node
*
np
,
struct
resource
*
res
)
{
struct
device_node
*
child
=
NULL
;
int
error
;
child
=
of_get_next_child
(
np
,
child
);
if
(
!
child
)
return
;
error
=
of_address_to_resource
(
child
,
oh
->
mpu_rt_idx
,
res
);
if
(
error
)
pr_err
(
"%s: error mapping mpu_rt_idx: %i
\n
"
,
__func__
,
error
);
}
/**
* omap_hwmod_parse_module_range - map module IO range from device tree
* @oh: struct omap_hwmod *
...
...
@@ -2220,7 +2251,13 @@ int omap_hwmod_parse_module_range(struct omap_hwmod *oh,
size
=
be32_to_cpup
(
ranges
);
pr_debug
(
"omap_hwmod: %s %s at 0x%llx size 0x%llx
\n
"
,
oh
->
name
,
np
->
name
,
base
,
size
);
oh
?
oh
->
name
:
""
,
np
->
name
,
base
,
size
);
if
(
oh
&&
oh
->
mpu_rt_idx
)
{
omap_hwmod_fix_mpu_rt_idx
(
oh
,
np
,
res
);
return
0
;
}
res
->
start
=
base
;
res
->
end
=
base
+
size
-
1
;
...
...
drivers/bus/ti-sysc.c
View file @
472c54f0
...
...
@@ -499,32 +499,29 @@ static int sysc_check_registers(struct sysc *ddata)
/**
* syc_ioremap - ioremap register space for the interconnect target module
* @ddata: devi
ec
driver data
* @ddata: devi
ce
driver data
*
* Note that the interconnect target module registers can be anywhere
* within the first child device address space. For example, SGX has
* them at offset 0x1fc00 in the 32MB module address space. We just
* what we need around the interconnect target module registers.
* within the interconnect target module range. For example, SGX has
* them at offset 0x1fc00 in the 32MB module address space. And cpsw
* has them at offset 0x1200 in the CPSW_WR child. Usually the
* the interconnect target module registers are at the beginning of
* the module range though.
*/
static
int
sysc_ioremap
(
struct
sysc
*
ddata
)
{
u32
size
=
0
;
if
(
ddata
->
offsets
[
SYSC_SYSSTATUS
]
>=
0
)
size
=
ddata
->
offsets
[
SYSC_SYSSTATUS
];
else
if
(
ddata
->
offsets
[
SYSC_SYSCONFIG
]
>=
0
)
size
=
ddata
->
offsets
[
SYSC_SYSCONFIG
];
else
if
(
ddata
->
offsets
[
SYSC_REVISION
]
>=
0
)
size
=
ddata
->
offsets
[
SYSC_REVISION
];
else
return
-
EINVAL
;
int
size
;
size
=
max3
(
ddata
->
offsets
[
SYSC_REVISION
],
ddata
->
offsets
[
SYSC_SYSCONFIG
],
ddata
->
offsets
[
SYSC_SYSSTATUS
]);
size
&=
0xfff00
;
size
+=
SZ_256
;
if
(
size
<
0
||
(
size
+
sizeof
(
u32
))
>
ddata
->
module_size
)
return
-
EINVAL
;
ddata
->
module_va
=
devm_ioremap
(
ddata
->
dev
,
ddata
->
module_pa
,
size
);
size
+
sizeof
(
u32
)
);
if
(
!
ddata
->
module_va
)
return
-
EIO
;
...
...
@@ -1251,10 +1248,10 @@ static int sysc_child_suspend_noirq(struct device *dev)
if
(
!
pm_runtime_status_suspended
(
dev
))
{
error
=
pm_generic_runtime_suspend
(
dev
);
if
(
error
)
{
dev_
err
(
dev
,
"%s error
at %i: %i
\n
"
,
dev_
warn
(
dev
,
"%s busy
at %i: %i
\n
"
,
__func__
,
__LINE__
,
error
);
return
error
;
return
0
;
}
error
=
sysc_runtime_suspend
(
ddata
->
dev
);
...
...
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