Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
daf6c450
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
daf6c450
编写于
6月 25, 2011
作者:
S
Steve French
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6
上级
9b8e072a
8abf5588
变更
18
隐藏空白更改
内联
并排
Showing
18 changed file
with
147 addition
and
151 deletion
+147
-151
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem.c
+4
-6
drivers/gpu/drm/i915/i915_gem_execbuffer.c
drivers/gpu/drm/i915/i915_gem_execbuffer.c
+0
-4
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/i915_irq.c
+1
-0
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/i915_reg.h
+1
-0
drivers/gpu/drm/i915/i915_suspend.c
drivers/gpu/drm/i915/i915_suspend.c
+5
-0
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_display.c
+1
-2
drivers/rtc/rtc-vt8500.c
drivers/rtc/rtc-vt8500.c
+3
-42
include/sound/soc.h
include/sound/soc.h
+1
-2
kernel/time/alarmtimer.c
kernel/time/alarmtimer.c
+88
-70
sound/pci/asihpi/asihpi.c
sound/pci/asihpi/asihpi.c
+0
-1
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+11
-2
sound/pci/hda/patch_via.c
sound/pci/hda/patch_via.c
+27
-8
sound/soc/codecs/wm8991.c
sound/soc/codecs/wm8991.c
+0
-1
sound/soc/imx/Kconfig
sound/soc/imx/Kconfig
+0
-7
sound/soc/imx/imx-pcm-dma-mx2.c
sound/soc/imx/imx-pcm-dma-mx2.c
+2
-0
sound/soc/imx/imx-ssi.c
sound/soc/imx/imx-ssi.c
+1
-1
sound/soc/pxa/pxa2xx-pcm.c
sound/soc/pxa/pxa2xx-pcm.c
+2
-2
sound/soc/soc-cache.c
sound/soc/soc-cache.c
+0
-3
未找到文件。
drivers/gpu/drm/i915/i915_gem.c
浏览文件 @
daf6c450
...
...
@@ -1219,11 +1219,11 @@ int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
ret
=
i915_gem_object_bind_to_gtt
(
obj
,
0
,
true
);
if
(
ret
)
goto
unlock
;
}
ret
=
i915_gem_object_set_to_gtt_domain
(
obj
,
write
);
if
(
ret
)
goto
unlock
;
ret
=
i915_gem_object_set_to_gtt_domain
(
obj
,
write
);
if
(
ret
)
goto
unlock
;
}
if
(
obj
->
tiling_mode
==
I915_TILING_NONE
)
ret
=
i915_gem_object_put_fence
(
obj
);
...
...
@@ -2926,8 +2926,6 @@ i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj)
*/
wmb
();
i915_gem_release_mmap
(
obj
);
old_write_domain
=
obj
->
base
.
write_domain
;
obj
->
base
.
write_domain
=
0
;
...
...
drivers/gpu/drm/i915/i915_gem_execbuffer.c
浏览文件 @
daf6c450
...
...
@@ -187,10 +187,6 @@ i915_gem_object_set_to_gpu_domain(struct drm_i915_gem_object *obj,
if
((
flush_domains
|
invalidate_domains
)
&
I915_GEM_DOMAIN_CPU
)
i915_gem_clflush_object
(
obj
);
/* blow away mappings if mapped through GTT */
if
((
flush_domains
|
invalidate_domains
)
&
I915_GEM_DOMAIN_GTT
)
i915_gem_release_mmap
(
obj
);
if
(
obj
->
base
.
pending_write_domain
)
cd
->
flips
|=
atomic_read
(
&
obj
->
pending_flip
);
...
...
drivers/gpu/drm/i915/i915_irq.c
浏览文件 @
daf6c450
...
...
@@ -1749,6 +1749,7 @@ void ironlake_irq_preinstall(struct drm_device *dev)
* happens.
*/
I915_WRITE
(
GEN6_BLITTER_HWSTAM
,
~
GEN6_BLITTER_USER_INTERRUPT
);
I915_WRITE
(
GEN6_BSD_HWSTAM
,
~
GEN6_BSD_USER_INTERRUPT
);
}
/* XXX hotplug from PCH */
...
...
drivers/gpu/drm/i915/i915_reg.h
浏览文件 @
daf6c450
...
...
@@ -531,6 +531,7 @@
#define GEN6_BSD_SLEEP_PSMI_CONTROL_RC_ILDL_MESSAGE_ENABLE 0
#define GEN6_BSD_SLEEP_PSMI_CONTROL_IDLE_INDICATOR (1 << 3)
#define GEN6_BSD_HWSTAM 0x12098
#define GEN6_BSD_IMR 0x120a8
#define GEN6_BSD_USER_INTERRUPT (1 << 12)
...
...
drivers/gpu/drm/i915/i915_suspend.c
浏览文件 @
daf6c450
...
...
@@ -678,6 +678,7 @@ void i915_save_display(struct drm_device *dev)
}
/* VGA state */
mutex_lock
(
&
dev
->
struct_mutex
);
dev_priv
->
saveVGA0
=
I915_READ
(
VGA0
);
dev_priv
->
saveVGA1
=
I915_READ
(
VGA1
);
dev_priv
->
saveVGA_PD
=
I915_READ
(
VGA_PD
);
...
...
@@ -687,6 +688,7 @@ void i915_save_display(struct drm_device *dev)
dev_priv
->
saveVGACNTRL
=
I915_READ
(
VGACNTRL
);
i915_save_vga
(
dev
);
mutex_unlock
(
&
dev
->
struct_mutex
);
}
void
i915_restore_display
(
struct
drm_device
*
dev
)
...
...
@@ -780,6 +782,8 @@ void i915_restore_display(struct drm_device *dev)
I915_WRITE
(
CPU_VGACNTRL
,
dev_priv
->
saveVGACNTRL
);
else
I915_WRITE
(
VGACNTRL
,
dev_priv
->
saveVGACNTRL
);
mutex_lock
(
&
dev
->
struct_mutex
);
I915_WRITE
(
VGA0
,
dev_priv
->
saveVGA0
);
I915_WRITE
(
VGA1
,
dev_priv
->
saveVGA1
);
I915_WRITE
(
VGA_PD
,
dev_priv
->
saveVGA_PD
);
...
...
@@ -787,6 +791,7 @@ void i915_restore_display(struct drm_device *dev)
udelay
(
150
);
i915_restore_vga
(
dev
);
mutex_unlock
(
&
dev
->
struct_mutex
);
}
int
i915_save_state
(
struct
drm_device
*
dev
)
...
...
drivers/gpu/drm/i915/intel_display.c
浏览文件 @
daf6c450
...
...
@@ -4687,6 +4687,7 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
I915_WRITE
(
DSPCNTR
(
plane
),
dspcntr
);
POSTING_READ
(
DSPCNTR
(
plane
));
intel_enable_plane
(
dev_priv
,
plane
,
pipe
);
ret
=
intel_pipe_set_base
(
crtc
,
x
,
y
,
old_fb
);
...
...
@@ -5217,8 +5218,6 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
I915_WRITE
(
DSPCNTR
(
plane
),
dspcntr
);
POSTING_READ
(
DSPCNTR
(
plane
));
if
(
!
HAS_PCH_SPLIT
(
dev
))
intel_enable_plane
(
dev_priv
,
plane
,
pipe
);
ret
=
intel_pipe_set_base
(
crtc
,
x
,
y
,
old_fb
);
...
...
drivers/rtc/rtc-vt8500.c
浏览文件 @
daf6c450
...
...
@@ -78,7 +78,6 @@ struct vt8500_rtc {
void
__iomem
*
regbase
;
struct
resource
*
res
;
int
irq_alarm
;
int
irq_hz
;
struct
rtc_device
*
rtc
;
spinlock_t
lock
;
/* Protects this structure */
};
...
...
@@ -100,10 +99,6 @@ static irqreturn_t vt8500_rtc_irq(int irq, void *dev_id)
if
(
isr
&
1
)
events
|=
RTC_AF
|
RTC_IRQF
;
/* Only second/minute interrupts are supported */
if
(
isr
&
2
)
events
|=
RTC_UF
|
RTC_IRQF
;
rtc_update_irq
(
vt8500_rtc
->
rtc
,
1
,
events
);
return
IRQ_HANDLED
;
...
...
@@ -199,27 +194,12 @@ static int vt8500_alarm_irq_enable(struct device *dev, unsigned int enabled)
return
0
;
}
static
int
vt8500_update_irq_enable
(
struct
device
*
dev
,
unsigned
int
enabled
)
{
struct
vt8500_rtc
*
vt8500_rtc
=
dev_get_drvdata
(
dev
);
unsigned
long
tmp
=
readl
(
vt8500_rtc
->
regbase
+
VT8500_RTC_CR
);
if
(
enabled
)
tmp
|=
VT8500_RTC_CR_SM_SEC
|
VT8500_RTC_CR_SM_ENABLE
;
else
tmp
&=
~
VT8500_RTC_CR_SM_ENABLE
;
writel
(
tmp
,
vt8500_rtc
->
regbase
+
VT8500_RTC_CR
);
return
0
;
}
static
const
struct
rtc_class_ops
vt8500_rtc_ops
=
{
.
read_time
=
vt8500_rtc_read_time
,
.
set_time
=
vt8500_rtc_set_time
,
.
read_alarm
=
vt8500_rtc_read_alarm
,
.
set_alarm
=
vt8500_rtc_set_alarm
,
.
alarm_irq_enable
=
vt8500_alarm_irq_enable
,
.
update_irq_enable
=
vt8500_update_irq_enable
,
};
static
int
__devinit
vt8500_rtc_probe
(
struct
platform_device
*
pdev
)
...
...
@@ -248,13 +228,6 @@ static int __devinit vt8500_rtc_probe(struct platform_device *pdev)
goto
err_free
;
}
vt8500_rtc
->
irq_hz
=
platform_get_irq
(
pdev
,
1
);
if
(
vt8500_rtc
->
irq_hz
<
0
)
{
dev_err
(
&
pdev
->
dev
,
"No 1Hz IRQ resource defined
\n
"
);
ret
=
-
ENXIO
;
goto
err_free
;
}
vt8500_rtc
->
res
=
request_mem_region
(
vt8500_rtc
->
res
->
start
,
resource_size
(
vt8500_rtc
->
res
),
"vt8500-rtc"
);
...
...
@@ -272,9 +245,8 @@ static int __devinit vt8500_rtc_probe(struct platform_device *pdev)
goto
err_release
;
}
/* Enable the second/minute interrupt generation and enable RTC */
writel
(
VT8500_RTC_CR_ENABLE
|
VT8500_RTC_CR_24H
|
VT8500_RTC_CR_SM_ENABLE
|
VT8500_RTC_CR_SM_SEC
,
/* Enable RTC and set it to 24-hour mode */
writel
(
VT8500_RTC_CR_ENABLE
|
VT8500_RTC_CR_24H
,
vt8500_rtc
->
regbase
+
VT8500_RTC_CR
);
vt8500_rtc
->
rtc
=
rtc_device_register
(
"vt8500-rtc"
,
&
pdev
->
dev
,
...
...
@@ -286,26 +258,16 @@ static int __devinit vt8500_rtc_probe(struct platform_device *pdev)
goto
err_unmap
;
}
ret
=
request_irq
(
vt8500_rtc
->
irq_hz
,
vt8500_rtc_irq
,
0
,
"rtc 1Hz"
,
vt8500_rtc
);
if
(
ret
<
0
)
{
dev_err
(
&
pdev
->
dev
,
"can't get irq %i, err %d
\n
"
,
vt8500_rtc
->
irq_hz
,
ret
);
goto
err_unreg
;
}
ret
=
request_irq
(
vt8500_rtc
->
irq_alarm
,
vt8500_rtc_irq
,
0
,
"rtc alarm"
,
vt8500_rtc
);
if
(
ret
<
0
)
{
dev_err
(
&
pdev
->
dev
,
"can't get irq %i, err %d
\n
"
,
vt8500_rtc
->
irq_alarm
,
ret
);
goto
err_
free_hz
;
goto
err_
unreg
;
}
return
0
;
err_free_hz:
free_irq
(
vt8500_rtc
->
irq_hz
,
vt8500_rtc
);
err_unreg:
rtc_device_unregister
(
vt8500_rtc
->
rtc
);
err_unmap:
...
...
@@ -323,7 +285,6 @@ static int __devexit vt8500_rtc_remove(struct platform_device *pdev)
struct
vt8500_rtc
*
vt8500_rtc
=
platform_get_drvdata
(
pdev
);
free_irq
(
vt8500_rtc
->
irq_alarm
,
vt8500_rtc
);
free_irq
(
vt8500_rtc
->
irq_hz
,
vt8500_rtc
);
rtc_device_unregister
(
vt8500_rtc
->
rtc
);
...
...
include/sound/soc.h
浏览文件 @
daf6c450
...
...
@@ -248,8 +248,7 @@ typedef int (*hw_write_t)(void *,const char* ,int);
extern
struct
snd_ac97_bus_ops
soc_ac97_ops
;
enum
snd_soc_control_type
{
SND_SOC_CUSTOM
=
1
,
SND_SOC_I2C
,
SND_SOC_I2C
=
1
,
SND_SOC_SPI
,
};
...
...
kernel/time/alarmtimer.c
浏览文件 @
daf6c450
...
...
@@ -42,15 +42,75 @@ static struct alarm_base {
clockid_t
base_clockid
;
}
alarm_bases
[
ALARM_NUMTYPE
];
/* freezer delta & lock used to handle clock_nanosleep triggered wakeups */
static
ktime_t
freezer_delta
;
static
DEFINE_SPINLOCK
(
freezer_delta_lock
);
#ifdef CONFIG_RTC_CLASS
/* rtc timer and device for setting alarm wakeups at suspend */
static
struct
rtc_timer
rtctimer
;
static
struct
rtc_device
*
rtcdev
;
#endif
static
DEFINE_SPINLOCK
(
rtcdev_lock
);
/* freezer delta & lock used to handle clock_nanosleep triggered wakeups */
static
ktime_t
freezer_delta
;
static
DEFINE_SPINLOCK
(
freezer_delta_lock
);
/**
* has_wakealarm - check rtc device has wakealarm ability
* @dev: current device
* @name_ptr: name to be returned
*
* This helper function checks to see if the rtc device can wake
* from suspend.
*/
static
int
has_wakealarm
(
struct
device
*
dev
,
void
*
name_ptr
)
{
struct
rtc_device
*
candidate
=
to_rtc_device
(
dev
);
if
(
!
candidate
->
ops
->
set_alarm
)
return
0
;
if
(
!
device_may_wakeup
(
candidate
->
dev
.
parent
))
return
0
;
*
(
const
char
**
)
name_ptr
=
dev_name
(
dev
);
return
1
;
}
/**
* alarmtimer_get_rtcdev - Return selected rtcdevice
*
* This function returns the rtc device to use for wakealarms.
* If one has not already been chosen, it checks to see if a
* functional rtc device is available.
*/
static
struct
rtc_device
*
alarmtimer_get_rtcdev
(
void
)
{
struct
device
*
dev
;
char
*
str
;
unsigned
long
flags
;
struct
rtc_device
*
ret
;
spin_lock_irqsave
(
&
rtcdev_lock
,
flags
);
if
(
!
rtcdev
)
{
/* Find an rtc device and init the rtc_timer */
dev
=
class_find_device
(
rtc_class
,
NULL
,
&
str
,
has_wakealarm
);
/* If we have a device then str is valid. See has_wakealarm() */
if
(
dev
)
{
rtcdev
=
rtc_class_open
(
str
);
/*
* Drop the reference we got in class_find_device,
* rtc_open takes its own.
*/
put_device
(
dev
);
rtc_timer_init
(
&
rtctimer
,
NULL
,
NULL
);
}
}
ret
=
rtcdev
;
spin_unlock_irqrestore
(
&
rtcdev_lock
,
flags
);
return
ret
;
}
#else
#define alarmtimer_get_rtcdev() (0)
#define rtcdev (0)
#endif
/**
...
...
@@ -166,6 +226,7 @@ static int alarmtimer_suspend(struct device *dev)
struct
rtc_time
tm
;
ktime_t
min
,
now
;
unsigned
long
flags
;
struct
rtc_device
*
rtc
;
int
i
;
spin_lock_irqsave
(
&
freezer_delta_lock
,
flags
);
...
...
@@ -173,8 +234,9 @@ static int alarmtimer_suspend(struct device *dev)
freezer_delta
=
ktime_set
(
0
,
0
);
spin_unlock_irqrestore
(
&
freezer_delta_lock
,
flags
);
rtc
=
rtcdev
;
/* If we have no rtcdev, just return */
if
(
!
rtc
dev
)
if
(
!
rtc
)
return
0
;
/* Find the soonest timer to expire*/
...
...
@@ -199,12 +261,12 @@ static int alarmtimer_suspend(struct device *dev)
WARN_ON
(
min
.
tv64
<
NSEC_PER_SEC
);
/* Setup an rtc timer to fire that far in the future */
rtc_timer_cancel
(
rtc
dev
,
&
rtctimer
);
rtc_read_time
(
rtc
dev
,
&
tm
);
rtc_timer_cancel
(
rtc
,
&
rtctimer
);
rtc_read_time
(
rtc
,
&
tm
);
now
=
rtc_tm_to_ktime
(
tm
);
now
=
ktime_add
(
now
,
min
);
rtc_timer_start
(
rtc
dev
,
&
rtctimer
,
now
,
ktime_set
(
0
,
0
));
rtc_timer_start
(
rtc
,
&
rtctimer
,
now
,
ktime_set
(
0
,
0
));
return
0
;
}
...
...
@@ -322,6 +384,9 @@ static int alarm_clock_getres(const clockid_t which_clock, struct timespec *tp)
{
clockid_t
baseid
=
alarm_bases
[
clock2alarm
(
which_clock
)].
base_clockid
;
if
(
!
alarmtimer_get_rtcdev
())
return
-
ENOTSUPP
;
return
hrtimer_get_res
(
baseid
,
tp
);
}
...
...
@@ -336,6 +401,9 @@ static int alarm_clock_get(clockid_t which_clock, struct timespec *tp)
{
struct
alarm_base
*
base
=
&
alarm_bases
[
clock2alarm
(
which_clock
)];
if
(
!
alarmtimer_get_rtcdev
())
return
-
ENOTSUPP
;
*
tp
=
ktime_to_timespec
(
base
->
gettime
());
return
0
;
}
...
...
@@ -351,6 +419,9 @@ static int alarm_timer_create(struct k_itimer *new_timer)
enum
alarmtimer_type
type
;
struct
alarm_base
*
base
;
if
(
!
alarmtimer_get_rtcdev
())
return
-
ENOTSUPP
;
if
(
!
capable
(
CAP_WAKE_ALARM
))
return
-
EPERM
;
...
...
@@ -385,6 +456,9 @@ static void alarm_timer_get(struct k_itimer *timr,
*/
static
int
alarm_timer_del
(
struct
k_itimer
*
timr
)
{
if
(
!
rtcdev
)
return
-
ENOTSUPP
;
alarm_cancel
(
&
timr
->
it
.
alarmtimer
);
return
0
;
}
...
...
@@ -402,6 +476,9 @@ static int alarm_timer_set(struct k_itimer *timr, int flags,
struct
itimerspec
*
new_setting
,
struct
itimerspec
*
old_setting
)
{
if
(
!
rtcdev
)
return
-
ENOTSUPP
;
/* Save old values */
old_setting
->
it_interval
=
ktime_to_timespec
(
timr
->
it
.
alarmtimer
.
period
);
...
...
@@ -541,6 +618,9 @@ static int alarm_timer_nsleep(const clockid_t which_clock, int flags,
int
ret
=
0
;
struct
restart_block
*
restart
;
if
(
!
alarmtimer_get_rtcdev
())
return
-
ENOTSUPP
;
if
(
!
capable
(
CAP_WAKE_ALARM
))
return
-
EPERM
;
...
...
@@ -638,65 +718,3 @@ static int __init alarmtimer_init(void)
}
device_initcall
(
alarmtimer_init
);
#ifdef CONFIG_RTC_CLASS
/**
* has_wakealarm - check rtc device has wakealarm ability
* @dev: current device
* @name_ptr: name to be returned
*
* This helper function checks to see if the rtc device can wake
* from suspend.
*/
static
int
__init
has_wakealarm
(
struct
device
*
dev
,
void
*
name_ptr
)
{
struct
rtc_device
*
candidate
=
to_rtc_device
(
dev
);
if
(
!
candidate
->
ops
->
set_alarm
)
return
0
;
if
(
!
device_may_wakeup
(
candidate
->
dev
.
parent
))
return
0
;
*
(
const
char
**
)
name_ptr
=
dev_name
(
dev
);
return
1
;
}
/**
* alarmtimer_init_late - Late initializing of alarmtimer code
*
* This function locates a rtc device to use for wakealarms.
* Run as late_initcall to make sure rtc devices have been
* registered.
*/
static
int
__init
alarmtimer_init_late
(
void
)
{
struct
device
*
dev
;
char
*
str
;
/* Find an rtc device and init the rtc_timer */
dev
=
class_find_device
(
rtc_class
,
NULL
,
&
str
,
has_wakealarm
);
/* If we have a device then str is valid. See has_wakealarm() */
if
(
dev
)
{
rtcdev
=
rtc_class_open
(
str
);
/*
* Drop the reference we got in class_find_device,
* rtc_open takes its own.
*/
put_device
(
dev
);
}
if
(
!
rtcdev
)
{
printk
(
KERN_WARNING
"No RTC device found, ALARM timers will"
" not wake from suspend"
);
}
rtc_timer_init
(
&
rtctimer
,
NULL
,
NULL
);
return
0
;
}
#else
static
int
__init
alarmtimer_init_late
(
void
)
{
printk
(
KERN_WARNING
"Kernel not built with RTC support, ALARM timers"
" will not wake from suspend"
);
return
0
;
}
#endif
late_initcall
(
alarmtimer_init_late
);
sound/pci/asihpi/asihpi.c
浏览文件 @
daf6c450
...
...
@@ -27,7 +27,6 @@
#include "hpioctl.h"
#include <linux/pci.h>
#include <linux/version.h>
#include <linux/init.h>
#include <linux/jiffies.h>
#include <linux/slab.h>
...
...
sound/pci/hda/patch_realtek.c
浏览文件 @
daf6c450
...
...
@@ -4883,7 +4883,6 @@ static const struct snd_pci_quirk alc880_cfg_tbl[] = {
SND_PCI_QUIRK(0x1025, 0xe309, "ULI", ALC880_3ST_DIG),
SND_PCI_QUIRK(0x1025, 0xe310, "ULI", ALC880_3ST),
SND_PCI_QUIRK(0x1039, 0x1234, NULL, ALC880_6ST_DIG),
SND_PCI_QUIRK(0x103c, 0x2a09, "HP", ALC880_5ST),
SND_PCI_QUIRK(0x1043, 0x10b3, "ASUS W1V", ALC880_ASUS_W1V),
SND_PCI_QUIRK(0x1043, 0x10c2, "ASUS W6A", ALC880_ASUS_DIG),
SND_PCI_QUIRK(0x1043, 0x10c3, "ASUS Wxx", ALC880_ASUS_DIG),
...
...
@@ -12600,6 +12599,7 @@ static const struct hda_verb alc262_toshiba_rx1_unsol_verbs[] = {
*/
enum {
PINFIX_FSC_H270,
PINFIX_HP_Z200,
};
static const struct alc_fixup alc262_fixups[] = {
...
...
@@ -12612,9 +12612,17 @@ static const struct alc_fixup alc262_fixups[] = {
{ }
}
},
[PINFIX_HP_Z200] = {
.type = ALC_FIXUP_PINS,
.v.pins = (const struct alc_pincfg[]) {
{ 0x16, 0x99130120 }, /* internal speaker */
{ }
}
},
};
static const struct snd_pci_quirk alc262_fixup_tbl[] = {
SND_PCI_QUIRK(0x103c, 0x170b, "HP Z200", PINFIX_HP_Z200),
SND_PCI_QUIRK(0x1734, 0x1147, "FSC Celsius H270", PINFIX_FSC_H270),
{}
};
...
...
@@ -12731,6 +12739,8 @@ static const struct snd_pci_quirk alc262_cfg_tbl[] = {
ALC262_HP_BPC),
SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x1500, "HP z series",
ALC262_HP_BPC),
SND_PCI_QUIRK(0x103c, 0x170b, "HP Z200",
ALC262_AUTO),
SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x1700, "HP xw series",
ALC262_HP_BPC),
SND_PCI_QUIRK(0x103c, 0x2800, "HP D7000", ALC262_HP_BPC_D7000_WL),
...
...
@@ -13872,7 +13882,6 @@ static const struct snd_pci_quirk alc268_cfg_tbl[] = {
SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC268_3ST),
SND_PCI_QUIRK(0x1170, 0x0040, "ZEPTO", ALC268_ZEPTO),
SND_PCI_QUIRK(0x14c0, 0x0025, "COMPAL IFL90/JFL-92", ALC268_TOSHIBA),
SND_PCI_QUIRK(0x152d, 0x0763, "Diverse (CPR2000)", ALC268_ACER),
SND_PCI_QUIRK(0x152d, 0x0771, "Quanta IL1", ALC267_QUANTA_IL1),
{}
};
...
...
sound/pci/hda/patch_via.c
浏览文件 @
daf6c450
...
...
@@ -745,12 +745,23 @@ static int via_independent_hp_put(struct snd_kcontrol *kcontrol,
struct
via_spec
*
spec
=
codec
->
spec
;
hda_nid_t
nid
=
kcontrol
->
private_value
;
unsigned
int
pinsel
=
ucontrol
->
value
.
enumerated
.
item
[
0
];
unsigned
int
parm0
,
parm1
;
/* Get Independent Mode index of headphone pin widget */
spec
->
hp_independent_mode
=
spec
->
hp_independent_mode_index
==
pinsel
?
1
:
0
;
if
(
spec
->
codec_type
==
VT1718S
)
if
(
spec
->
codec_type
==
VT1718S
)
{
snd_hda_codec_write
(
codec
,
nid
,
0
,
AC_VERB_SET_CONNECT_SEL
,
pinsel
?
2
:
0
);
/* Set correct mute switch for MW3 */
parm0
=
spec
->
hp_independent_mode
?
AMP_IN_UNMUTE
(
0
)
:
AMP_IN_MUTE
(
0
);
parm1
=
spec
->
hp_independent_mode
?
AMP_IN_MUTE
(
1
)
:
AMP_IN_UNMUTE
(
1
);
snd_hda_codec_write
(
codec
,
0x1b
,
0
,
AC_VERB_SET_AMP_GAIN_MUTE
,
parm0
);
snd_hda_codec_write
(
codec
,
0x1b
,
0
,
AC_VERB_SET_AMP_GAIN_MUTE
,
parm1
);
}
else
snd_hda_codec_write
(
codec
,
nid
,
0
,
AC_VERB_SET_CONNECT_SEL
,
pinsel
);
...
...
@@ -4283,9 +4294,6 @@ static const struct hda_verb vt1718S_volume_init_verbs[] = {
{
0x21
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_MUTE
(
2
)},
{
0x21
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_MUTE
(
3
)},
{
0x21
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
5
)},
/* Setup default input of Front HP to MW9 */
{
0x28
,
AC_VERB_SET_CONNECT_SEL
,
0x1
},
/* PW9 PW10 Output enable */
{
0x2d
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
AC_PINCTL_OUT_EN
},
{
0x2e
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
AC_PINCTL_OUT_EN
},
...
...
@@ -4294,10 +4302,10 @@ static const struct hda_verb vt1718S_volume_init_verbs[] = {
/* Enable Boost Volume backdoor */
{
0x1
,
0xf88
,
0x8
},
/* MW0/1/2/3/4: un-mute index 0 (AOWx), mute index 1 (MW9) */
{
0x18
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_
UN
MUTE
(
0
)},
{
0x18
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_MUTE
(
0
)},
{
0x19
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
0
)},
{
0x1a
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
0
)},
{
0x1b
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_
UN
MUTE
(
0
)},
{
0x1b
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_MUTE
(
0
)},
{
0x1c
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
0
)},
{
0x18
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
1
)},
{
0x19
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_MUTE
(
1
)},
...
...
@@ -4307,8 +4315,6 @@ static const struct hda_verb vt1718S_volume_init_verbs[] = {
/* set MUX1 = 2 (AOW4), MUX2 = 1 (AOW3) */
{
0x34
,
AC_VERB_SET_CONNECT_SEL
,
0x2
},
{
0x35
,
AC_VERB_SET_CONNECT_SEL
,
0x1
},
/* Unmute MW4's index 0 */
{
0x1c
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_IN_UNMUTE
(
0
)},
{
}
};
...
...
@@ -4456,6 +4462,19 @@ static int vt1718S_auto_create_multi_out_ctls(struct via_spec *spec,
if
(
err
<
0
)
return
err
;
}
else
if
(
i
==
AUTO_SEQ_FRONT
)
{
/* add control to mixer index 0 */
err
=
via_add_control
(
spec
,
VIA_CTL_WIDGET_VOL
,
"Master Front Playback Volume"
,
HDA_COMPOSE_AMP_VAL
(
0x21
,
3
,
5
,
HDA_INPUT
));
if
(
err
<
0
)
return
err
;
err
=
via_add_control
(
spec
,
VIA_CTL_WIDGET_MUTE
,
"Master Front Playback Switch"
,
HDA_COMPOSE_AMP_VAL
(
0x21
,
3
,
5
,
HDA_INPUT
));
if
(
err
<
0
)
return
err
;
/* Front */
sprintf
(
name
,
"%s Playback Volume"
,
chname
[
i
]);
err
=
via_add_control
(
...
...
sound/soc/codecs/wm8991.c
浏览文件 @
daf6c450
...
...
@@ -13,7 +13,6 @@
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/delay.h>
...
...
sound/soc/imx/Kconfig
浏览文件 @
daf6c450
...
...
@@ -11,9 +11,6 @@ menuconfig SND_IMX_SOC
if SND_IMX_SOC
config SND_MXC_SOC_SSI
tristate
config SND_MXC_SOC_FIQ
tristate
...
...
@@ -24,7 +21,6 @@ config SND_MXC_SOC_WM1133_EV1
tristate "Audio on the the i.MX31ADS with WM1133-EV1 fitted"
depends on MACH_MX31ADS_WM1133_EV1 && EXPERIMENTAL
select SND_SOC_WM8350
select SND_MXC_SOC_SSI
select SND_MXC_SOC_FIQ
help
Enable support for audio on the i.MX31ADS with the WM1133-EV1
...
...
@@ -34,7 +30,6 @@ config SND_SOC_MX27VIS_AIC32X4
tristate "SoC audio support for Visstrim M10 boards"
depends on MACH_IMX27_VISSTRIM_M10
select SND_SOC_TVL320AIC32X4
select SND_MXC_SOC_SSI
select SND_MXC_SOC_MX2
help
Say Y if you want to add support for SoC audio on Visstrim SM10
...
...
@@ -44,7 +39,6 @@ config SND_SOC_PHYCORE_AC97
tristate "SoC Audio support for Phytec phyCORE (and phyCARD) boards"
depends on MACH_PCM043 || MACH_PCA100
select SND_SOC_WM9712
select SND_MXC_SOC_SSI
select SND_MXC_SOC_FIQ
help
Say Y if you want to add support for SoC audio on Phytec phyCORE
...
...
@@ -57,7 +51,6 @@ config SND_SOC_EUKREA_TLV320
|| MACH_EUKREA_MBIMXSD35_BASEBOARD \
|| MACH_EUKREA_MBIMXSD51_BASEBOARD
select SND_SOC_TLV320AIC23
select SND_MXC_SOC_SSI
select SND_MXC_SOC_FIQ
help
Enable I2S based access to the TLV320AIC23B codec attached
...
...
sound/soc/imx/imx-pcm-dma-mx2.c
浏览文件 @
daf6c450
...
...
@@ -337,3 +337,5 @@ static void __exit snd_imx_pcm_exit(void)
platform_driver_unregister
(
&
imx_pcm_driver
);
}
module_exit
(
snd_imx_pcm_exit
);
MODULE_LICENSE
(
"GPL"
);
MODULE_ALIAS
(
"platform:imx-pcm-audio"
);
sound/soc/imx/imx-ssi.c
浏览文件 @
daf6c450
...
...
@@ -774,4 +774,4 @@ module_exit(imx_ssi_exit);
MODULE_AUTHOR
(
"Sascha Hauer, <s.hauer@pengutronix.de>"
);
MODULE_DESCRIPTION
(
"i.MX I2S/ac97 SoC Interface"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_ALIAS
(
"platform:imx-ssi"
);
sound/soc/pxa/pxa2xx-pcm.c
浏览文件 @
daf6c450
...
...
@@ -95,14 +95,14 @@ static int pxa2xx_soc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
if
(
!
card
->
dev
->
coherent_dma_mask
)
card
->
dev
->
coherent_dma_mask
=
DMA_BIT_MASK
(
32
);
if
(
dai
->
driver
->
playback
.
channels_min
)
{
if
(
pcm
->
streams
[
SNDRV_PCM_STREAM_PLAYBACK
].
substream
)
{
ret
=
pxa2xx_pcm_preallocate_dma_buffer
(
pcm
,
SNDRV_PCM_STREAM_PLAYBACK
);
if
(
ret
)
goto
out
;
}
if
(
dai
->
driver
->
capture
.
channels_min
)
{
if
(
pcm
->
streams
[
SNDRV_PCM_STREAM_CAPTURE
].
substream
)
{
ret
=
pxa2xx_pcm_preallocate_dma_buffer
(
pcm
,
SNDRV_PCM_STREAM_CAPTURE
);
if
(
ret
)
...
...
sound/soc/soc-cache.c
浏览文件 @
daf6c450
...
...
@@ -409,9 +409,6 @@ int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec,
codec
->
bulk_write_raw
=
snd_soc_hw_bulk_write_raw
;
switch
(
control
)
{
case
SND_SOC_CUSTOM
:
break
;
case
SND_SOC_I2C
:
#if defined(CONFIG_I2C) || (defined(CONFIG_I2C_MODULE) && defined(MODULE))
codec
->
hw_write
=
(
hw_write_t
)
i2c_master_send
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录