Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
b69bc396
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 大约 4 年
通知
14
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
b69bc396
编写于
2月 15, 2009
作者:
I
Ingo Molnar
浏览文件
操作
浏览文件
下载
差异文件
Merge commit 'v2.6.29-rc5' into x86/apic
上级
c466ed2e
d2f8d7ee
变更
41
展开全部
隐藏空白更改
内联
并排
Showing
41 changed file
with
8881 addition
and
8997 deletion
+8881
-8997
Documentation/connector/cn_test.c
Documentation/connector/cn_test.c
+2
-4
Makefile
Makefile
+1
-1
drivers/atm/fore200e.c
drivers/atm/fore200e.c
+2
-2
drivers/net/3c505.c
drivers/net/3c505.c
+16
-10
drivers/net/bnx2.c
drivers/net/bnx2.c
+22
-14
drivers/net/bnx2.h
drivers/net/bnx2.h
+1
-1
drivers/net/bnx2_fw.h
drivers/net/bnx2_fw.h
+4206
-4309
drivers/net/bnx2_fw2.h
drivers/net/bnx2_fw2.h
+4363
-4432
drivers/net/irda/mcs7780.c
drivers/net/irda/mcs7780.c
+1
-1
drivers/net/netxen/netxen_nic_main.c
drivers/net/netxen/netxen_nic_main.c
+1
-65
drivers/net/phy/mdio-gpio.c
drivers/net/phy/mdio-gpio.c
+2
-0
drivers/net/qlge/qlge_main.c
drivers/net/qlge/qlge_main.c
+27
-10
drivers/net/sun3lance.c
drivers/net/sun3lance.c
+1
-1
drivers/net/sunhme.c
drivers/net/sunhme.c
+28
-6
drivers/net/tg3.c
drivers/net/tg3.c
+2
-2
drivers/net/wireless/ath5k/base.c
drivers/net/wireless/ath5k/base.c
+53
-32
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-agn.c
+13
-2
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
+13
-2
drivers/net/wireless/zd1211rw/zd_rf.c
drivers/net/wireless/zd1211rw/zd_rf.c
+1
-0
drivers/net/wireless/zd1211rw/zd_usb.c
drivers/net/wireless/zd1211rw/zd_usb.c
+1
-0
include/linux/pkt_sched.h
include/linux/pkt_sched.h
+1
-1
include/linux/soundcard.h
include/linux/soundcard.h
+23
-51
include/net/sock.h
include/net/sock.h
+1
-1
kernel/user.c
kernel/user.c
+1
-2
net/core/sock.c
net/core/sock.c
+2
-0
net/mac80211/tx.c
net/mac80211/tx.c
+2
-0
net/phonet/pep-gprs.c
net/phonet/pep-gprs.c
+0
-1
net/phonet/pep.c
net/phonet/pep.c
+1
-1
net/wimax/id-table.c
net/wimax/id-table.c
+5
-4
sound/drivers/mtpav.c
sound/drivers/mtpav.c
+2
-1
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_codec.c
+10
-0
sound/pci/hda/hda_hwdep.c
sound/pci/hda/hda_hwdep.c
+1
-1
sound/pci/hda/hda_local.h
sound/pci/hda/hda_local.h
+2
-0
sound/pci/hda/patch_analog.c
sound/pci/hda/patch_analog.c
+12
-3
sound/pci/hda/patch_intelhdmi.c
sound/pci/hda/patch_intelhdmi.c
+34
-27
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+1
-0
sound/pci/hda/patch_sigmatel.c
sound/pci/hda/patch_sigmatel.c
+11
-2
sound/soc/codecs/tlv320aic3x.c
sound/soc/codecs/tlv320aic3x.c
+7
-4
sound/soc/codecs/wm8990.c
sound/soc/codecs/wm8990.c
+3
-1
sound/soc/omap/sdp3430.c
sound/soc/omap/sdp3430.c
+2
-2
sound/soc/soc-core.c
sound/soc/soc-core.c
+4
-1
未找到文件。
Documentation/connector/cn_test.c
浏览文件 @
b69bc396
...
...
@@ -137,7 +137,7 @@ static void cn_test_timer_func(unsigned long __data)
memcpy
(
m
+
1
,
data
,
m
->
len
);
cn_netlink_send
(
m
,
0
,
gfp_any
()
);
cn_netlink_send
(
m
,
0
,
GFP_ATOMIC
);
kfree
(
m
);
}
...
...
@@ -160,10 +160,8 @@ static int cn_test_init(void)
goto
err_out
;
}
init_timer
(
&
cn_test_timer
);
cn_test_timer
.
function
=
cn_test_timer_func
;
setup_timer
(
&
cn_test_timer
,
cn_test_timer_func
,
0
);
cn_test_timer
.
expires
=
jiffies
+
HZ
;
cn_test_timer
.
data
=
0
;
add_timer
(
&
cn_test_timer
);
return
0
;
...
...
Makefile
浏览文件 @
b69bc396
VERSION
=
2
PATCHLEVEL
=
6
SUBLEVEL
=
29
EXTRAVERSION
=
-rc
4
EXTRAVERSION
=
-rc
5
NAME
=
Erotic Pickled Herring
# *DOCUMENTATION*
...
...
drivers/atm/fore200e.c
浏览文件 @
b69bc396
...
...
@@ -2519,8 +2519,8 @@ fore200e_load_and_start_fw(struct fore200e* fore200e)
return
err
;
sprintf
(
buf
,
"%s%s"
,
fore200e
->
bus
->
proc_name
,
FW_EXT
);
if
(
request_firmware
(
&
firmware
,
buf
,
device
)
==
1
)
{
printk
(
FORE200E
"
missing %s firmware image
\n
"
,
fore200e
->
bus
->
model_name
);
if
(
(
err
=
request_firmware
(
&
firmware
,
buf
,
device
))
<
0
)
{
printk
(
FORE200E
"
problem loading firmware image %s
\n
"
,
fore200e
->
bus
->
model_name
);
return
err
;
}
...
...
drivers/net/3c505.c
浏览文件 @
b69bc396
...
...
@@ -493,21 +493,27 @@ static bool receive_pcb(struct net_device *dev, pcb_struct * pcb)
}
/* read the data */
spin_lock_irqsave
(
&
adapter
->
lock
,
flags
);
i
=
0
;
do
{
j
=
0
;
while
(((
stat
=
get_status
(
dev
->
base_addr
))
&
ACRF
)
==
0
&&
j
++
<
20000
);
pcb
->
data
.
raw
[
i
++
]
=
inb_command
(
dev
->
base_addr
);
if
(
i
>
MAX_PCB_DATA
)
INVALID_PCB_MSG
(
i
);
}
while
((
stat
&
ASF_PCB_MASK
)
!=
ASF_PCB_END
&&
j
<
20000
);
for
(
i
=
0
;
i
<
MAX_PCB_DATA
;
i
++
)
{
for
(
j
=
0
;
j
<
20000
;
j
++
)
{
stat
=
get_status
(
dev
->
base_addr
);
if
(
stat
&
ACRF
)
break
;
}
pcb
->
data
.
raw
[
i
]
=
inb_command
(
dev
->
base_addr
);
if
((
stat
&
ASF_PCB_MASK
)
==
ASF_PCB_END
||
j
>=
20000
)
break
;
}
spin_unlock_irqrestore
(
&
adapter
->
lock
,
flags
);
if
(
i
>=
MAX_PCB_DATA
)
{
INVALID_PCB_MSG
(
i
);
return
false
;
}
if
(
j
>=
20000
)
{
TIMEOUT_MSG
(
__LINE__
);
return
false
;
}
/*
woops,
the last "data" byte was really the length! */
total_length
=
pcb
->
data
.
raw
[
--
i
];
/* the last "data" byte was really the length! */
total_length
=
pcb
->
data
.
raw
[
i
];
/* safety check total length vs data length */
if
(
total_length
!=
(
pcb
->
length
+
2
))
{
...
...
drivers/net/bnx2.c
浏览文件 @
b69bc396
/* bnx2.c: Broadcom NX2 network driver.
*
* Copyright (c) 2004-200
8
Broadcom Corporation
* Copyright (c) 2004-200
9
Broadcom Corporation
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
...
...
@@ -57,8 +57,8 @@
#define DRV_MODULE_NAME "bnx2"
#define PFX DRV_MODULE_NAME ": "
#define DRV_MODULE_VERSION "1.9.
0
"
#define DRV_MODULE_RELDATE "
Dec 16, 2008
"
#define DRV_MODULE_VERSION "1.9.
2
"
#define DRV_MODULE_RELDATE "
Feb 11, 2009
"
#define RUN_AT(x) (jiffies + (x))
...
...
@@ -2910,18 +2910,8 @@ bnx2_rx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)
rx_hdr
=
(
struct
l2_fhdr
*
)
skb
->
data
;
len
=
rx_hdr
->
l2_fhdr_pkt_len
;
status
=
rx_hdr
->
l2_fhdr_status
;
if
((
status
=
rx_hdr
->
l2_fhdr_status
)
&
(
L2_FHDR_ERRORS_BAD_CRC
|
L2_FHDR_ERRORS_PHY_DECODE
|
L2_FHDR_ERRORS_ALIGNMENT
|
L2_FHDR_ERRORS_TOO_SHORT
|
L2_FHDR_ERRORS_GIANT_FRAME
))
{
bnx2_reuse_rx_skb
(
bp
,
rxr
,
skb
,
sw_ring_cons
,
sw_ring_prod
);
goto
next_rx
;
}
hdr_len
=
0
;
if
(
status
&
L2_FHDR_STATUS_SPLIT
)
{
hdr_len
=
rx_hdr
->
l2_fhdr_ip_xsum
;
...
...
@@ -2931,6 +2921,24 @@ bnx2_rx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)
pg_ring_used
=
1
;
}
if
(
unlikely
(
status
&
(
L2_FHDR_ERRORS_BAD_CRC
|
L2_FHDR_ERRORS_PHY_DECODE
|
L2_FHDR_ERRORS_ALIGNMENT
|
L2_FHDR_ERRORS_TOO_SHORT
|
L2_FHDR_ERRORS_GIANT_FRAME
)))
{
bnx2_reuse_rx_skb
(
bp
,
rxr
,
skb
,
sw_ring_cons
,
sw_ring_prod
);
if
(
pg_ring_used
)
{
int
pages
;
pages
=
PAGE_ALIGN
(
len
-
hdr_len
)
>>
PAGE_SHIFT
;
bnx2_reuse_rx_skb_pages
(
bp
,
rxr
,
NULL
,
pages
);
}
goto
next_rx
;
}
len
-=
4
;
if
(
len
<=
bp
->
rx_copy_thresh
)
{
...
...
drivers/net/bnx2.h
浏览文件 @
b69bc396
/* bnx2.h: Broadcom NX2 network driver.
*
* Copyright (c) 2004-200
7
Broadcom Corporation
* Copyright (c) 2004-200
9
Broadcom Corporation
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
...
...
drivers/net/bnx2_fw.h
浏览文件 @
b69bc396
此差异已折叠。
点击以展开。
drivers/net/bnx2_fw2.h
浏览文件 @
b69bc396
此差异已折叠。
点击以展开。
drivers/net/irda/mcs7780.c
浏览文件 @
b69bc396
...
...
@@ -585,7 +585,7 @@ static int mcs_speed_change(struct mcs_cb *mcs)
mcs_get_reg
(
mcs
,
MCS_RESV_REG
,
&
rval
);
}
while
(
cnt
++
<
100
&&
(
rval
&
MCS_IRINTX
));
if
(
cnt
>=
100
)
{
if
(
cnt
>
100
)
{
IRDA_ERROR
(
"unable to change speed
\n
"
);
ret
=
-
EIO
;
goto
error
;
...
...
drivers/net/netxen/netxen_nic_main.c
浏览文件 @
b69bc396
...
...
@@ -201,9 +201,9 @@ static int nx_set_dma_mask(struct netxen_adapter *adapter, uint8_t revision_id)
adapter
->
pci_using_dac
=
1
;
return
0
;
}
set_32_bit_mask:
#endif
/* CONFIG_IA64 */
set_32_bit_mask:
err
=
pci_set_dma_mask
(
pdev
,
DMA_32BIT_MASK
);
if
(
!
err
)
err
=
pci_set_consistent_dma_mask
(
pdev
,
DMA_32BIT_MASK
);
...
...
@@ -372,67 +372,6 @@ static void netxen_set_port_mode(struct netxen_adapter *adapter)
}
}
#define PCI_CAP_ID_GEN 0x10
static
void
netxen_pcie_strap_init
(
struct
netxen_adapter
*
adapter
)
{
u32
pdevfuncsave
;
u32
c8c9value
=
0
;
u32
chicken
=
0
;
u32
control
=
0
;
int
i
,
pos
;
struct
pci_dev
*
pdev
;
pdev
=
adapter
->
pdev
;
adapter
->
hw_read_wx
(
adapter
,
NETXEN_PCIE_REG
(
PCIE_CHICKEN3
),
&
chicken
,
4
);
/* clear chicken3.25:24 */
chicken
&=
0xFCFFFFFF
;
/*
* if gen1 and B0, set F1020 - if gen 2, do nothing
* if gen2 set to F1000
*/
pos
=
pci_find_capability
(
pdev
,
PCI_CAP_ID_GEN
);
if
(
pos
==
0xC0
)
{
pci_read_config_dword
(
pdev
,
pos
+
0x10
,
&
control
);
if
((
control
&
0x000F0000
)
!=
0x00020000
)
{
/* set chicken3.24 if gen1 */
chicken
|=
0x01000000
;
}
printk
(
KERN_INFO
"%s Gen2 strapping detected
\n
"
,
netxen_nic_driver_name
);
c8c9value
=
0xF1000
;
}
else
{
/* set chicken3.24 if gen1 */
chicken
|=
0x01000000
;
printk
(
KERN_INFO
"%s Gen1 strapping detected
\n
"
,
netxen_nic_driver_name
);
if
(
adapter
->
ahw
.
revision_id
==
NX_P3_B0
)
c8c9value
=
0xF1020
;
else
c8c9value
=
0
;
}
adapter
->
hw_write_wx
(
adapter
,
NETXEN_PCIE_REG
(
PCIE_CHICKEN3
),
&
chicken
,
4
);
if
(
!
c8c9value
)
return
;
pdevfuncsave
=
pdev
->
devfn
;
if
(
pdevfuncsave
&
0x07
)
return
;
for
(
i
=
0
;
i
<
8
;
i
++
)
{
pci_read_config_dword
(
pdev
,
pos
+
8
,
&
control
);
pci_read_config_dword
(
pdev
,
pos
+
8
,
&
control
);
pci_write_config_dword
(
pdev
,
pos
+
8
,
c8c9value
);
pdev
->
devfn
++
;
}
pdev
->
devfn
=
pdevfuncsave
;
}
static
void
netxen_set_msix_bit
(
struct
pci_dev
*
pdev
,
int
enable
)
{
u32
control
;
...
...
@@ -812,9 +751,6 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
}
netxen_load_firmware
(
adapter
);
if
(
NX_IS_REVISION_P3
(
revision_id
))
netxen_pcie_strap_init
(
adapter
);
if
(
NX_IS_REVISION_P2
(
revision_id
))
{
/* Initialize multicast addr pool owners */
...
...
drivers/net/phy/mdio-gpio.c
浏览文件 @
b69bc396
...
...
@@ -125,6 +125,8 @@ static int __devinit mdio_gpio_bus_init(struct device *dev,
if
(
gpio_request
(
bitbang
->
mdio
,
"mdio"
))
goto
out_free_mdc
;
gpio_direction_output
(
bitbang
->
mdc
,
0
);
dev_set_drvdata
(
dev
,
new_bus
);
ret
=
mdiobus_register
(
new_bus
);
...
...
drivers/net/qlge/qlge_main.c
浏览文件 @
b69bc396
...
...
@@ -898,6 +898,7 @@ static void ql_update_lbq(struct ql_adapter *qdev, struct rx_ring *rx_ring)
lbq_desc
->
index
);
lbq_desc
->
p
.
lbq_page
=
alloc_page
(
GFP_ATOMIC
);
if
(
lbq_desc
->
p
.
lbq_page
==
NULL
)
{
rx_ring
->
lbq_clean_idx
=
clean_idx
;
QPRINTK
(
qdev
,
RX_STATUS
,
ERR
,
"Couldn't get a page.
\n
"
);
return
;
...
...
@@ -907,6 +908,9 @@ static void ql_update_lbq(struct ql_adapter *qdev, struct rx_ring *rx_ring)
0
,
PAGE_SIZE
,
PCI_DMA_FROMDEVICE
);
if
(
pci_dma_mapping_error
(
qdev
->
pdev
,
map
))
{
rx_ring
->
lbq_clean_idx
=
clean_idx
;
put_page
(
lbq_desc
->
p
.
lbq_page
);
lbq_desc
->
p
.
lbq_page
=
NULL
;
QPRINTK
(
qdev
,
RX_STATUS
,
ERR
,
"PCI mapping failed.
\n
"
);
return
;
...
...
@@ -968,6 +972,8 @@ static void ql_update_sbq(struct ql_adapter *qdev, struct rx_ring *rx_ring)
if
(
pci_dma_mapping_error
(
qdev
->
pdev
,
map
))
{
QPRINTK
(
qdev
,
IFUP
,
ERR
,
"PCI mapping failed.
\n
"
);
rx_ring
->
sbq_clean_idx
=
clean_idx
;
dev_kfree_skb_any
(
sbq_desc
->
p
.
skb
);
sbq_desc
->
p
.
skb
=
NULL
;
return
;
}
pci_unmap_addr_set
(
sbq_desc
,
mapaddr
,
map
);
...
...
@@ -1449,12 +1455,12 @@ static void ql_process_mac_rx_intr(struct ql_adapter *qdev,
if
(
qdev
->
vlgrp
&&
(
ib_mac_rsp
->
flags2
&
IB_MAC_IOCB_RSP_V
))
{
QPRINTK
(
qdev
,
RX_STATUS
,
DEBUG
,
"Passing a VLAN packet upstream.
\n
"
);
vlan_hwaccel_r
x
(
skb
,
qdev
->
vlgrp
,
vlan_hwaccel_r
eceive_skb
(
skb
,
qdev
->
vlgrp
,
le16_to_cpu
(
ib_mac_rsp
->
vlan_id
));
}
else
{
QPRINTK
(
qdev
,
RX_STATUS
,
DEBUG
,
"Passing a normal packet upstream.
\n
"
);
netif_r
x
(
skb
);
netif_r
eceive_skb
(
skb
);
}
}
...
...
@@ -1511,6 +1517,11 @@ void ql_queue_asic_error(struct ql_adapter *qdev)
netif_stop_queue
(
qdev
->
ndev
);
netif_carrier_off
(
qdev
->
ndev
);
ql_disable_interrupts
(
qdev
);
/* Clear adapter up bit to signal the recovery
* process that it shouldn't kill the reset worker
* thread
*/
clear_bit
(
QL_ADAPTER_UP
,
&
qdev
->
flags
);
queue_delayed_work
(
qdev
->
workqueue
,
&
qdev
->
asic_reset_work
,
0
);
}
...
...
@@ -1927,10 +1938,6 @@ static int qlge_send(struct sk_buff *skb, struct net_device *ndev)
tx_ring_desc
=
&
tx_ring
->
q
[
tx_ring
->
prod_idx
];
mac_iocb_ptr
=
tx_ring_desc
->
queue_entry
;
memset
((
void
*
)
mac_iocb_ptr
,
0
,
sizeof
(
mac_iocb_ptr
));
if
(
ql_map_send
(
qdev
,
mac_iocb_ptr
,
skb
,
tx_ring_desc
)
!=
NETDEV_TX_OK
)
{
QPRINTK
(
qdev
,
TX_QUEUED
,
ERR
,
"Could not map the segments.
\n
"
);
return
NETDEV_TX_BUSY
;
}
mac_iocb_ptr
->
opcode
=
OPCODE_OB_MAC_IOCB
;
mac_iocb_ptr
->
tid
=
tx_ring_desc
->
index
;
...
...
@@ -1956,6 +1963,12 @@ static int qlge_send(struct sk_buff *skb, struct net_device *ndev)
ql_hw_csum_setup
(
skb
,
(
struct
ob_mac_tso_iocb_req
*
)
mac_iocb_ptr
);
}
if
(
ql_map_send
(
qdev
,
mac_iocb_ptr
,
skb
,
tx_ring_desc
)
!=
NETDEV_TX_OK
)
{
QPRINTK
(
qdev
,
TX_QUEUED
,
ERR
,
"Could not map the segments.
\n
"
);
return
NETDEV_TX_BUSY
;
}
QL_DUMP_OB_MAC_IOCB
(
mac_iocb_ptr
);
tx_ring
->
prod_idx
++
;
if
(
tx_ring
->
prod_idx
==
tx_ring
->
wq_len
)
...
...
@@ -2873,8 +2886,8 @@ static int ql_start_rss(struct ql_adapter *qdev)
/*
* Fill out the Indirection Table.
*/
for
(
i
=
0
;
i
<
32
;
i
++
)
hash_id
[
i
]
=
i
&
1
;
for
(
i
=
0
;
i
<
256
;
i
++
)
hash_id
[
i
]
=
i
&
(
qdev
->
rss_ring_count
-
1
)
;
/*
* Random values for the IPv6 and IPv4 Hash Keys.
...
...
@@ -3100,7 +3113,11 @@ static int ql_adapter_down(struct ql_adapter *qdev)
netif_stop_queue
(
ndev
);
netif_carrier_off
(
ndev
);
cancel_delayed_work_sync
(
&
qdev
->
asic_reset_work
);
/* Don't kill the reset worker thread if we
* are in the process of recovery.
*/
if
(
test_bit
(
QL_ADAPTER_UP
,
&
qdev
->
flags
))
cancel_delayed_work_sync
(
&
qdev
->
asic_reset_work
);
cancel_delayed_work_sync
(
&
qdev
->
mpi_reset_work
);
cancel_delayed_work_sync
(
&
qdev
->
mpi_work
);
...
...
@@ -3501,7 +3518,7 @@ static int qlge_set_mac_address(struct net_device *ndev, void *p)
static
void
qlge_tx_timeout
(
struct
net_device
*
ndev
)
{
struct
ql_adapter
*
qdev
=
(
struct
ql_adapter
*
)
netdev_priv
(
ndev
);
q
ueue_delayed_work
(
qdev
->
workqueue
,
&
qdev
->
asic_reset_work
,
0
);
q
l_queue_asic_error
(
qdev
);
}
static
void
ql_asic_reset_work
(
struct
work_struct
*
work
)
...
...
drivers/net/sun3lance.c
浏览文件 @
b69bc396
...
...
@@ -428,7 +428,7 @@ static int lance_open( struct net_device *dev )
while
(
--
i
>
0
)
if
(
DREG
&
CSR0_IDON
)
break
;
if
(
i
<
0
||
(
DREG
&
CSR0_ERR
))
{
if
(
i
<
=
0
||
(
DREG
&
CSR0_ERR
))
{
DPRINTK
(
2
,
(
"lance_open(): opening %s failed, i=%d, csr0=%04x
\n
"
,
dev
->
name
,
i
,
DREG
));
DREG
=
CSR0_STOP
;
...
...
drivers/net/sunhme.c
浏览文件 @
b69bc396
...
...
@@ -2543,25 +2543,36 @@ static struct quattro * __devinit quattro_sbus_find(struct of_device *child)
}
/* After all quattro cards have been probed, we call these functions
* to register the IRQ handlers.
* to register the IRQ handlers for the cards that have been
* successfully probed and skip the cards that failed to initialize
*/
static
void
__init
quattro_sbus_register_irqs
(
void
)
static
int
__init
quattro_sbus_register_irqs
(
void
)
{
struct
quattro
*
qp
;
for
(
qp
=
qfe_sbus_list
;
qp
!=
NULL
;
qp
=
qp
->
next
)
{
struct
of_device
*
op
=
qp
->
quattro_dev
;
int
err
;
int
err
,
qfe_slot
,
skip
=
0
;
for
(
qfe_slot
=
0
;
qfe_slot
<
4
;
qfe_slot
++
)
{
if
(
!
qp
->
happy_meals
[
qfe_slot
])
skip
=
1
;
}
if
(
skip
)
continue
;
err
=
request_irq
(
op
->
irqs
[
0
],
quattro_sbus_interrupt
,
IRQF_SHARED
,
"Quattro"
,
qp
);
if
(
err
!=
0
)
{
printk
(
KERN_ERR
"Quattro: Fatal IRQ registery error %d.
\n
"
,
err
);
panic
(
"QFE request irq"
);
printk
(
KERN_ERR
"Quattro HME: IRQ registration "
"error %d.
\n
"
,
err
);
return
err
;
}
}
return
0
;
}
static
void
quattro_sbus_free_irqs
(
void
)
...
...
@@ -2570,6 +2581,14 @@ static void quattro_sbus_free_irqs(void)
for
(
qp
=
qfe_sbus_list
;
qp
!=
NULL
;
qp
=
qp
->
next
)
{
struct
of_device
*
op
=
qp
->
quattro_dev
;
int
qfe_slot
,
skip
=
0
;
for
(
qfe_slot
=
0
;
qfe_slot
<
4
;
qfe_slot
++
)
{
if
(
!
qp
->
happy_meals
[
qfe_slot
])
skip
=
1
;
}
if
(
skip
)
continue
;
free_irq
(
op
->
irqs
[
0
],
qp
);
}
...
...
@@ -2828,6 +2847,9 @@ static int __devinit happy_meal_sbus_probe_one(struct of_device *op, int is_qfe)
if
(
hp
->
tcvregs
)
of_iounmap
(
&
op
->
resource
[
4
],
hp
->
tcvregs
,
TCVR_REG_SIZE
);
if
(
qp
)
qp
->
happy_meals
[
qfe_slot
]
=
NULL
;
err_out_free_netdev:
free_netdev
(
dev
);
...
...
@@ -3285,7 +3307,7 @@ static int __init happy_meal_sbus_init(void)
err
=
of_register_driver
(
&
hme_sbus_driver
,
&
of_bus_type
);
if
(
!
err
)
quattro_sbus_register_irqs
();
err
=
quattro_sbus_register_irqs
();
return
err
;
}
...
...
drivers/net/tg3.c
浏览文件 @
b69bc396
...
...
@@ -852,7 +852,7 @@ static int tg3_bmcr_reset(struct tg3 *tp)
}
udelay
(
10
);
}
if
(
limit
<
=
0
)
if
(
limit
<
0
)
return
-
EBUSY
;
return
0
;
...
...
@@ -1603,7 +1603,7 @@ static int tg3_wait_macro_done(struct tg3 *tp)
break
;
}
}
if
(
limit
<
=
0
)
if
(
limit
<
0
)
return
-
EBUSY
;
return
0
;
...
...
drivers/net/wireless/ath5k/base.c
浏览文件 @
b69bc396
...
...
@@ -1098,6 +1098,42 @@ ath5k_hw_to_driver_rix(struct ath5k_softc *sc, int hw_rix)
* Buffers setup *
\***************/
static
struct
sk_buff
*
ath5k_rx_skb_alloc
(
struct
ath5k_softc
*
sc
,
dma_addr_t
*
skb_addr
)
{
struct
sk_buff
*
skb
;
unsigned
int
off
;
/*
* Allocate buffer with headroom_needed space for the
* fake physical layer header at the start.
*/
skb
=
dev_alloc_skb
(
sc
->
rxbufsize
+
sc
->
cachelsz
-
1
);
if
(
!
skb
)
{
ATH5K_ERR
(
sc
,
"can't alloc skbuff of size %u
\n
"
,
sc
->
rxbufsize
+
sc
->
cachelsz
-
1
);
return
NULL
;
}
/*
* Cache-line-align. This is important (for the
* 5210 at least) as not doing so causes bogus data
* in rx'd frames.
*/
off
=
((
unsigned
long
)
skb
->
data
)
%
sc
->
cachelsz
;
if
(
off
!=
0
)
skb_reserve
(
skb
,
sc
->
cachelsz
-
off
);
*
skb_addr
=
pci_map_single
(
sc
->
pdev
,
skb
->
data
,
sc
->
rxbufsize
,
PCI_DMA_FROMDEVICE
);
if
(
unlikely
(
pci_dma_mapping_error
(
sc
->
pdev
,
*
skb_addr
)))
{
ATH5K_ERR
(
sc
,
"%s: DMA mapping failed
\n
"
,
__func__
);
dev_kfree_skb
(
skb
);
return
NULL
;
}
return
skb
;
}
static
int
ath5k_rxbuf_setup
(
struct
ath5k_softc
*
sc
,
struct
ath5k_buf
*
bf
)
{
...
...
@@ -1105,37 +1141,11 @@ ath5k_rxbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf)
struct
sk_buff
*
skb
=
bf
->
skb
;
struct
ath5k_desc
*
ds
;
if
(
likely
(
skb
==
NULL
))
{
unsigned
int
off
;
/*
* Allocate buffer with headroom_needed space for the
* fake physical layer header at the start.
*/
skb
=
dev_alloc_skb
(
sc
->
rxbufsize
+
sc
->
cachelsz
-
1
);
if
(
unlikely
(
skb
==
NULL
))
{
ATH5K_ERR
(
sc
,
"can't alloc skbuff of size %u
\n
"
,
sc
->
rxbufsize
+
sc
->
cachelsz
-
1
);
if
(
!
skb
)
{
skb
=
ath5k_rx_skb_alloc
(
sc
,
&
bf
->
skbaddr
);
if
(
!
skb
)
return
-
ENOMEM
;
}
/*
* Cache-line-align. This is important (for the
* 5210 at least) as not doing so causes bogus data
* in rx'd frames.
*/
off
=
((
unsigned
long
)
skb
->
data
)
%
sc
->
cachelsz
;
if
(
off
!=
0
)
skb_reserve
(
skb
,
sc
->
cachelsz
-
off
);
bf
->
skb
=
skb
;
bf
->
skbaddr
=
pci_map_single
(
sc
->
pdev
,
skb
->
data
,
sc
->
rxbufsize
,
PCI_DMA_FROMDEVICE
);
if
(
unlikely
(
pci_dma_mapping_error
(
sc
->
pdev
,
bf
->
skbaddr
)))
{
ATH5K_ERR
(
sc
,
"%s: DMA mapping failed
\n
"
,
__func__
);
dev_kfree_skb
(
skb
);
bf
->
skb
=
NULL
;
return
-
ENOMEM
;
}
}
/*
...
...
@@ -1664,7 +1674,8 @@ ath5k_tasklet_rx(unsigned long data)
{
struct
ieee80211_rx_status
rxs
=
{};
struct
ath5k_rx_status
rs
=
{};
struct
sk_buff
*
skb
;
struct
sk_buff
*
skb
,
*
next_skb
;
dma_addr_t
next_skb_addr
;
struct
ath5k_softc
*
sc
=
(
void
*
)
data
;
struct
ath5k_buf
*
bf
,
*
bf_last
;
struct
ath5k_desc
*
ds
;
...
...
@@ -1749,10 +1760,17 @@ ath5k_tasklet_rx(unsigned long data)
goto
next
;
}
accept:
next_skb
=
ath5k_rx_skb_alloc
(
sc
,
&
next_skb_addr
);
/*
* If we can't replace bf->skb with a new skb under memory
* pressure, just skip this packet
*/
if
(
!
next_skb
)
goto
next
;
pci_unmap_single
(
sc
->
pdev
,
bf
->
skbaddr
,
sc
->
rxbufsize
,
PCI_DMA_FROMDEVICE
);
bf
->
skb
=
NULL
;
skb_put
(
skb
,
rs
.
rs_datalen
);
/* The MAC header is padded to have 32-bit boundary if the
...
...
@@ -1825,6 +1843,9 @@ ath5k_tasklet_rx(unsigned long data)
ath5k_check_ibss_tsf
(
sc
,
skb
,
&
rxs
);
__ieee80211_rx
(
sc
->
hw
,
skb
,
&
rxs
);
bf
->
skb
=
next_skb
;
bf
->
skbaddr
=
next_skb_addr
;
next:
list_move_tail
(
&
bf
->
list
,
&
sc
->
rxbuf
);
}
while
(
ath5k_rxbuf_setup
(
sc
,
bf
)
==
0
);
...
...
drivers/net/wireless/iwlwifi/iwl-agn.c
浏览文件 @
b69bc396
...
...
@@ -4042,7 +4042,19 @@ static int iwl_pci_suspend(struct pci_dev *pdev, pm_message_t state)
priv
->
is_open
=
1
;
}
pci_save_state
(
pdev
);
/* pci driver assumes state will be saved in this function.
* pci state is saved and device disabled when interface is
* stopped, so at this time pci device will always be disabled -
* whether interface was started or not. saving pci state now will
* cause saved state be that of a disabled device, which will cause
* problems during resume in that we will end up with a disabled device.
*
* indicate that the current saved state (from when interface was
* stopped) is valid. if interface was never up at time of suspend
* then the saved state will still be valid as it was saved during
* .probe. */
pdev
->
state_saved
=
true
;
pci_set_power_state
(
pdev
,
PCI_D3hot
);
return
0
;
...
...
@@ -4053,7 +4065,6 @@ static int iwl_pci_resume(struct pci_dev *pdev)
struct
iwl_priv
*
priv
=
pci_get_drvdata
(
pdev
);
pci_set_power_state
(
pdev
,
PCI_D0
);
pci_restore_state
(
pdev
);
if
(
priv
->
is_open
)
iwl_mac_start
(
priv
->
hw
);
...
...
drivers/net/wireless/iwlwifi/iwl3945-base.c
浏览文件 @
b69bc396
...
...
@@ -8143,7 +8143,19 @@ static int iwl3945_pci_suspend(struct pci_dev *pdev, pm_message_t state)
priv
->
is_open
=
1
;
}
pci_save_state
(
pdev
);
/* pci driver assumes state will be saved in this function.
* pci state is saved and device disabled when interface is
* stopped, so at this time pci device will always be disabled -
* whether interface was started or not. saving pci state now will
* cause saved state be that of a disabled device, which will cause
* problems during resume in that we will end up with a disabled device.
*
* indicate that the current saved state (from when interface was
* stopped) is valid. if interface was never up at time of suspend
* then the saved state will still be valid as it was saved during
* .probe. */
pdev
->
state_saved
=
true
;
pci_set_power_state
(
pdev
,
PCI_D3hot
);
return
0
;
...
...
@@ -8154,7 +8166,6 @@ static int iwl3945_pci_resume(struct pci_dev *pdev)
struct
iwl3945_priv
*
priv
=
pci_get_drvdata
(
pdev
);
pci_set_power_state
(
pdev
,
PCI_D0
);
pci_restore_state
(
pdev
);
if
(
priv
->
is_open
)
iwl3945_mac_start
(
priv
->
hw
);
...
...
drivers/net/wireless/zd1211rw/zd_rf.c
浏览文件 @
b69bc396
...
...
@@ -86,6 +86,7 @@ int zd_rf_init_hw(struct zd_rf *rf, u8 type)
case
AL7230B_RF
:
r
=
zd_rf_init_al7230b
(
rf
);
break
;
case
MAXIM_NEW_RF
:
case
UW2453_RF
:
r
=
zd_rf_init_uw2453
(
rf
);
break
;
...
...
drivers/net/wireless/zd1211rw/zd_usb.c
浏览文件 @
b69bc396
...
...
@@ -37,6 +37,7 @@
static
struct
usb_device_id
usb_ids
[]
=
{
/* ZD1211 */
{
USB_DEVICE
(
0x0ace
,
0x1211
),
.
driver_info
=
DEVICE_ZD1211
},
{
USB_DEVICE
(
0x0ace
,
0xa211
),
.
driver_info
=
DEVICE_ZD1211
},
{
USB_DEVICE
(
0x07b8
,
0x6001
),
.
driver_info
=
DEVICE_ZD1211
},
{
USB_DEVICE
(
0x126f
,
0xa006
),
.
driver_info
=
DEVICE_ZD1211
},
{
USB_DEVICE
(
0x6891
,
0xa727
),
.
driver_info
=
DEVICE_ZD1211
},
...
...
include/linux/pkt_sched.h
浏览文件 @
b69bc396
...
...
@@ -515,7 +515,7 @@ enum
struct
tc_drr_stats
{
u32
deficit
;
__
u32
deficit
;
};
#endif
include/linux/soundcard.h
浏览文件 @
b69bc396
...
...
@@ -1045,50 +1045,36 @@ typedef struct mixer_vol_table {
*/
#define LOCL_STARTAUDIO 1
#if
(!defined(__KERNEL__) && !defined(KERNEL) && !defined(INKERNEL) && !defined(_KERNEL)) || defined(USE_SEQ_MACROS)
#if
!defined(__KERNEL__) || defined(USE_SEQ_MACROS)
/*
* Some convenience macros to simplify programming of the
* /dev/sequencer interface
*
* These macros define the API which should be used when possible.
* This is a legacy interface for applications written against
* the OSSlib-3.8 style interface. It is no longer possible
* to actually link against OSSlib with this header, but we
* still provide these macros for programs using them.
*
* If you want to use OSSlib, it is recommended that you get
* the GPL version of OSS-4.x and build against that version
* of the header.
*
* We redefine the extern keyword so that make headers_check
* does not complain about SEQ_USE_EXTBUF.
*/
#define SEQ_DECLAREBUF() SEQ_USE_EXTBUF()
void
seqbuf_dump
(
void
);
/* This function must be provided by programs */
extern
int
OSS_init
(
int
seqfd
,
int
buflen
);
extern
void
OSS_seqbuf_dump
(
int
fd
,
unsigned
char
*
buf
,
int
buflen
);
extern
void
OSS_seq_advbuf
(
int
len
,
int
fd
,
unsigned
char
*
buf
,
int
buflen
);
extern
void
OSS_seq_needbuf
(
int
len
,
int
fd
,
unsigned
char
*
buf
,
int
buflen
);
extern
void
OSS_patch_caching
(
int
dev
,
int
chn
,
int
patch
,
int
fd
,
unsigned
char
*
buf
,
int
buflen
);
extern
void
OSS_drum_caching
(
int
dev
,
int
chn
,
int
patch
,
int
fd
,
unsigned
char
*
buf
,
int
buflen
);
extern
void
OSS_write_patch
(
int
fd
,
unsigned
char
*
buf
,
int
len
);
extern
int
OSS_write_patch2
(
int
fd
,
unsigned
char
*
buf
,
int
len
);
#define SEQ_PM_DEFINES int __foo_bar___
#ifdef OSSLIB
# define SEQ_USE_EXTBUF() \
extern unsigned char *_seqbuf; \
extern int _seqbuflen;extern int _seqbufptr
# define SEQ_DEFINEBUF(len) SEQ_USE_EXTBUF();static int _requested_seqbuflen=len
# define _SEQ_ADVBUF(len) OSS_seq_advbuf(len, seqfd, _seqbuf, _seqbuflen)
# define _SEQ_NEEDBUF(len) OSS_seq_needbuf(len, seqfd, _seqbuf, _seqbuflen)
# define SEQ_DUMPBUF() OSS_seqbuf_dump(seqfd, _seqbuf, _seqbuflen)
# define SEQ_LOAD_GMINSTR(dev, instr) \
OSS_patch_caching(dev, -1, instr, seqfd, _seqbuf, _seqbuflen)
# define SEQ_LOAD_GMDRUM(dev, drum) \
OSS_drum_caching(dev, -1, drum, seqfd, _seqbuf, _seqbuflen)
#else
/* !OSSLIB */
# define SEQ_LOAD_GMINSTR(dev, instr)
# define SEQ_LOAD_GMDRUM(dev, drum)
# define SEQ_USE_EXTBUF() \
extern unsigned char _seqbuf[]; \
extern int _seqbuflen;extern int _seqbufptr
#define SEQ_LOAD_GMINSTR(dev, instr)
#define SEQ_LOAD_GMDRUM(dev, drum)
#define _SEQ_EXTERN extern
#define SEQ_USE_EXTBUF() \
_SEQ_EXTERN unsigned char _seqbuf[]; \
_SEQ_EXTERN int _seqbuflen; _SEQ_EXTERN int _seqbufptr
#ifndef USE_SIMPLE_MACROS
/* Sample seqbuf_dump() implementation:
...
...
@@ -1131,7 +1117,6 @@ extern int OSS_write_patch2(int fd, unsigned char *buf, int len);
*/
#define _SEQ_NEEDBUF(len)
/* empty */
#endif
#endif
/* !OSSLIB */
#define SEQ_VOLUME_MODE(dev, mode) {_SEQ_NEEDBUF(8);\
_seqbuf[_seqbufptr] = SEQ_EXTENDED;\
...
...
@@ -1215,14 +1200,8 @@ extern int OSS_write_patch2(int fd, unsigned char *buf, int len);
_CHN_COMMON(dev, MIDI_CHN_PRESSURE, chn, pressure, 0, 0)
#define SEQ_SET_PATCH SEQ_PGM_CHANGE
#ifdef OSSLIB
# define SEQ_PGM_CHANGE(dev, chn, patch) \
{OSS_patch_caching(dev, chn, patch, seqfd, _seqbuf, _seqbuflen); \
_CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0);}
#else
# define SEQ_PGM_CHANGE(dev, chn, patch) \
#define SEQ_PGM_CHANGE(dev, chn, patch) \
_CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0)
#endif
#define SEQ_CONTROL(dev, chn, controller, value) \
_CHN_COMMON(dev, MIDI_CTL_CHANGE, chn, controller, 0, value)
...
...
@@ -1300,19 +1279,12 @@ extern int OSS_write_patch2(int fd, unsigned char *buf, int len);
/*
* Patch loading.
*/
#ifdef OSSLIB
# define SEQ_WRPATCH(patchx, len) \
OSS_write_patch(seqfd, (char*)(patchx), len)
# define SEQ_WRPATCH2(patchx, len) \
OSS_write_patch2(seqfd, (char*)(patchx), len)
#else
# define SEQ_WRPATCH(patchx, len) \
#define SEQ_WRPATCH(patchx, len) \
{if (_seqbufptr) SEQ_DUMPBUF();\
if (write(seqfd, (char*)(patchx), len)==-1) \
perror("Write patch: /dev/sequencer");}
#
define SEQ_WRPATCH2(patchx, len) \
#define SEQ_WRPATCH2(patchx, len) \
(SEQ_DUMPBUF(), write(seqfd, (char*)(patchx), len))
#endif
#endif
#endif
include/net/sock.h
浏览文件 @
b69bc396
...
...
@@ -1308,7 +1308,7 @@ static inline int sock_writeable(const struct sock *sk)
static
inline
gfp_t
gfp_any
(
void
)
{
return
in_
atomic
()
?
GFP_ATOMIC
:
GFP_KERNEL
;
return
in_
softirq
()
?
GFP_ATOMIC
:
GFP_KERNEL
;
}
static
inline
long
sock_rcvtimeo
(
const
struct
sock
*
sk
,
int
noblock
)
...
...
kernel/user.c
浏览文件 @
b69bc396
...
...
@@ -72,6 +72,7 @@ static void uid_hash_insert(struct user_struct *up, struct hlist_head *hashent)
static
void
uid_hash_remove
(
struct
user_struct
*
up
)
{
hlist_del_init
(
&
up
->
uidhash_node
);
put_user_ns
(
up
->
user_ns
);
}
static
struct
user_struct
*
uid_hash_find
(
uid_t
uid
,
struct
hlist_head
*
hashent
)
...
...
@@ -334,7 +335,6 @@ static void free_user(struct user_struct *up, unsigned long flags)
atomic_inc
(
&
up
->
__count
);
spin_unlock_irqrestore
(
&
uidhash_lock
,
flags
);
put_user_ns
(
up
->
user_ns
);
INIT_WORK
(
&
up
->
work
,
remove_user_sysfs_dir
);
schedule_work
(
&
up
->
work
);
}
...
...
@@ -357,7 +357,6 @@ static void free_user(struct user_struct *up, unsigned long flags)
sched_destroy_user
(
up
);
key_put
(
up
->
uid_keyring
);
key_put
(
up
->
session_keyring
);
put_user_ns
(
up
->
user_ns
);
kmem_cache_free
(
uid_cachep
,
up
);
}
...
...
net/core/sock.c
浏览文件 @
b69bc396
...
...
@@ -696,6 +696,8 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
if
(
len
<
0
)
return
-
EINVAL
;
v
.
val
=
0
;
switch
(
optname
)
{
case
SO_DEBUG
:
v
.
val
=
sock_flag
(
sk
,
SOCK_DBG
);
...
...
net/mac80211/tx.c
浏览文件 @
b69bc396
...
...
@@ -1343,6 +1343,8 @@ int ieee80211_master_start_xmit(struct sk_buff *skb, struct net_device *dev)
list
)
{
if
(
!
netif_running
(
sdata
->
dev
))
continue
;
if
(
sdata
->
vif
.
type
!=
NL80211_IFTYPE_AP
)
continue
;
if
(
compare_ether_addr
(
sdata
->
dev
->
dev_addr
,
hdr
->
addr2
))
{
dev_hold
(
sdata
->
dev
);
...
...
net/phonet/pep-gprs.c
浏览文件 @
b69bc396
...
...
@@ -207,7 +207,6 @@ static int gprs_xmit(struct sk_buff *skb, struct net_device *dev)
dev
->
name
,
err
);
dev
->
stats
.
tx_aborted_errors
++
;
dev
->
stats
.
tx_errors
++
;
dev_kfree_skb
(
skb
);
}
else
{
dev
->
stats
.
tx_packets
++
;
dev
->
stats
.
tx_bytes
+=
len
;
...
...
net/phonet/pep.c
浏览文件 @
b69bc396
...
...
@@ -553,7 +553,7 @@ static int pep_do_rcv(struct sock *sk, struct sk_buff *skb)
{
struct
pep_sock
*
pn
=
pep_sk
(
sk
);
struct
sock
*
sknode
;
struct
pnpipehdr
*
hdr
=
pnp_hdr
(
skb
)
;
struct
pnpipehdr
*
hdr
;
struct
sockaddr_pn
dst
;
int
err
=
NET_RX_SUCCESS
;
u8
pipe_handle
;
...
...
net/wimax/id-table.c
浏览文件 @
b69bc396
...
...
@@ -94,12 +94,13 @@ struct wimax_dev *wimax_dev_get_by_genl_info(
list_for_each_entry
(
wimax_dev
,
&
wimax_id_table
,
id_table_node
)
{
if
(
wimax_dev
->
net_dev
->
ifindex
==
ifindex
)
{
dev_hold
(
wimax_dev
->
net_dev
);
break
;
goto
found
;
}
}
if
(
wimax_dev
==
NULL
)
d_printf
(
1
,
NULL
,
"wimax: no devices found with ifindex %d
\n
"
,
ifindex
);
wimax_dev
=
NULL
;
d_printf
(
1
,
NULL
,
"wimax: no devices found with ifindex %d
\n
"
,
ifindex
);
found:
spin_unlock
(
&
wimax_id_table_lock
);
d_fnend
(
3
,
NULL
,
"(info %p ifindex %d) = %p
\n
"
,
info
,
ifindex
,
wimax_dev
);
...
...
sound/drivers/mtpav.c
浏览文件 @
b69bc396
...
...
@@ -706,7 +706,6 @@ static int __devinit snd_mtpav_probe(struct platform_device *dev)
mtp_card
->
card
=
card
;
mtp_card
->
irq
=
-
1
;
mtp_card
->
share_irq
=
0
;
mtp_card
->
inmidiport
=
0xffffffff
;
mtp_card
->
inmidistate
=
0
;
mtp_card
->
outmidihwport
=
0xffffffff
;
init_timer
(
&
mtp_card
->
timer
);
...
...
@@ -719,6 +718,8 @@ static int __devinit snd_mtpav_probe(struct platform_device *dev)
if
(
err
<
0
)
goto
__error
;
mtp_card
->
inmidiport
=
mtp_card
->
num_ports
+
MTPAV_PIDX_BROADCAST
;
err
=
snd_mtpav_get_ISA
(
mtp_card
);
if
(
err
<
0
)
goto
__error
;
...
...
sound/pci/hda/hda_codec.c
浏览文件 @
b69bc396
...
...
@@ -3088,6 +3088,16 @@ int snd_hda_multi_out_dig_prepare(struct hda_codec *codec,
}
EXPORT_SYMBOL_HDA
(
snd_hda_multi_out_dig_prepare
);
int
snd_hda_multi_out_dig_cleanup
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
)
{
mutex_lock
(
&
codec
->
spdif_mutex
);
cleanup_dig_out_stream
(
codec
,
mout
->
dig_out_nid
);
mutex_unlock
(
&
codec
->
spdif_mutex
);
return
0
;
}
EXPORT_SYMBOL_HDA
(
snd_hda_multi_out_dig_cleanup
);
/*
* release the digital out
*/
...
...
sound/pci/hda/hda_hwdep.c
浏览文件 @
b69bc396
...
...
@@ -175,7 +175,7 @@ static int reconfig_codec(struct hda_codec *codec)
err
=
snd_hda_codec_build_controls
(
codec
);
if
(
err
<
0
)
return
err
;
return
0
;
return
snd_card_register
(
codec
->
bus
->
card
)
;
}
/*
...
...
sound/pci/hda/hda_local.h
浏览文件 @
b69bc396
...
...
@@ -251,6 +251,8 @@ int snd_hda_multi_out_dig_prepare(struct hda_codec *codec,
unsigned
int
stream_tag
,
unsigned
int
format
,
struct
snd_pcm_substream
*
substream
);
int
snd_hda_multi_out_dig_cleanup
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
);
int
snd_hda_multi_out_analog_open
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
,
struct
snd_pcm_substream
*
substream
,
...
...
sound/pci/hda/patch_analog.c
浏览文件 @
b69bc396
...
...
@@ -275,6 +275,14 @@ static int ad198x_dig_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
format
,
substream
);
}
static
int
ad198x_dig_playback_pcm_cleanup
(
struct
hda_pcm_stream
*
hinfo
,
struct
hda_codec
*
codec
,
struct
snd_pcm_substream
*
substream
)
{
struct
ad198x_spec
*
spec
=
codec
->
spec
;
return
snd_hda_multi_out_dig_cleanup
(
codec
,
&
spec
->
multiout
);
}
/*
* Analog capture
*/
...
...
@@ -333,7 +341,8 @@ static struct hda_pcm_stream ad198x_pcm_digital_playback = {
.
ops
=
{
.
open
=
ad198x_dig_playback_pcm_open
,
.
close
=
ad198x_dig_playback_pcm_close
,
.
prepare
=
ad198x_dig_playback_pcm_prepare
.
prepare
=
ad198x_dig_playback_pcm_prepare
,
.
cleanup
=
ad198x_dig_playback_pcm_cleanup
},
};
...
...
@@ -1885,8 +1894,8 @@ static hda_nid_t ad1988_capsrc_nids[3] = {
#define AD1988_SPDIF_OUT_HDMI 0x0b
#define AD1988_SPDIF_IN 0x07
static
hda_nid_t
ad1989b_slave_dig_outs
[
2
]
=
{
AD1988_SPDIF_OUT
,
AD1988_SPDIF_OUT_HDMI
static
hda_nid_t
ad1989b_slave_dig_outs
[]
=
{
AD1988_SPDIF_OUT
,
AD1988_SPDIF_OUT_HDMI
,
0
};
static
struct
hda_input_mux
ad1988_6stack_capture_source
=
{
...
...
sound/pci/hda/patch_intelhdmi.c
浏览文件 @
b69bc396
...
...
@@ -49,11 +49,6 @@ static struct hda_verb pinout_enable_verb[] = {
{}
/* terminator */
};
static
struct
hda_verb
pinout_disable_verb
[]
=
{
{
PIN_NID
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
0x00
},
{}
};
static
struct
hda_verb
unsolicited_response_verb
[]
=
{
{
PIN_NID
,
AC_VERB_SET_UNSOLICITED_ENABLE
,
AC_USRSP_EN
|
INTEL_HDMI_EVENT_TAG
},
...
...
@@ -248,10 +243,6 @@ static void hdmi_write_dip_byte(struct hda_codec *codec, hda_nid_t nid,
static
void
hdmi_enable_output
(
struct
hda_codec
*
codec
)
{
/* Enable Audio InfoFrame Transmission */
hdmi_set_dip_index
(
codec
,
PIN_NID
,
0x0
,
0x0
);
snd_hda_codec_write
(
codec
,
PIN_NID
,
0
,
AC_VERB_SET_HDMI_DIP_XMIT
,
AC_DIPXMIT_BEST
);
/* Unmute */
if
(
get_wcaps
(
codec
,
PIN_NID
)
&
AC_WCAP_OUT_AMP
)
snd_hda_codec_write
(
codec
,
PIN_NID
,
0
,
...
...
@@ -260,17 +251,24 @@ static void hdmi_enable_output(struct hda_codec *codec)
snd_hda_sequence_write
(
codec
,
pinout_enable_verb
);
}
static
void
hdmi_disable_output
(
struct
hda_codec
*
codec
)
/*
* Enable Audio InfoFrame Transmission
*/
static
void
hdmi_start_infoframe_trans
(
struct
hda_codec
*
codec
)
{
snd_hda_sequence_write
(
codec
,
pinout_disable_verb
);
if
(
get_wcaps
(
codec
,
PIN_NID
)
&
AC_WCAP_OUT_AMP
)
snd_hda_codec_write
(
codec
,
PIN_NID
,
0
,
AC_VERB_SET_AMP_GAIN_MUTE
,
AMP_OUT_MUTE
);
hdmi_set_dip_index
(
codec
,
PIN_NID
,
0x0
,
0x0
);
snd_hda_codec_write
(
codec
,
PIN_NID
,
0
,
AC_VERB_SET_HDMI_DIP_XMIT
,
AC_DIPXMIT_BEST
);
}
/*
* FIXME: noises may arise when playing music after reloading the
* kernel module, until the next X restart or monitor repower.
*/
/*
* Disable Audio InfoFrame Transmission
*/
static
void
hdmi_stop_infoframe_trans
(
struct
hda_codec
*
codec
)
{
hdmi_set_dip_index
(
codec
,
PIN_NID
,
0x0
,
0x0
);
snd_hda_codec_write
(
codec
,
PIN_NID
,
0
,
AC_VERB_SET_HDMI_DIP_XMIT
,
AC_DIPXMIT_DISABLE
);
}
static
int
hdmi_get_channel_count
(
struct
hda_codec
*
codec
)
...
...
@@ -368,11 +366,16 @@ static void hdmi_fill_audio_infoframe(struct hda_codec *codec,
struct
hdmi_audio_infoframe
*
ai
)
{
u8
*
params
=
(
u8
*
)
ai
;
u8
sum
=
0
;
int
i
;
hdmi_debug_dip_size
(
codec
);
hdmi_clear_dip_buffers
(
codec
);
/* be paranoid */
for
(
i
=
0
;
i
<
sizeof
(
ai
);
i
++
)
sum
+=
params
[
i
];
ai
->
checksum
=
-
sum
;
hdmi_set_dip_index
(
codec
,
PIN_NID
,
0x0
,
0x0
);
for
(
i
=
0
;
i
<
sizeof
(
ai
);
i
++
)
hdmi_write_dip_byte
(
codec
,
PIN_NID
,
params
[
i
]);
...
...
@@ -419,13 +422,17 @@ static int hdmi_setup_channel_allocation(struct hda_codec *codec,
/*
* CA defaults to 0 for basic stereo audio
*/
if
(
!
eld
->
eld_ver
)
return
0
;
if
(
!
eld
->
spk_alloc
)
return
0
;
if
(
channels
<=
2
)
return
0
;
/*
* HDMI sink's ELD info cannot always be retrieved for now, e.g.
* in console or for audio devices. Assume the highest speakers
* configuration, to _not_ prohibit multi-channel audio playback.
*/
if
(
!
eld
->
spk_alloc
)
eld
->
spk_alloc
=
0xffff
;
/*
* expand ELD's speaker allocation mask
*
...
...
@@ -485,6 +492,7 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec,
hdmi_setup_channel_mapping
(
codec
,
&
ai
);
hdmi_fill_audio_infoframe
(
codec
,
&
ai
);
hdmi_start_infoframe_trans
(
codec
);
}
...
...
@@ -562,7 +570,7 @@ static int intel_hdmi_playback_pcm_close(struct hda_pcm_stream *hinfo,
{
struct
intel_hdmi_spec
*
spec
=
codec
->
spec
;
hdmi_
disable_output
(
codec
);
hdmi_
stop_infoframe_trans
(
codec
);
return
snd_hda_multi_out_dig_close
(
codec
,
&
spec
->
multiout
);
}
...
...
@@ -582,8 +590,6 @@ static int intel_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
hdmi_setup_audio_infoframe
(
codec
,
substream
);
hdmi_enable_output
(
codec
);
return
0
;
}
...
...
@@ -628,8 +634,7 @@ static int intel_hdmi_build_controls(struct hda_codec *codec)
static
int
intel_hdmi_init
(
struct
hda_codec
*
codec
)
{
/* disable audio output as early as possible */
hdmi_disable_output
(
codec
);
hdmi_enable_output
(
codec
);
snd_hda_sequence_write
(
codec
,
unsolicited_response_verb
);
...
...
@@ -679,6 +684,7 @@ static struct hda_codec_preset snd_hda_preset_intelhdmi[] = {
{
.
id
=
0x80862801
,
.
name
=
"G45 DEVBLC"
,
.
patch
=
patch_intel_hdmi
},
{
.
id
=
0x80862802
,
.
name
=
"G45 DEVCTG"
,
.
patch
=
patch_intel_hdmi
},
{
.
id
=
0x80862803
,
.
name
=
"G45 DEVELK"
,
.
patch
=
patch_intel_hdmi
},
{
.
id
=
0x80862804
,
.
name
=
"G45 DEVIBX"
,
.
patch
=
patch_intel_hdmi
},
{
.
id
=
0x10951392
,
.
name
=
"SiI1392 HDMI"
,
.
patch
=
patch_intel_hdmi
},
{}
/* terminator */
};
...
...
@@ -687,6 +693,7 @@ MODULE_ALIAS("snd-hda-codec-id:808629fb");
MODULE_ALIAS
(
"snd-hda-codec-id:80862801"
);
MODULE_ALIAS
(
"snd-hda-codec-id:80862802"
);
MODULE_ALIAS
(
"snd-hda-codec-id:80862803"
);
MODULE_ALIAS
(
"snd-hda-codec-id:80862804"
);
MODULE_ALIAS
(
"snd-hda-codec-id:10951392"
);
MODULE_LICENSE
(
"GPL"
);
...
...
sound/pci/hda/patch_realtek.c
浏览文件 @
b69bc396
...
...
@@ -8478,6 +8478,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = {
SND_PCI_QUIRK(0x103c, 0x2a66, "HP Acacia", ALC888_3ST_HP),
SND_PCI_QUIRK(0x1043, 0x1873, "Asus M90V", ALC888_ASUS_M90V),
SND_PCI_QUIRK(0x1043, 0x8249, "Asus M2A-VM HDMI", ALC883_3ST_6ch_DIG),
SND_PCI_QUIRK(0x1043, 0x8284, "Asus Z37E", ALC883_6ST_DIG),
SND_PCI_QUIRK(0x1043, 0x82fe, "Asus P5Q-EM HDMI", ALC1200_ASUS_P5Q),
SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_ASUS_EEE1601),
SND_PCI_QUIRK(0x105b, 0x0ce8, "Foxconn P35AX-S", ALC883_6ST_DIG),
...
...
sound/pci/hda/patch_sigmatel.c
浏览文件 @
b69bc396
...
...
@@ -1799,7 +1799,7 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
SND_PCI_QUIRK
(
PCI_VENDOR_ID_HP
,
0x30f2
,
"HP dv5"
,
STAC_HP_M4
),
SND_PCI_QUIRK
(
PCI_VENDOR_ID_HP
,
0x30f4
,
"HP dv7"
,
STAC_HP_
M4
),
"HP dv7"
,
STAC_HP_
DV5
),
SND_PCI_QUIRK
(
PCI_VENDOR_ID_HP
,
0x30f7
,
"HP dv4"
,
STAC_HP_DV5
),
SND_PCI_QUIRK
(
PCI_VENDOR_ID_HP
,
0x30fc
,
...
...
@@ -2442,6 +2442,14 @@ static int stac92xx_dig_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
stream_tag
,
format
,
substream
);
}
static
int
stac92xx_dig_playback_pcm_cleanup
(
struct
hda_pcm_stream
*
hinfo
,
struct
hda_codec
*
codec
,
struct
snd_pcm_substream
*
substream
)
{
struct
sigmatel_spec
*
spec
=
codec
->
spec
;
return
snd_hda_multi_out_dig_cleanup
(
codec
,
&
spec
->
multiout
);
}
/*
* Analog capture callbacks
...
...
@@ -2486,7 +2494,8 @@ static struct hda_pcm_stream stac92xx_pcm_digital_playback = {
.
ops
=
{
.
open
=
stac92xx_dig_playback_pcm_open
,
.
close
=
stac92xx_dig_playback_pcm_close
,
.
prepare
=
stac92xx_dig_playback_pcm_prepare
.
prepare
=
stac92xx_dig_playback_pcm_prepare
,
.
cleanup
=
stac92xx_dig_playback_pcm_cleanup
},
};
...
...
sound/soc/codecs/tlv320aic3x.c
浏览文件 @
b69bc396
...
...
@@ -165,10 +165,13 @@ static int snd_soc_dapm_put_volsw_aic3x(struct snd_kcontrol *kcontrol,
struct
snd_ctl_elem_value
*
ucontrol
)
{
struct
snd_soc_dapm_widget
*
widget
=
snd_kcontrol_chip
(
kcontrol
);
int
reg
=
kcontrol
->
private_value
&
0xff
;
int
shift
=
(
kcontrol
->
private_value
>>
8
)
&
0x0f
;
int
mask
=
(
kcontrol
->
private_value
>>
16
)
&
0xff
;
int
invert
=
(
kcontrol
->
private_value
>>
24
)
&
0x01
;
struct
soc_mixer_control
*
mc
=
(
struct
soc_mixer_control
*
)
kcontrol
->
private_value
;
unsigned
int
reg
=
mc
->
reg
;
unsigned
int
shift
=
mc
->
shift
;
int
max
=
mc
->
max
;
unsigned
int
mask
=
(
1
<<
fls
(
max
))
-
1
;
unsigned
int
invert
=
mc
->
invert
;
unsigned
short
val
,
val_mask
;
int
ret
;
struct
snd_soc_dapm_path
*
path
;
...
...
sound/soc/codecs/wm8990.c
浏览文件 @
b69bc396
...
...
@@ -176,7 +176,9 @@ static int wm899x_outpga_put_volsw_vu(struct snd_kcontrol *kcontrol,
struct
snd_ctl_elem_value
*
ucontrol
)
{
struct
snd_soc_codec
*
codec
=
snd_kcontrol_chip
(
kcontrol
);
int
reg
=
kcontrol
->
private_value
&
0xff
;
struct
soc_mixer_control
*
mc
=
(
struct
soc_mixer_control
*
)
kcontrol
->
private_value
;
int
reg
=
mc
->
reg
;
int
ret
;
u16
val
;
...
...
sound/soc/omap/sdp3430.c
浏览文件 @
b69bc396
...
...
@@ -91,7 +91,7 @@ static struct snd_soc_dai_link sdp3430_dai = {
};
/* Audio machine driver */
static
struct
snd_soc_
machine
snd_soc_machine
_sdp3430
=
{
static
struct
snd_soc_
card
snd_soc
_sdp3430
=
{
.
name
=
"SDP3430"
,
.
platform
=
&
omap_soc_platform
,
.
dai_link
=
&
sdp3430_dai
,
...
...
@@ -100,7 +100,7 @@ static struct snd_soc_machine snd_soc_machine_sdp3430 = {
/* Audio subsystem */
static
struct
snd_soc_device
sdp3430_snd_devdata
=
{
.
machine
=
&
snd_soc_machine
_sdp3430
,
.
card
=
&
snd_soc
_sdp3430
,
.
codec_dev
=
&
soc_codec_dev_twl4030
,
};
...
...
sound/soc/soc-core.c
浏览文件 @
b69bc396
...
...
@@ -1385,7 +1385,10 @@ int snd_soc_init_card(struct snd_soc_device *socdev)
mutex_lock
(
&
codec
->
mutex
);
#ifdef CONFIG_SND_SOC_AC97_BUS
if
(
ac97
)
{
/* Only instantiate AC97 if not already done by the adaptor
* for the generic AC97 subsystem.
*/
if
(
ac97
&&
strcmp
(
codec
->
name
,
"AC97"
)
!=
0
)
{
ret
=
soc_ac97_dev_register
(
codec
);
if
(
ret
<
0
)
{
printk
(
KERN_ERR
"asoc: AC97 device register failed
\n
"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录