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
87fee06c
Commit
87fee06c
authored
Jan 10, 2013
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/fix/pxa' into tmp
parents
c31b71de
3b4bc7bc
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
5 deletions
+28
-5
arch/arm/mach-pxa/include/mach/mfp-pxa27x.h
arch/arm/mach-pxa/include/mach/mfp-pxa27x.h
+3
-0
arch/arm/mach-pxa/pxa27x.c
arch/arm/mach-pxa/pxa27x.c
+2
-2
sound/arm/pxa2xx-ac97-lib.c
sound/arm/pxa2xx-ac97-lib.c
+23
-3
No files found.
arch/arm/mach-pxa/include/mach/mfp-pxa27x.h
View file @
87fee06c
...
...
@@ -463,6 +463,9 @@
GPIO76_LCD_PCLK, \
GPIO77_LCD_BIAS
/* these enable a work-around for a hw bug in pxa27x during ac97 warm reset */
#define GPIO113_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO113, AF0, DEFAULT)
#define GPIO95_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO95, AF0, DEFAULT)
extern
int
keypad_set_wake
(
unsigned
int
on
);
#endif
/* __ASM_ARCH_MFP_PXA27X_H */
arch/arm/mach-pxa/pxa27x.c
View file @
87fee06c
...
...
@@ -47,9 +47,9 @@ void pxa27x_clear_otgph(void)
EXPORT_SYMBOL
(
pxa27x_clear_otgph
);
static
unsigned
long
ac97_reset_config
[]
=
{
GPIO113_
GPIO
,
GPIO113_
AC97_nRESET_GPIO_HIGH
,
GPIO113_AC97_nRESET
,
GPIO95_
GPIO
,
GPIO95_
AC97_nRESET_GPIO_HIGH
,
GPIO95_AC97_nRESET
,
};
...
...
sound/arm/pxa2xx-ac97-lib.c
View file @
87fee06c
...
...
@@ -18,6 +18,7 @@
#include <linux/delay.h>
#include <linux/module.h>
#include <linux/io.h>
#include <linux/gpio.h>
#include <sound/ac97_codec.h>
#include <sound/pxa2xx-lib.h>
...
...
@@ -148,6 +149,8 @@ static inline void pxa_ac97_warm_pxa27x(void)
static
inline
void
pxa_ac97_cold_pxa27x
(
void
)
{
unsigned
int
timeout
;
GCR
&=
GCR_COLD_RST
;
/* clear everything but nCRST */
GCR
&=
~
GCR_COLD_RST
;
/* then assert nCRST */
...
...
@@ -157,8 +160,10 @@ static inline void pxa_ac97_cold_pxa27x(void)
clk_enable
(
ac97conf_clk
);
udelay
(
5
);
clk_disable
(
ac97conf_clk
);
GCR
=
GCR_COLD_RST
;
udelay
(
50
);
GCR
=
GCR_COLD_RST
|
GCR_WARM_RST
;
timeout
=
100
;
/* wait for the codec-ready bit to be set */
while
(
!
((
GSR
|
gsr_bits
)
&
(
GSR_PCR
|
GSR_SCR
))
&&
timeout
--
)
mdelay
(
1
);
}
#endif
...
...
@@ -340,8 +345,21 @@ int pxa2xx_ac97_hw_probe(struct platform_device *dev)
}
if
(
cpu_is_pxa27x
())
{
/* Use GPIO 113 as AC97 Reset on Bulverde */
/*
* This gpio is needed for a work-around to a bug in the ac97
* controller during warm reset. The direction and level is set
* here so that it is an output driven high when switching from
* AC97_nRESET alt function to generic gpio.
*/
ret
=
gpio_request_one
(
reset_gpio
,
GPIOF_OUT_INIT_HIGH
,
"pxa27x ac97 reset"
);
if
(
ret
<
0
)
{
pr_err
(
"%s: gpio_request_one() failed: %d
\n
"
,
__func__
,
ret
);
goto
err_conf
;
}
pxa27x_assert_ac97reset
(
reset_gpio
,
0
);
ac97conf_clk
=
clk_get
(
&
dev
->
dev
,
"AC97CONFCLK"
);
if
(
IS_ERR
(
ac97conf_clk
))
{
ret
=
PTR_ERR
(
ac97conf_clk
);
...
...
@@ -384,6 +402,8 @@ EXPORT_SYMBOL_GPL(pxa2xx_ac97_hw_probe);
void
pxa2xx_ac97_hw_remove
(
struct
platform_device
*
dev
)
{
if
(
cpu_is_pxa27x
())
gpio_free
(
reset_gpio
);
GCR
|=
GCR_ACLINK_OFF
;
free_irq
(
IRQ_AC97
,
NULL
);
if
(
ac97conf_clk
)
{
...
...
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