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
nexedi
linux
Commits
9fc85a71
Commit
9fc85a71
authored
Dec 30, 2019
by
Tony Lindgren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'omap-for-v5.6/sdma' into omap-for-v5.6/ti-sysc-drop-pdata
parents
6e678a76
37b156ec
Changes
26
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
389 additions
and
1160 deletions
+389
-1160
arch/arm/boot/dts/dra7-l4.dtsi
arch/arm/boot/dts/dra7-l4.dtsi
+1
-2
arch/arm/boot/dts/omap2.dtsi
arch/arm/boot/dts/omap2.dtsi
+32
-11
arch/arm/boot/dts/omap2430.dtsi
arch/arm/boot/dts/omap2430.dtsi
+4
-0
arch/arm/boot/dts/omap3-n900.dts
arch/arm/boot/dts/omap3-n900.dts
+5
-0
arch/arm/boot/dts/omap3.dtsi
arch/arm/boot/dts/omap3.dtsi
+35
-11
arch/arm/boot/dts/omap36xx.dtsi
arch/arm/boot/dts/omap36xx.dtsi
+4
-0
arch/arm/boot/dts/omap4-l4.dtsi
arch/arm/boot/dts/omap4-l4.dtsi
+1
-2
arch/arm/boot/dts/omap5-l4.dtsi
arch/arm/boot/dts/omap5-l4.dtsi
+1
-2
arch/arm/mach-omap2/common.h
arch/arm/mach-omap2/common.h
+3
-0
arch/arm/mach-omap2/dma.c
arch/arm/mach-omap2/dma.c
+16
-103
arch/arm/mach-omap2/omap_device.c
arch/arm/mach-omap2/omap_device.c
+0
-170
arch/arm/mach-omap2/omap_device.h
arch/arm/mach-omap2/omap_device.h
+0
-4
arch/arm/mach-omap2/omap_hwmod_2420_data.c
arch/arm/mach-omap2/omap_hwmod_2420_data.c
+0
-34
arch/arm/mach-omap2/omap_hwmod_2430_data.c
arch/arm/mach-omap2/omap_hwmod_2430_data.c
+0
-34
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
+0
-18
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+0
-61
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+0
-69
arch/arm/mach-omap2/omap_hwmod_54xx_data.c
arch/arm/mach-omap2/omap_hwmod_54xx_data.c
+0
-62
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
+0
-60
arch/arm/mach-omap2/omap_hwmod_common_data.h
arch/arm/mach-omap2/omap_hwmod_common_data.h
+0
-1
arch/arm/mach-omap2/pdata-quirks.c
arch/arm/mach-omap2/pdata-quirks.c
+1
-0
arch/arm/mach-omap2/pm24xx.c
arch/arm/mach-omap2/pm24xx.c
+10
-12
arch/arm/mach-omap2/pm34xx.c
arch/arm/mach-omap2/pm34xx.c
+0
-5
arch/arm/plat-omap/dma.c
arch/arm/plat-omap/dma.c
+8
-463
drivers/dma/ti/omap-dma.c
drivers/dma/ti/omap-dma.c
+268
-18
include/linux/omap-dma.h
include/linux/omap-dma.h
+0
-18
No files found.
arch/arm/boot/dts/dra7-l4.dtsi
View file @
9fc85a71
...
...
@@ -186,7 +186,6 @@ cm_core_clockdomains: clockdomains {
target-module@56000 { /* 0x4a056000, ap 9 02.0 */
compatible = "ti,sysc-omap2", "ti,sysc";
ti,hwmods = "dma_system";
reg = <0x56000 0x4>,
<0x5602c 0x4>,
<0x56028 0x4>;
...
...
@@ -212,7 +211,7 @@ SYSC_OMAP2_SOFTRESET |
ranges = <0x0 0x56000 0x1000>;
sdma: dma-controller@0 {
compatible = "ti,omap4430-sdma";
compatible = "ti,omap4430-sdma"
, "ti,omap-sdma"
;
reg = <0x0 0x1000>;
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
...
...
arch/arm/boot/dts/omap2.dtsi
View file @
9fc85a71
...
...
@@ -8,6 +8,7 @@
* kind, whether express or implied.
*/
#include <dt-bindings/bus/ti-sysc.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/pinctrl/omap.h>
...
...
@@ -79,17 +80,37 @@ intc: interrupt-controller@1 {
reg = <0x480FE000 0x1000>;
};
sdma: dma-controller@48056000 {
compatible = "ti,omap2430-sdma", "ti,omap2420-sdma";
ti,hwmods = "dma";
reg = <0x48056000 0x1000>;
interrupts = <12>,
<13>,
<14>,
<15>;
#dma-cells = <1>;
dma-channels = <32>;
dma-requests = <64>;
target-module@48056000 {
compatible = "ti,sysc-omap2", "ti,sysc";
reg = <0x48056000 0x4>,
<0x4805602c 0x4>,
<0x48056028 0x4>;
reg-names = "rev", "sysc", "syss";
ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
SYSC_OMAP2_EMUFREE |
SYSC_OMAP2_SOFTRESET |
SYSC_OMAP2_AUTOIDLE)>;
ti,sysc-midle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ti,syss-mask = <1>;
clocks = <&core_l3_ck>;
clock-names = "fck";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x48056000 0x1000>;
sdma: dma-controller@0 {
compatible = "ti,omap2420-sdma", "ti,omap-sdma";
reg = <0 0x1000>;
interrupts = <12>,
<13>,
<14>,
<15>;
#dma-cells = <1>;
dma-channels = <32>;
dma-requests = <64>;
};
};
i2c1: i2c@48070000 {
...
...
arch/arm/boot/dts/omap2430.dtsi
View file @
9fc85a71
...
...
@@ -309,6 +309,10 @@ wd_timer2: wdt@49016000 {
};
};
&sdma {
compatible = "ti,omap2430-sdma", "ti,omap-sdma";
};
&i2c1 {
compatible = "ti,omap2430-i2c";
};
...
...
arch/arm/boot/dts/omap3-n900.dts
View file @
9fc85a71
...
...
@@ -482,6 +482,11 @@ &vintdig {
regulator
-
always
-
on
;
};
/*
First
two
dma
channels
are
reserved
on
secure
omap3
*/
&
sdma
{
dma
-
channel
-
mask
=
<
0xfffffffc
>;
};
&
twl
{
twl_audio
:
audio
{
compatible
=
"ti,twl4030-audio"
;
...
...
arch/arm/boot/dts/omap3.dtsi
View file @
9fc85a71
...
...
@@ -206,17 +206,41 @@ intc: interrupt-controller@48200000 {
reg = <0x48200000 0x1000>;
};
sdma: dma-controller@48056000 {
compatible = "ti,omap3630-sdma", "ti,omap3430-sdma";
reg = <0x48056000 0x1000>;
interrupts = <12>,
<13>,
<14>,
<15>;
#dma-cells = <1>;
dma-channels = <32>;
dma-requests = <96>;
ti,hwmods = "dma";
target-module@48056000 {
compatible = "ti,sysc-omap2", "ti,sysc";
reg = <0x48056000 0x4>,
<0x4805602c 0x4>,
<0x48056028 0x4>;
reg-names = "rev", "sysc", "syss";
ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
SYSC_OMAP2_EMUFREE |
SYSC_OMAP2_SOFTRESET |
SYSC_OMAP2_AUTOIDLE)>;
ti,sysc-midle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ti,syss-mask = <1>;
/* Domains (V, P, C): core, core_pwrdm, core_l3_clkdm */
clocks = <&core_l3_ick>;
clock-names = "ick";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x48056000 0x1000>;
sdma: dma-controller@0 {
compatible = "ti,omap3430-sdma", "ti,omap-sdma";
reg = <0x0 0x1000>;
interrupts = <12>,
<13>,
<14>,
<15>;
#dma-cells = <1>;
dma-channels = <32>;
dma-requests = <96>;
};
};
gpio1: gpio@48310000 {
...
...
arch/arm/boot/dts/omap36xx.dtsi
View file @
9fc85a71
...
...
@@ -223,6 +223,10 @@ thermal_zones: thermal-zones {
};
};
&sdma {
compatible = "ti,omap3630-sdma", "ti,omap-sdma";
};
/* OMAP3630 needs dss_96m_fck for VENC */
&venc {
clocks = <&dss_tv_fck>, <&dss_96m_fck>;
...
...
arch/arm/boot/dts/omap4-l4.dtsi
View file @
9fc85a71
...
...
@@ -136,7 +136,6 @@ cm2_clockdomains: clockdomains {
target-module@56000 { /* 0x4a056000, ap 7 0a.0 */
compatible = "ti,sysc-omap2", "ti,sysc";
ti,hwmods = "dma_system";
reg = <0x56000 0x4>,
<0x5602c 0x4>,
<0x56028 0x4>;
...
...
@@ -160,7 +159,7 @@ SYSC_OMAP2_SOFTRESET |
ranges = <0x0 0x56000 0x1000>;
sdma: dma-controller@0 {
compatible = "ti,omap4430-sdma";
compatible = "ti,omap4430-sdma"
, "ti,omap-sdma"
;
reg = <0x0 0x1000>;
interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
...
...
arch/arm/boot/dts/omap5-l4.dtsi
View file @
9fc85a71
...
...
@@ -213,7 +213,6 @@ dwc3: dwc3@10000 {
target-module@56000 { /* 0x4a056000, ap 7 02.0 */
compatible = "ti,sysc-omap2", "ti,sysc";
ti,hwmods = "dma_system";
reg = <0x56000 0x4>,
<0x5602c 0x4>,
<0x56028 0x4>;
...
...
@@ -237,7 +236,7 @@ SYSC_OMAP2_SOFTRESET |
ranges = <0x0 0x56000 0x1000>;
sdma: dma-controller@0 {
compatible = "ti,omap4430-sdma";
compatible = "ti,omap4430-sdma"
, "ti,omap-sdma"
;
reg = <0x0 0x1000>;
interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
...
...
arch/arm/mach-omap2/common.h
View file @
9fc85a71
...
...
@@ -345,9 +345,12 @@ static inline int dra7xx_pciess_reset(struct omap_hwmod *oh)
}
#endif
struct
omap_system_dma_plat_info
;
void
pdata_quirks_init
(
const
struct
of_device_id
*
);
void
omap_auxdata_legacy_init
(
struct
device
*
dev
);
void
omap_pcs_legacy_init
(
int
irq
,
void
(
*
rearm
)(
void
));
extern
struct
omap_system_dma_plat_info
dma_plat_info
;
struct
omap_sdrc_params
;
extern
void
omap_sdrc_init
(
struct
omap_sdrc_params
*
sdrc_cs0
,
...
...
arch/arm/mach-omap2/dma.c
View file @
9fc85a71
...
...
@@ -30,10 +30,6 @@
#include <linux/omap-dma.h>
#include "soc.h"
#include "omap_hwmod.h"
#include "omap_device.h"
static
enum
omap_reg_offsets
dma_common_ch_end
;
static
const
struct
omap_dma_reg
reg_map
[]
=
{
[
REVISION
]
=
{
0x0000
,
0x00
,
OMAP_DMA_REG_32BIT
},
...
...
@@ -81,42 +77,6 @@ static const struct omap_dma_reg reg_map[] = {
[
CCDN
]
=
{
0x00d8
,
0x60
,
OMAP_DMA_REG_32BIT
},
};
static
void
__iomem
*
dma_base
;
static
inline
void
dma_write
(
u32
val
,
int
reg
,
int
lch
)
{
void
__iomem
*
addr
=
dma_base
;
addr
+=
reg_map
[
reg
].
offset
;
addr
+=
reg_map
[
reg
].
stride
*
lch
;
writel_relaxed
(
val
,
addr
);
}
static
inline
u32
dma_read
(
int
reg
,
int
lch
)
{
void
__iomem
*
addr
=
dma_base
;
addr
+=
reg_map
[
reg
].
offset
;
addr
+=
reg_map
[
reg
].
stride
*
lch
;
return
readl_relaxed
(
addr
);
}
static
void
omap2_clear_dma
(
int
lch
)
{
int
i
;
for
(
i
=
CSDP
;
i
<=
dma_common_ch_end
;
i
+=
1
)
dma_write
(
0
,
i
,
lch
);
}
static
void
omap2_show_dma_caps
(
void
)
{
u8
revision
=
dma_read
(
REVISION
,
0
)
&
0xff
;
printk
(
KERN_INFO
"OMAP DMA hardware revision %d.%d
\n
"
,
revision
>>
4
,
revision
&
0xf
);
}
static
unsigned
configure_dma_errata
(
void
)
{
unsigned
errata
=
0
;
...
...
@@ -211,82 +171,35 @@ static const struct dma_slave_map omap24xx_sdma_dt_map[] = {
{
"musb-hdrc.1.auto"
,
"dmareq5"
,
SDMA_FILTER_PARAM
(
64
)
},
/* OMAP2420 only */
};
static
struct
omap_system_dma_plat_info
dma_plat_info
__initdata
=
{
.
reg_map
=
reg_map
,
.
channel_stride
=
0x60
,
.
show_dma_caps
=
omap2_show_dma_caps
,
.
clear_dma
=
omap2_clear_dma
,
.
dma_write
=
dma_write
,
.
dma_read
=
dma_read
,
static
struct
omap_dma_dev_attr
dma_attr
=
{
.
dev_caps
=
RESERVE_CHANNEL
|
DMA_LINKED_LCH
|
GLOBAL_PRIORITY
|
IS_CSSA_32
|
IS_CDSA_32
,
.
lch_count
=
32
,
};
st
atic
struct
platform_device_info
omap_dma_dev_info
__initdata
=
{
.
name
=
"omap-dma-engine"
,
.
id
=
-
1
,
.
dma_
mask
=
DMA_BIT_MASK
(
32
)
,
st
ruct
omap_system_dma_plat_info
dma_plat_info
=
{
.
reg_map
=
reg_map
,
.
channel_stride
=
0x60
,
.
dma_
attr
=
&
dma_attr
,
};
/* One time initializations */
static
int
__init
omap2_system_dma_init
_dev
(
struct
omap_hwmod
*
oh
,
void
*
unuse
d
)
static
int
__init
omap2_system_dma_init
(
voi
d
)
{
struct
platform_device
*
pdev
;
struct
omap_system_dma_plat_info
p
;
struct
omap_dma_dev_attr
*
d
;
struct
resource
*
mem
;
char
*
name
=
"omap_dma_system"
;
p
=
dma_plat_info
;
p
.
dma_attr
=
(
struct
omap_dma_dev_attr
*
)
oh
->
dev_attr
;
p
.
errata
=
configure_dma_errata
();
dma_plat_info
.
errata
=
configure_dma_errata
();
if
(
soc_is_omap24xx
())
{
/* DMA slave map for drivers not yet converted to DT */
p
.
slave_map
=
omap24xx_sdma_dt_map
;
p
.
slavecnt
=
ARRAY_SIZE
(
omap24xx_sdma_dt_map
);
dma_plat_info
.
slave_map
=
omap24xx_sdma_dt_map
;
dma_plat_info
.
slavecnt
=
ARRAY_SIZE
(
omap24xx_sdma_dt_map
);
}
pdev
=
omap_device_build
(
name
,
0
,
oh
,
&
p
,
sizeof
(
p
));
if
(
IS_ERR
(
pdev
))
{
pr_err
(
"%s: Can't build omap_device for %s:%s.
\n
"
,
__func__
,
name
,
oh
->
name
);
return
PTR_ERR
(
pdev
);
}
omap_dma_dev_info
.
res
=
pdev
->
resource
;
omap_dma_dev_info
.
num_res
=
pdev
->
num_resources
;
if
(
!
soc_is_omap242x
())
dma_attr
.
dev_caps
|=
IS_RW_PRIORITY
;
mem
=
platform_get_resource
(
pdev
,
IORESOURCE_MEM
,
0
);
if
(
!
mem
)
{
dev_err
(
&
pdev
->
dev
,
"%s: no mem resource
\n
"
,
__func__
);
return
-
EINVAL
;
}
dma_base
=
ioremap
(
mem
->
start
,
resource_size
(
mem
));
if
(
!
dma_base
)
{
dev_err
(
&
pdev
->
dev
,
"%s: ioremap fail
\n
"
,
__func__
);
return
-
ENOMEM
;
}
d
=
oh
->
dev_attr
;
if
(
cpu_is_omap34xx
()
&&
(
omap_type
()
!=
OMAP2_DEVICE_TYPE_GP
))
d
->
dev_caps
|=
HS_CHANNELS_RESERVED
;
if
(
platform_get_irq_byname
(
pdev
,
"0"
)
<
0
)
d
->
dev_caps
|=
DMA_ENGINE_HANDLE_IRQ
;
/* Check the capabilities register for descriptor loading feature */
if
(
dma_read
(
CAPS_0
,
0
)
&
DMA_HAS_DESCRIPTOR_CAPS
)
dma_common_ch_end
=
CCDN
;
else
dma_common_ch_end
=
CCFN
;
if
(
soc_is_omap34xx
()
&&
(
omap_type
()
!=
OMAP2_DEVICE_TYPE_GP
))
dma_attr
.
dev_caps
|=
HS_CHANNELS_RESERVED
;
return
0
;
}
static
int
__init
omap2_system_dma_init
(
void
)
{
return
omap_hwmod_for_each_by_class
(
"dma"
,
omap2_system_dma_init_dev
,
NULL
);
}
omap_arch_initcall
(
omap2_system_dma_init
);
arch/arm/mach-omap2/omap_device.c
View file @
9fc85a71
...
...
@@ -373,176 +373,6 @@ void omap_device_delete(struct omap_device *od)
kfree
(
od
);
}
/**
* omap_device_copy_resources - Add legacy IO and IRQ resources
* @oh: interconnect target module
* @pdev: platform device to copy resources to
*
* We still have legacy DMA and smartreflex needing resources.
* Let's populate what they need until we can eventually just
* remove this function. Note that there should be no need to
* call this from omap_device_build_from_dt(), nor should there
* be any need to call it for other devices.
*/
static
int
omap_device_copy_resources
(
struct
omap_hwmod
*
oh
,
struct
platform_device
*
pdev
)
{
struct
device_node
*
np
,
*
child
;
struct
property
*
prop
;
struct
resource
*
res
;
const
char
*
name
;
int
error
,
irq
=
0
;
if
(
!
oh
||
!
oh
->
od
||
!
oh
->
od
->
pdev
)
return
-
EINVAL
;
np
=
oh
->
od
->
pdev
->
dev
.
of_node
;
if
(
!
np
)
{
error
=
-
ENODEV
;
goto
error
;
}
res
=
kcalloc
(
2
,
sizeof
(
*
res
),
GFP_KERNEL
);
if
(
!
res
)
return
-
ENOMEM
;
/* Do we have a dts range for the interconnect target module? */
error
=
omap_hwmod_parse_module_range
(
oh
,
np
,
res
);
/* No ranges, rely on device reg entry */
if
(
error
)
error
=
of_address_to_resource
(
np
,
0
,
res
);
if
(
error
)
goto
free
;
/* SmartReflex needs first IO resource name to be "mpu" */
res
[
0
].
name
=
"mpu"
;
/*
* We may have a configured "ti,sysc" interconnect target with a
* dts child with the interrupt. If so use the first child's
* first interrupt for "ti-hwmods" legacy support.
*/
of_property_for_each_string
(
np
,
"compatible"
,
prop
,
name
)
if
(
!
strncmp
(
"ti,sysc-"
,
name
,
8
))
break
;
child
=
of_get_next_available_child
(
np
,
NULL
);
if
(
name
)
irq
=
irq_of_parse_and_map
(
child
,
0
);
if
(
!
irq
)
irq
=
irq_of_parse_and_map
(
np
,
0
);
if
(
!
irq
)
{
error
=
-
EINVAL
;
goto
free
;
}
/* Legacy DMA code needs interrupt name to be "0" */
res
[
1
].
start
=
irq
;
res
[
1
].
end
=
irq
;
res
[
1
].
flags
=
IORESOURCE_IRQ
;
res
[
1
].
name
=
"0"
;
error
=
platform_device_add_resources
(
pdev
,
res
,
2
);
free:
kfree
(
res
);
error:
WARN
(
error
,
"%s: %s device %s failed: %i
\n
"
,
__func__
,
oh
->
name
,
dev_name
(
&
pdev
->
dev
),
error
);
return
error
;
}
/**
* omap_device_build - build and register an omap_device with one omap_hwmod
* @pdev_name: name of the platform_device driver to use
* @pdev_id: this platform_device's connection ID
* @oh: ptr to the single omap_hwmod that backs this omap_device
* @pdata: platform_data ptr to associate with the platform_device
* @pdata_len: amount of memory pointed to by @pdata
*
* Convenience function for building and registering a single
* omap_device record, which in turn builds and registers a
* platform_device record. See omap_device_build_ss() for more
* information. Returns ERR_PTR(-EINVAL) if @oh is NULL; otherwise,
* passes along the return value of omap_device_build_ss().
*/
struct
platform_device
__init
*
omap_device_build
(
const
char
*
pdev_name
,
int
pdev_id
,
struct
omap_hwmod
*
oh
,
void
*
pdata
,
int
pdata_len
)
{
int
ret
=
-
ENOMEM
;
struct
platform_device
*
pdev
;
struct
omap_device
*
od
;
if
(
!
oh
||
!
pdev_name
)
return
ERR_PTR
(
-
EINVAL
);
if
(
!
pdata
&&
pdata_len
>
0
)
return
ERR_PTR
(
-
EINVAL
);
if
(
strncmp
(
oh
->
name
,
"smartreflex"
,
11
)
&&
strncmp
(
oh
->
name
,
"dma"
,
3
))
{
pr_warn
(
"%s need to update %s to probe with dt
\n
a"
,
__func__
,
pdev_name
);
ret
=
-
ENODEV
;
goto
odbs_exit
;
}
pdev
=
platform_device_alloc
(
pdev_name
,
pdev_id
);
if
(
!
pdev
)
{
ret
=
-
ENOMEM
;
goto
odbs_exit
;
}
/* Set the dev_name early to allow dev_xxx in omap_device_alloc */
if
(
pdev
->
id
!=
-
1
)
dev_set_name
(
&
pdev
->
dev
,
"%s.%d"
,
pdev
->
name
,
pdev
->
id
);
else
dev_set_name
(
&
pdev
->
dev
,
"%s"
,
pdev
->
name
);
/*
* Must be called before omap_device_alloc() as oh->od
* only contains the currently registered omap_device
* and will get overwritten by omap_device_alloc().
*/
ret
=
omap_device_copy_resources
(
oh
,
pdev
);
if
(
ret
)
goto
odbs_exit1
;
od
=
omap_device_alloc
(
pdev
,
&
oh
,
1
);
if
(
IS_ERR
(
od
))
{
ret
=
PTR_ERR
(
od
);
goto
odbs_exit1
;
}
ret
=
platform_device_add_data
(
pdev
,
pdata
,
pdata_len
);
if
(
ret
)
goto
odbs_exit2
;
ret
=
omap_device_register
(
pdev
);
if
(
ret
)
goto
odbs_exit2
;
return
pdev
;
odbs_exit2:
omap_device_delete
(
od
);
odbs_exit1:
platform_device_put
(
pdev
);
odbs_exit:
pr_err
(
"omap_device: %s: build failed (%d)
\n
"
,
pdev_name
,
ret
);
return
ERR_PTR
(
ret
);
}
#ifdef CONFIG_PM
static
int
_od_runtime_suspend
(
struct
device
*
dev
)
{
...
...
arch/arm/mach-omap2/omap_device.h
View file @
9fc85a71
...
...
@@ -68,10 +68,6 @@ int omap_device_idle(struct platform_device *pdev);
/* Core code interface */
struct
platform_device
*
omap_device_build
(
const
char
*
pdev_name
,
int
pdev_id
,
struct
omap_hwmod
*
oh
,
void
*
pdata
,
int
pdata_len
);
struct
omap_device
*
omap_device_alloc
(
struct
platform_device
*
pdev
,
struct
omap_hwmod
**
ohs
,
int
oh_cnt
);
void
omap_device_delete
(
struct
omap_device
*
od
);
...
...
arch/arm/mach-omap2/omap_hwmod_2420_data.c
View file @
9fc85a71
...
...
@@ -11,7 +11,6 @@
*/
#include <linux/platform_data/i2c-omap.h>
#include <linux/omap-dma.h>
#include "omap_hwmod.h"
#include "l3_2xxx.h"
...
...
@@ -126,21 +125,6 @@ static struct omap_hwmod omap2420_i2c2_hwmod = {
.
flags
=
HWMOD_16BIT_REG
,
};
/* dma attributes */
static
struct
omap_dma_dev_attr
dma_dev_attr
=
{
.
dev_caps
=
RESERVE_CHANNEL
|
DMA_LINKED_LCH
|
GLOBAL_PRIORITY
|
IS_CSSA_32
|
IS_CDSA_32
,
.
lch_count
=
32
,
};
static
struct
omap_hwmod
omap2420_dma_system_hwmod
=
{
.
name
=
"dma"
,
.
class
=
&
omap2xxx_dma_hwmod_class
,
.
main_clk
=
"core_l3_ck"
,
.
dev_attr
=
&
dma_dev_attr
,
.
flags
=
HWMOD_NO_IDLEST
,
};
/* mailbox */
static
struct
omap_hwmod
omap2420_mailbox_hwmod
=
{
.
name
=
"mailbox"
,
...
...
@@ -328,22 +312,6 @@ static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio4 = {
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* dma_system -> L3 */
static
struct
omap_hwmod_ocp_if
omap2420_dma_system__l3
=
{
.
master
=
&
omap2420_dma_system_hwmod
,
.
slave
=
&
omap2xxx_l3_main_hwmod
,
.
clk
=
"core_l3_ck"
,
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_core -> dma_system */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__dma_system
=
{
.
master
=
&
omap2xxx_l4_core_hwmod
,
.
slave
=
&
omap2420_dma_system_hwmod
,
.
clk
=
"sdma_ick"
,
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_core -> mailbox */
static
struct
omap_hwmod_ocp_if
omap2420_l4_core__mailbox
=
{
.
master
=
&
omap2xxx_l4_core_hwmod
,
...
...
@@ -435,8 +403,6 @@ static struct omap_hwmod_ocp_if *omap2420_hwmod_ocp_ifs[] __initdata = {
&
omap2420_l4_wkup__gpio2
,
&
omap2420_l4_wkup__gpio3
,
&
omap2420_l4_wkup__gpio4
,
&
omap2420_dma_system__l3
,
&
omap2420_l4_core__dma_system
,
&
omap2420_l4_core__mailbox
,
&
omap2420_l4_core__mcbsp1
,
&
omap2420_l4_core__mcbsp2
,
...
...
arch/arm/mach-omap2/omap_hwmod_2430_data.c
View file @
9fc85a71
...
...
@@ -12,7 +12,6 @@
#include <linux/platform_data/i2c-omap.h>
#include <linux/platform_data/hsmmc-omap.h>
#include <linux/omap-dma.h>
#include "omap_hwmod.h"
#include "l3_2xxx.h"
...
...
@@ -121,21 +120,6 @@ static struct omap_hwmod omap2430_gpio5_hwmod = {
.
class
=
&
omap2xxx_gpio_hwmod_class
,
};
/* dma attributes */
static
struct
omap_dma_dev_attr
dma_dev_attr
=
{
.
dev_caps
=
RESERVE_CHANNEL
|
DMA_LINKED_LCH
|
GLOBAL_PRIORITY
|
IS_CSSA_32
|
IS_CDSA_32
|
IS_RW_PRIORITY
,
.
lch_count
=
32
,
};
static
struct
omap_hwmod
omap2430_dma_system_hwmod
=
{
.
name
=
"dma"
,
.
class
=
&
omap2xxx_dma_hwmod_class
,
.
main_clk
=
"core_l3_ck"
,
.
dev_attr
=
&
dma_dev_attr
,
.
flags
=
HWMOD_NO_IDLEST
,
};
/* mailbox */
static
struct
omap_hwmod
omap2430_mailbox_hwmod
=
{
.
name
=
"mailbox"
,
...
...
@@ -508,22 +492,6 @@ static struct omap_hwmod_ocp_if omap2430_l4_core__gpio5 = {
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* dma_system -> L3 */
static
struct
omap_hwmod_ocp_if
omap2430_dma_system__l3
=
{
.
master
=
&
omap2430_dma_system_hwmod
,
.
slave
=
&
omap2xxx_l3_main_hwmod
,
.
clk
=
"core_l3_ck"
,
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_core -> dma_system */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__dma_system
=
{
.
master
=
&
omap2xxx_l4_core_hwmod
,
.
slave
=
&
omap2430_dma_system_hwmod
,
.
clk
=
"sdma_ick"
,
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_core -> mailbox */
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__mailbox
=
{
.
master
=
&
omap2xxx_l4_core_hwmod
,
...
...
@@ -635,8 +603,6 @@ static struct omap_hwmod_ocp_if *omap2430_hwmod_ocp_ifs[] __initdata = {
&
omap2430_l4_wkup__gpio3
,
&
omap2430_l4_wkup__gpio4
,
&
omap2430_l4_core__gpio5
,
&
omap2430_dma_system__l3
,
&
omap2430_l4_core__dma_system
,
&
omap2430_l4_core__mailbox
,
&
omap2430_l4_core__mcbsp1
,
&
omap2430_l4_core__mcbsp2
,
...
...
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
View file @
9fc85a71
...
...
@@ -7,7 +7,6 @@
*/
#include <linux/types.h>
#include <linux/omap-dma.h>
#include "omap_hwmod.h"
#include "omap_hwmod_common_data.h"
...
...
@@ -95,23 +94,6 @@ struct omap_hwmod_class omap2xxx_gpio_hwmod_class = {
.
sysc
=
&
omap2xxx_gpio_sysc
,
};
/* system dma */
static
struct
omap_hwmod_class_sysconfig
omap2xxx_dma_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x002c
,
.
syss_offs
=
0x0028
,
.
sysc_flags
=
(
SYSC_HAS_SOFTRESET
|
SYSC_HAS_MIDLEMODE
|
SYSC_HAS_CLOCKACTIVITY
|
SYSC_HAS_EMUFREE
|
SYSC_HAS_AUTOIDLE
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
MSTANDBY_FORCE
|
MSTANDBY_NO
|
MSTANDBY_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
struct
omap_hwmod_class
omap2xxx_dma_hwmod_class
=
{
.
name
=
"dma"
,
.
sysc
=
&
omap2xxx_dma_sysc
,
};
/*
* 'mailbox' class
* mailbox module allowing communication between the on-chip processors
...
...
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
View file @
9fc85a71
...
...
@@ -16,7 +16,6 @@
#include <linux/power/smartreflex.h>
#include <linux/platform_data/hsmmc-omap.h>
#include <linux/omap-dma.h>
#include "l3_3xxx.h"
#include "l4_3xxx.h"
...
...
@@ -833,47 +832,6 @@ static struct omap_hwmod omap3xxx_gpio6_hwmod = {
.
class
=
&
omap3xxx_gpio_hwmod_class
,
};
/* dma attributes */
static
struct
omap_dma_dev_attr
dma_dev_attr
=
{
.
dev_caps
=
RESERVE_CHANNEL
|
DMA_LINKED_LCH
|
GLOBAL_PRIORITY
|
IS_CSSA_32
|
IS_CDSA_32
|
IS_RW_PRIORITY
,
.
lch_count
=
32
,
};
static
struct
omap_hwmod_class_sysconfig
omap3xxx_dma_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x002c
,
.
syss_offs
=
0x0028
,
.
sysc_flags
=
(
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_MIDLEMODE
|
SYSC_HAS_CLOCKACTIVITY
|
SYSC_HAS_EMUFREE
|
SYSC_HAS_AUTOIDLE
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
|
MSTANDBY_FORCE
|
MSTANDBY_NO
|
MSTANDBY_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
omap3xxx_dma_hwmod_class
=
{
.
name
=
"dma"
,
.
sysc
=
&
omap3xxx_dma_sysc
,
};
/* dma_system */
static
struct
omap_hwmod
omap3xxx_dma_system_hwmod
=
{
.
name
=
"dma"
,
.
class
=
&
omap3xxx_dma_hwmod_class
,
.
main_clk
=
"core_l3_ick"
,
.
prcm
=
{
.
omap2
=
{
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP3430_ST_SDMA_SHIFT
,
},
},
.
dev_attr
=
&
dma_dev_attr
,
.
flags
=
HWMOD_NO_IDLEST
,
};
/*
* 'mcbsp' class
* multi channel buffered serial port controller
...
...
@@ -2233,23 +2191,6 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio6 = {
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* dma_system -> L3 */
static
struct
omap_hwmod_ocp_if
omap3xxx_dma_system__l3
=
{
.
master
=
&
omap3xxx_dma_system_hwmod
,
.
slave
=
&
omap3xxx_l3_main_hwmod
,
.
clk
=
"core_l3_ick"
,
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_cfg -> dma_system */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_core__dma_system
=
{
.
master
=
&
omap3xxx_l4_core_hwmod
,
.
slave
=
&
omap3xxx_dma_system_hwmod
,
.
clk
=
"core_l4_ick"
,
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_core -> mcbsp1 */
static
struct
omap_hwmod_ocp_if
omap3xxx_l4_core__mcbsp1
=
{
.
master
=
&
omap3xxx_l4_core_hwmod
,
...
...
@@ -2628,8 +2569,6 @@ static struct omap_hwmod_ocp_if *omap3xxx_hwmod_ocp_ifs[] __initdata = {
&
omap3xxx_l4_per__gpio4
,
&
omap3xxx_l4_per__gpio5
,
&
omap3xxx_l4_per__gpio6
,
&
omap3xxx_dma_system__l3
,
&
omap3xxx_l4_core__dma_system
,
&
omap3xxx_l4_core__mcbsp1
,
&
omap3xxx_l4_per__mcbsp2
,
&
omap3xxx_l4_per__mcbsp3
,
...
...
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
View file @
9fc85a71
...
...
@@ -18,7 +18,6 @@
*/
#include <linux/io.h>
#include <linux/omap-dma.h>
#include "omap_hwmod.h"
#include "omap_hwmod_common_data.h"
...
...
@@ -30,9 +29,6 @@
/* Base offset for all OMAP4 interrupts external to MPUSS */
#define OMAP44XX_IRQ_GIC_START 32
/* Base offset for all OMAP4 dma requests */
#define OMAP44XX_DMA_REQ_START 1
/*
* IP blocks
*/
...
...
@@ -359,53 +355,6 @@ static struct omap_hwmod omap44xx_debugss_hwmod = {
},
};
/*
* 'dma' class
* dma controller for data exchange between memory to memory (i.e. internal or
* external memory) and gp peripherals to memory or memory to gp peripherals
*/
static
struct
omap_hwmod_class_sysconfig
omap44xx_dma_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x002c
,
.
syss_offs
=
0x0028
,
.
sysc_flags
=
(
SYSC_HAS_AUTOIDLE
|
SYSC_HAS_CLOCKACTIVITY
|
SYSC_HAS_EMUFREE
|
SYSC_HAS_MIDLEMODE
|
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_SOFTRESET
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
|
MSTANDBY_FORCE
|
MSTANDBY_NO
|
MSTANDBY_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
omap44xx_dma_hwmod_class
=
{
.
name
=
"dma"
,
.
sysc
=
&
omap44xx_dma_sysc
,
};
/* dma dev_attr */
static
struct
omap_dma_dev_attr
dma_dev_attr
=
{
.
dev_caps
=
RESERVE_CHANNEL
|
DMA_LINKED_LCH
|
GLOBAL_PRIORITY
|
IS_CSSA_32
|
IS_CDSA_32
|
IS_RW_PRIORITY
,
.
lch_count
=
32
,
};
/* dma_system */
static
struct
omap_hwmod
omap44xx_dma_system_hwmod
=
{
.
name
=
"dma_system"
,
.
class
=
&
omap44xx_dma_hwmod_class
,
.
clkdm_name
=
"l3_dma_clkdm"
,
.
main_clk
=
"l3_div_ck"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_offs
=
OMAP4_CM_SDMA_SDMA_CLKCTRL_OFFSET
,
.
context_offs
=
OMAP4_RM_SDMA_SDMA_CONTEXT_OFFSET
,
},
},
.
dev_attr
=
&
dma_dev_attr
,
};
/*
* 'dsp' class
* dsp sub-system
...
...
@@ -1458,14 +1407,6 @@ static struct omap_hwmod_ocp_if omap44xx_debugss__l3_main_2 = {
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* dma_system -> l3_main_2 */
static
struct
omap_hwmod_ocp_if
omap44xx_dma_system__l3_main_2
=
{
.
master
=
&
omap44xx_dma_system_hwmod
,
.
slave
=
&
omap44xx_l3_main_2_hwmod
,
.
clk
=
"l3_div_ck"
,
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* ipu -> l3_main_2 */
static
struct
omap_hwmod_ocp_if
omap44xx_ipu__l3_main_2
=
{
.
master
=
&
omap44xx_ipu_hwmod
,
...
...
@@ -1658,14 +1599,6 @@ static struct omap_hwmod_ocp_if omap44xx_l3_instr__debugss = {
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_cfg -> dma_system */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_cfg__dma_system
=
{
.
master
=
&
omap44xx_l4_cfg_hwmod
,
.
slave
=
&
omap44xx_dma_system_hwmod
,
.
clk
=
"l4_div_ck"
,
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* dsp -> iva */
static
struct
omap_hwmod_ocp_if
omap44xx_dsp__iva
=
{
.
master
=
&
omap44xx_dsp_hwmod
,
...
...
@@ -1966,7 +1899,6 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
&
omap44xx_l4_cfg__l3_main_1
,
&
omap44xx_mpu__l3_main_1
,
&
omap44xx_debugss__l3_main_2
,
&
omap44xx_dma_system__l3_main_2
,
&
omap44xx_ipu__l3_main_2
,
&
omap44xx_iss__l3_main_2
,
&
omap44xx_iva__l3_main_2
,
...
...
@@ -1991,7 +1923,6 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
&
omap44xx_l4_wkup__ctrl_module_wkup
,
&
omap44xx_l4_wkup__ctrl_module_pad_wkup
,
&
omap44xx_l3_instr__debugss
,
&
omap44xx_l4_cfg__dma_system
,
&
omap44xx_dsp__iva
,
/* &omap44xx_dsp__sl2if, */
&
omap44xx_l4_cfg__dsp
,
...
...
arch/arm/mach-omap2/omap_hwmod_54xx_data.c
View file @
9fc85a71
...
...
@@ -17,8 +17,6 @@
#include <linux/io.h>
#include <linux/power/smartreflex.h>
#include <linux/omap-dma.h>
#include "omap_hwmod.h"
#include "omap_hwmod_common_data.h"
#include "cm1_54xx.h"
...
...
@@ -28,10 +26,6 @@
/* Base offset for all OMAP5 interrupts external to MPUSS */
#define OMAP54XX_IRQ_GIC_START 32
/* Base offset for all OMAP5 dma requests */
#define OMAP54XX_DMA_REQ_START 1
/*
* IP blocks
*/
...
...
@@ -232,53 +226,6 @@ static struct omap_hwmod omap54xx_counter_32k_hwmod = {
},
};
/*
* 'dma' class
* dma controller for data exchange between memory to memory (i.e. internal or
* external memory) and gp peripherals to memory or memory to gp peripherals
*/
static
struct
omap_hwmod_class_sysconfig
omap54xx_dma_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x002c
,
.
syss_offs
=
0x0028
,
.
sysc_flags
=
(
SYSC_HAS_AUTOIDLE
|
SYSC_HAS_CLOCKACTIVITY
|
SYSC_HAS_EMUFREE
|
SYSC_HAS_MIDLEMODE
|
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_SOFTRESET
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
|
MSTANDBY_FORCE
|
MSTANDBY_NO
|
MSTANDBY_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
omap54xx_dma_hwmod_class
=
{
.
name
=
"dma"
,
.
sysc
=
&
omap54xx_dma_sysc
,
};
/* dma dev_attr */
static
struct
omap_dma_dev_attr
dma_dev_attr
=
{
.
dev_caps
=
RESERVE_CHANNEL
|
DMA_LINKED_LCH
|
GLOBAL_PRIORITY
|
IS_CSSA_32
|
IS_CDSA_32
|
IS_RW_PRIORITY
,
.
lch_count
=
32
,
};
/* dma_system */
static
struct
omap_hwmod
omap54xx_dma_system_hwmod
=
{
.
name
=
"dma_system"
,
.
class
=
&
omap54xx_dma_hwmod_class
,
.
clkdm_name
=
"dma_clkdm"
,
.
main_clk
=
"l3_iclk_div"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_offs
=
OMAP54XX_CM_DMA_DMA_SYSTEM_CLKCTRL_OFFSET
,
.
context_offs
=
OMAP54XX_RM_DMA_DMA_SYSTEM_CONTEXT_OFFSET
,
},
},
.
dev_attr
=
&
dma_dev_attr
,
};
/*
* 'dss' class
* display sub-system
...
...
@@ -961,14 +908,6 @@ static struct omap_hwmod_ocp_if omap54xx_l4_wkup__counter_32k = {
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_cfg -> dma_system */
static
struct
omap_hwmod_ocp_if
omap54xx_l4_cfg__dma_system
=
{
.
master
=
&
omap54xx_l4_cfg_hwmod
,
.
slave
=
&
omap54xx_dma_system_hwmod
,
.
clk
=
"l4_root_clk_div"
,
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l3_main_2 -> dss */
static
struct
omap_hwmod_ocp_if
omap54xx_l3_main_2__dss
=
{
.
master
=
&
omap54xx_l3_main_2_hwmod
,
...
...
@@ -1091,7 +1030,6 @@ static struct omap_hwmod_ocp_if *omap54xx_hwmod_ocp_ifs[] __initdata = {
&
omap54xx_l3_main_1__l4_wkup
,
&
omap54xx_mpu__mpu_private
,
&
omap54xx_l4_wkup__counter_32k
,
&
omap54xx_l4_cfg__dma_system
,
&
omap54xx_l3_main_2__dss
,
&
omap54xx_l3_main_2__dss_dispc
,
&
omap54xx_l3_main_2__dss_dsi1_a
,
...
...
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
View file @
9fc85a71
...
...
@@ -15,7 +15,6 @@
*/
#include <linux/io.h>
#include <linux/omap-dma.h>
#include "omap_hwmod.h"
#include "omap_hwmod_common_data.h"
...
...
@@ -27,10 +26,6 @@
/* Base offset for all DRA7XX interrupts external to MPUSS */
#define DRA7XX_IRQ_GIC_START 32
/* Base offset for all DRA7XX dma requests */
#define DRA7XX_DMA_REQ_START 1
/*
* IP blocks
*/
...
...
@@ -281,52 +276,6 @@ static struct omap_hwmod dra7xx_ctrl_module_wkup_hwmod = {
},
};
/*
* 'dma' class
*
*/
static
struct
omap_hwmod_class_sysconfig
dra7xx_dma_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x002c
,
.
syss_offs
=
0x0028
,
.
sysc_flags
=
(
SYSC_HAS_AUTOIDLE
|
SYSC_HAS_CLOCKACTIVITY
|
SYSC_HAS_EMUFREE
|
SYSC_HAS_MIDLEMODE
|
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_SOFTRESET
|
SYSS_HAS_RESET_STATUS
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
|
SIDLE_SMART_WKUP
|
MSTANDBY_FORCE
|
MSTANDBY_NO
|
MSTANDBY_SMART
|
MSTANDBY_SMART_WKUP
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
dra7xx_dma_hwmod_class
=
{
.
name
=
"dma"
,
.
sysc
=
&
dra7xx_dma_sysc
,
};
/* dma dev_attr */
static
struct
omap_dma_dev_attr
dma_dev_attr
=
{
.
dev_caps
=
RESERVE_CHANNEL
|
DMA_LINKED_LCH
|
GLOBAL_PRIORITY
|
IS_CSSA_32
|
IS_CDSA_32
|
IS_RW_PRIORITY
,
.
lch_count
=
32
,
};
/* dma_system */
static
struct
omap_hwmod
dra7xx_dma_system_hwmod
=
{
.
name
=
"dma_system"
,
.
class
=
&
dra7xx_dma_hwmod_class
,
.
clkdm_name
=
"dma_clkdm"
,
.
main_clk
=
"l3_iclk_div"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_offs
=
DRA7XX_CM_DMA_DMA_SYSTEM_CLKCTRL_OFFSET
,
.
context_offs
=
DRA7XX_RM_DMA_DMA_SYSTEM_CONTEXT_OFFSET
,
},
},
.
dev_attr
=
&
dma_dev_attr
,
};
/*
* 'tpcc' class
*
...
...
@@ -1128,14 +1077,6 @@ static struct omap_hwmod_ocp_if dra7xx_l4_wkup__ctrl_module_wkup = {
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_cfg -> dma_system */
static
struct
omap_hwmod_ocp_if
dra7xx_l4_cfg__dma_system
=
{
.
master
=
&
dra7xx_l4_cfg_hwmod
,
.
slave
=
&
dra7xx_dma_system_hwmod
,
.
clk
=
"l3_iclk_div"
,
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l3_main_1 -> tpcc */
static
struct
omap_hwmod_ocp_if
dra7xx_l3_main_1__tpcc
=
{
.
master
=
&
dra7xx_l3_main_1_hwmod
,
...
...
@@ -1368,7 +1309,6 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {
&
dra7xx_l3_main_1__bb2d
,
&
dra7xx_l4_wkup__counter_32k
,
&
dra7xx_l4_wkup__ctrl_module_wkup
,
&
dra7xx_l4_cfg__dma_system
,
&
dra7xx_l3_main_1__tpcc
,
&
dra7xx_l3_main_1__tptc0
,
&
dra7xx_l3_main_1__tptc1
,
...
...
arch/arm/mach-omap2/omap_hwmod_common_data.h
View file @
9fc85a71
...
...
@@ -98,7 +98,6 @@ extern struct omap_hwmod_class omap2_hdq1w_class;
extern
struct
omap_hwmod_class
omap2xxx_timer_hwmod_class
;
extern
struct
omap_hwmod_class
omap2xxx_wd_timer_hwmod_class
;
extern
struct
omap_hwmod_class
omap2xxx_gpio_hwmod_class
;
extern
struct
omap_hwmod_class
omap2xxx_dma_hwmod_class
;
extern
struct
omap_hwmod_class
omap2xxx_mailbox_hwmod_class
;
extern
struct
omap_hwmod_class
omap2xxx_mcspi_class
;
...
...
arch/arm/mach-omap2/pdata-quirks.c
View file @
9fc85a71
...
...
@@ -514,6 +514,7 @@ static struct of_dev_auxdata omap_auxdata_lookup[] = {
/* Common auxdata */
OF_DEV_AUXDATA
(
"ti,sysc"
,
0
,
NULL
,
&
ti_sysc_pdata
),
OF_DEV_AUXDATA
(
"pinctrl-single"
,
0
,
NULL
,
&
pcs_pdata
),
OF_DEV_AUXDATA
(
"ti,omap-sdma"
,
0
,
NULL
,
&
dma_plat_info
),
{
/* sentinel */
},
};
...
...
arch/arm/mach-omap2/pm24xx.c
View file @
9fc85a71
...
...
@@ -83,8 +83,6 @@ static int omap2_enter_full_retention(void)
l
=
omap_ctrl_readl
(
OMAP2_CONTROL_DEVCONF0
)
|
OMAP24XX_USBSTANDBYCTRL
;
omap_ctrl_writel
(
l
,
OMAP2_CONTROL_DEVCONF0
);
cpu_cluster_pm_enter
();
/* One last check for pending IRQs to avoid extra latency due
* to sleeping unnecessarily. */
if
(
omap_irq_pending
())
...
...
@@ -96,8 +94,6 @@ static int omap2_enter_full_retention(void)
OMAP_SDRC_REGADDR
(
SDRC_POWER
));
no_sleep:
cpu_cluster_pm_exit
();
clk_enable
(
osc_ck
);
/* clear CORE wake-up events */
...
...
@@ -162,25 +158,27 @@ static int omap2_can_sleep(void)
return
0
;
if
(
__clk_is_enabled
(
osc_ck
))
return
0
;
if
(
omap_dma_running
())
return
0
;
return
1
;
}
static
void
omap2_pm_idle
(
void
)
{
if
(
!
omap2_can_sleep
())
{
if
(
omap_irq_pending
())
return
;
omap2_enter_mpu_retention
();
return
;
}
int
error
;
if
(
omap_irq_pending
())
return
;
error
=
cpu_cluster_pm_enter
();
if
(
error
||
!
omap2_can_sleep
())
{
omap2_enter_mpu_retention
();
goto
out_cpu_cluster_pm
;
}
omap2_enter_full_retention
();
out_cpu_cluster_pm:
cpu_cluster_pm_exit
();
}
static
void
__init
prcm_setup_regs
(
void
)
...
...
arch/arm/mach-omap2/pm34xx.c
View file @
9fc85a71
...
...
@@ -25,7 +25,6 @@
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/omap-dma.h>
#include <linux/omap-gpmc.h>
#include <trace/events/power.h>
...
...
@@ -85,7 +84,6 @@ static void omap3_core_save_context(void)
omap3_gpmc_save_context
();
/* Save the system control module context, padconf already save above*/
omap3_control_save_context
();
omap_dma_global_context_save
();
}
static
void
omap3_core_restore_context
(
void
)
...
...
@@ -96,7 +94,6 @@ static void omap3_core_restore_context(void)
omap3_gpmc_restore_context
();
/* Restore the interrupt controller context */
omap_intc_restore_context
();
omap_dma_global_context_restore
();
}
/*
...
...
@@ -547,9 +544,7 @@ int __init omap3_pm_init(void)
local_irq_disable
();
omap_dma_global_context_save
();
omap3_save_secure_ram_context
();
omap_dma_global_context_restore
();
local_irq_enable
();
}
...
...
arch/arm/plat-omap/dma.c
View file @
9fc85a71
This diff is collapsed.
Click to expand it.
drivers/dma/ti/omap-dma.c
View file @
9fc85a71
This diff is collapsed.
Click to expand it.
include/linux/omap-dma.h
View file @
9fc85a71
...
...
@@ -129,7 +129,6 @@
#define IS_WORD_16 BIT(0xd)
#define ENABLE_16XX_MODE BIT(0xe)
#define HS_CHANNELS_RESERVED BIT(0xf)
#define DMA_ENGINE_HANDLE_IRQ BIT(0x10)
/* Defines for DMA Capabilities */
#define DMA_HAS_TRANSPARENT_CAPS (0x1 << 18)
...
...
@@ -239,9 +238,6 @@ struct omap_dma_lch {
void
(
*
callback
)(
int
lch
,
u16
ch_status
,
void
*
data
);
void
*
data
;
long
flags
;
/* required for Dynamic chaining */
int
prev_linked_ch
;
int
next_linked_ch
;
int
state
;
int
chain_id
;
int
status
;
...
...
@@ -303,7 +299,6 @@ extern void omap_set_dma_priority(int lch, int dst_port, int priority);
extern
int
omap_request_dma
(
int
dev_id
,
const
char
*
dev_name
,
void
(
*
callback
)(
int
lch
,
u16
ch_status
,
void
*
data
),
void
*
data
,
int
*
dma_ch
);
extern
void
omap_enable_dma_irq
(
int
ch
,
u16
irq_bits
);
extern
void
omap_disable_dma_irq
(
int
ch
,
u16
irq_bits
);
extern
void
omap_free_dma
(
int
ch
);
extern
void
omap_start_dma
(
int
lch
);
...
...
@@ -312,7 +307,6 @@ extern void omap_set_dma_transfer_params(int lch, int data_type,
int
elem_count
,
int
frame_count
,
int
sync_mode
,
int
dma_trigger
,
int
src_or_dst_synch
);
extern
void
omap_set_dma_write_mode
(
int
lch
,
enum
omap_dma_write_mode
mode
);
extern
void
omap_set_dma_channel_mode
(
int
lch
,
enum
omap_dma_channel_mode
mode
);
extern
void
omap_set_dma_src_params
(
int
lch
,
int
src_port
,
int
src_amode
,
...
...
@@ -329,22 +323,10 @@ extern void omap_set_dma_dest_data_pack(int lch, int enable);
extern
void
omap_set_dma_dest_burst_mode
(
int
lch
,
enum
omap_dma_burst_mode
burst_mode
);
extern
void
omap_set_dma_params
(
int
lch
,
struct
omap_dma_channel_params
*
params
);
extern
void
omap_dma_link_lch
(
int
lch_head
,
int
lch_queue
);
extern
int
omap_set_dma_callback
(
int
lch
,
void
(
*
callback
)(
int
lch
,
u16
ch_status
,
void
*
data
),
void
*
data
);
extern
dma_addr_t
omap_get_dma_src_pos
(
int
lch
);
extern
dma_addr_t
omap_get_dma_dst_pos
(
int
lch
);
extern
int
omap_get_dma_active_status
(
int
lch
);
extern
int
omap_dma_running
(
void
);
extern
void
omap_dma_set_global_params
(
int
arb_rate
,
int
max_fifo_depth
,
int
tparams
);
void
omap_dma_global_context_save
(
void
);
void
omap_dma_global_context_restore
(
void
);
#if defined(CONFIG_ARCH_OMAP1) && IS_ENABLED(CONFIG_FB_OMAP)
#include <mach/lcd_dma.h>
...
...
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