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
0c0936eb
Commit
0c0936eb
authored
Dec 10, 2012
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/ux500' into asoc-next
parents
c0324fb3
459d2a9f
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
58 additions
and
24 deletions
+58
-24
sound/soc/ux500/mop500.c
sound/soc/ux500/mop500.c
+2
-2
sound/soc/ux500/ux500_msp_dai.c
sound/soc/ux500/ux500_msp_dai.c
+48
-7
sound/soc/ux500/ux500_msp_dai.h
sound/soc/ux500/ux500_msp_dai.h
+1
-0
sound/soc/ux500/ux500_pcm.c
sound/soc/ux500/ux500_pcm.c
+4
-15
sound/soc/ux500/ux500_pcm.h
sound/soc/ux500/ux500_pcm.h
+3
-0
No files found.
sound/soc/ux500/mop500.c
View file @
0c0936eb
...
...
@@ -33,7 +33,7 @@ struct snd_soc_dai_link mop500_dai_links[] = {
.
stream_name
=
"ab8500_0"
,
.
cpu_dai_name
=
"ux500-msp-i2s.1"
,
.
codec_dai_name
=
"ab8500-codec-dai.0"
,
.
platform_name
=
"ux500-
pcm.0
"
,
.
platform_name
=
"ux500-
msp-i2s.1
"
,
.
codec_name
=
"ab8500-codec.0"
,
.
init
=
mop500_ab8500_machine_init
,
.
ops
=
mop500_ab8500_ops
,
...
...
@@ -43,7 +43,7 @@ struct snd_soc_dai_link mop500_dai_links[] = {
.
stream_name
=
"ab8500_1"
,
.
cpu_dai_name
=
"ux500-msp-i2s.3"
,
.
codec_dai_name
=
"ab8500-codec-dai.1"
,
.
platform_name
=
"ux500-
pcm.0
"
,
.
platform_name
=
"ux500-
msp-i2s.3
"
,
.
codec_name
=
"ab8500-codec.0"
,
.
init
=
NULL
,
.
ops
=
mop500_ab8500_ops
,
...
...
sound/soc/ux500/ux500_msp_dai.c
View file @
0c0936eb
...
...
@@ -28,6 +28,7 @@
#include "ux500_msp_i2s.h"
#include "ux500_msp_dai.h"
#include "ux500_pcm.h"
static
int
setup_pcm_multichan
(
struct
snd_soc_dai
*
dai
,
struct
ux500_msp_config
*
msp_config
)
...
...
@@ -398,11 +399,28 @@ static int ux500_msp_dai_startup(struct snd_pcm_substream *substream,
return
ret
;
}
/* Enable clock */
dev_dbg
(
dai
->
dev
,
"%s: Enabling MSP-clock.
\n
"
,
__func__
);
clk_enable
(
drvdata
->
clk
);
/* Prepare and enable clocks */
dev_dbg
(
dai
->
dev
,
"%s: Enabling MSP-clocks.
\n
"
,
__func__
);
ret
=
clk_prepare_enable
(
drvdata
->
pclk
);
if
(
ret
)
{
dev_err
(
drvdata
->
msp
->
dev
,
"%s: Failed to prepare/enable pclk!
\n
"
,
__func__
);
goto
err_pclk
;
}
return
0
;
ret
=
clk_prepare_enable
(
drvdata
->
clk
);
if
(
ret
)
{
dev_err
(
drvdata
->
msp
->
dev
,
"%s: Failed to prepare/enable clk!
\n
"
,
__func__
);
goto
err_clk
;
}
return
ret
;
err_clk:
clk_disable_unprepare
(
drvdata
->
pclk
);
err_pclk:
regulator_disable
(
drvdata
->
reg_vape
);
return
ret
;
}
static
void
ux500_msp_dai_shutdown
(
struct
snd_pcm_substream
*
substream
,
...
...
@@ -428,8 +446,9 @@ static void ux500_msp_dai_shutdown(struct snd_pcm_substream *substream,
__func__
,
dai
->
id
,
snd_pcm_stream_str
(
substream
));
}
/* Disable clock */
clk_disable
(
drvdata
->
clk
);
/* Disable and unprepare clocks */
clk_disable_unprepare
(
drvdata
->
clk
);
clk_disable_unprepare
(
drvdata
->
pclk
);
/* Disable regulator */
ret
=
regulator_disable
(
drvdata
->
reg_vape
);
...
...
@@ -780,6 +799,14 @@ static int __devinit ux500_msp_drv_probe(struct platform_device *pdev)
}
prcmu_qos_add_requirement
(
PRCMU_QOS_APE_OPP
,
(
char
*
)
pdev
->
name
,
50
);
drvdata
->
pclk
=
clk_get
(
&
pdev
->
dev
,
"apb_pclk"
);
if
(
IS_ERR
(
drvdata
->
pclk
))
{
ret
=
(
int
)
PTR_ERR
(
drvdata
->
pclk
);
dev_err
(
&
pdev
->
dev
,
"%s: ERROR: clk_get of pclk failed (%d)!
\n
"
,
__func__
,
ret
);
goto
err_pclk
;
}
drvdata
->
clk
=
clk_get
(
&
pdev
->
dev
,
NULL
);
if
(
IS_ERR
(
drvdata
->
clk
))
{
ret
=
(
int
)
PTR_ERR
(
drvdata
->
clk
);
...
...
@@ -806,12 +833,23 @@ static int __devinit ux500_msp_drv_probe(struct platform_device *pdev)
goto
err_init_msp
;
}
ret
=
ux500_pcm_register_platform
(
pdev
);
if
(
ret
<
0
)
{
dev_err
(
&
pdev
->
dev
,
"Error: %s: Failed to register PCM platform device!
\n
"
,
__func__
);
goto
err_reg_plat
;
}
return
0
;
err_reg_plat:
snd_soc_unregister_dais
(
&
pdev
->
dev
,
ARRAY_SIZE
(
ux500_msp_dai_drv
));
err_init_msp:
clk_put
(
drvdata
->
clk
);
err_clk:
clk_put
(
drvdata
->
pclk
);
err_pclk:
devm_regulator_put
(
drvdata
->
reg_vape
);
return
ret
;
...
...
@@ -821,12 +859,15 @@ static int __devexit ux500_msp_drv_remove(struct platform_device *pdev)
{
struct
ux500_msp_i2s_drvdata
*
drvdata
=
dev_get_drvdata
(
&
pdev
->
dev
);
ux500_pcm_unregister_platform
(
pdev
);
snd_soc_unregister_dais
(
&
pdev
->
dev
,
ARRAY_SIZE
(
ux500_msp_dai_drv
));
devm_regulator_put
(
drvdata
->
reg_vape
);
prcmu_qos_remove_requirement
(
PRCMU_QOS_APE_OPP
,
"ux500_msp_i2s"
);
clk_put
(
drvdata
->
clk
);
clk_put
(
drvdata
->
pclk
);
ux500_msp_i2s_cleanup_msp
(
pdev
,
drvdata
->
msp
);
...
...
sound/soc/ux500/ux500_msp_dai.h
View file @
0c0936eb
...
...
@@ -69,6 +69,7 @@ struct ux500_msp_i2s_drvdata {
/* Clocks */
unsigned
int
master_clk
;
struct
clk
*
clk
;
struct
clk
*
pclk
;
/* Regulators */
int
vape_opp_constraint
;
...
...
sound/soc/ux500/ux500_pcm.c
View file @
0c0936eb
...
...
@@ -282,7 +282,7 @@ static struct snd_soc_platform_driver ux500_pcm_soc_drv = {
.
pcm_new
=
ux500_pcm_new
,
};
static
int
__devexit
ux500_pcm_drv_probe
(
struct
platform_device
*
pdev
)
int
__devinit
ux500_pcm_register_platform
(
struct
platform_device
*
pdev
)
{
int
ret
;
...
...
@@ -296,23 +296,12 @@ static int __devexit ux500_pcm_drv_probe(struct platform_device *pdev)
return
0
;
}
EXPORT_SYMBOL_GPL
(
ux500_pcm_register_platform
);
static
int
__devinit
ux500_pcm_drv_remove
(
struct
platform_device
*
pdev
)
int
__devexit
ux500_pcm_unregister_platform
(
struct
platform_device
*
pdev
)
{
snd_soc_unregister_platform
(
&
pdev
->
dev
);
return
0
;
}
static
struct
platform_driver
ux500_pcm_driver
=
{
.
driver
=
{
.
name
=
"ux500-pcm"
,
.
owner
=
THIS_MODULE
,
},
.
probe
=
ux500_pcm_drv_probe
,
.
remove
=
__devexit_p
(
ux500_pcm_drv_remove
),
};
module_platform_driver
(
ux500_pcm_driver
);
MODULE_LICENSE
(
"GPL v2"
);
EXPORT_SYMBOL_GPL
(
ux500_pcm_unregister_platform
);
sound/soc/ux500/ux500_pcm.h
View file @
0c0936eb
...
...
@@ -32,4 +32,7 @@
#define UX500_PLATFORM_PERIODS_MAX 48
#define UX500_PLATFORM_BUFFER_BYTES_MAX (2048 * PAGE_SIZE)
int
ux500_pcm_register_platform
(
struct
platform_device
*
pdev
);
int
ux500_pcm_unregister_platform
(
struct
platform_device
*
pdev
);
#endif
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