Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
742b0c90
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 3 年多
通知
13
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看板
提交
742b0c90
编写于
5月 04, 2005
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge of
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6.git/
上级
235bd614
9171078a
变更
18
隐藏空白更改
内联
并排
Showing
18 changed file
with
113 addition
and
103 deletion
+113
-103
Documentation/pci.txt
Documentation/pci.txt
+1
-0
Documentation/power/pci.txt
Documentation/power/pci.txt
+2
-33
arch/arm/mach-ixp4xx/common-pci.c
arch/arm/mach-ixp4xx/common-pci.c
+0
-10
drivers/pci/hotplug/ibmphp.h
drivers/pci/hotplug/ibmphp.h
+1
-1
drivers/pci/hotplug/ibmphp_hpc.c
drivers/pci/hotplug/ibmphp_hpc.c
+3
-3
drivers/pci/hotplug/ibmphp_pci.c
drivers/pci/hotplug/ibmphp_pci.c
+5
-2
drivers/pci/hotplug/pci_hotplug.h
drivers/pci/hotplug/pci_hotplug.h
+1
-1
drivers/pci/hotplug/pciehp_core.c
drivers/pci/hotplug/pciehp_core.c
+18
-5
drivers/pci/hotplug/pcihp_skeleton.c
drivers/pci/hotplug/pcihp_skeleton.c
+1
-1
drivers/pci/msi.c
drivers/pci/msi.c
+3
-3
drivers/pci/pci-acpi.c
drivers/pci/pci-acpi.c
+1
-1
drivers/pci/pci-driver.c
drivers/pci/pci-driver.c
+10
-1
drivers/pci/pci-sysfs.c
drivers/pci/pci-sysfs.c
+58
-24
drivers/pci/pci.c
drivers/pci/pci.c
+4
-16
drivers/pci/probe.c
drivers/pci/probe.c
+1
-0
drivers/pci/proc.c
drivers/pci/proc.c
+1
-0
drivers/pci/quirks.c
drivers/pci/quirks.c
+2
-0
include/linux/pci.h
include/linux/pci.h
+1
-2
未找到文件。
Documentation/pci.txt
浏览文件 @
742b0c90
...
...
@@ -279,6 +279,7 @@ pci_for_each_dev_reverse() Superseded by pci_find_device_reverse()
pci_for_each_bus() Superseded by pci_find_next_bus()
pci_find_device() Superseded by pci_get_device()
pci_find_subsys() Superseded by pci_get_subsys()
pci_find_slot() Superseded by pci_get_slot()
pcibios_find_class() Superseded by pci_get_class()
pci_find_class() Superseded by pci_get_class()
pci_(read|write)_*_nodev() Superseded by pci_bus_(read|write)_*()
Documentation/power/pci.txt
浏览文件 @
742b0c90
...
...
@@ -165,40 +165,9 @@ Description:
These functions are intended for use by individual drivers, and are defined in
struct pci_driver:
int (*save_state) (struct pci_dev *dev, u32 state);
int (*suspend) (struct pci_dev *dev, u32 state);
int (*suspend) (struct pci_dev *dev, pm_message_t state);
int (*resume) (struct pci_dev *dev);
int (*enable_wake) (struct pci_dev *dev, u32 state, int enable);
save_state
----------
Usage:
if (dev->driver && dev->driver->save_state)
dev->driver->save_state(dev,state);
The driver should use this callback to save device state. It should take into
account the current state of the device and the requested state in order to
avoid any unnecessary operations.
For example, a video card that supports all 4 states (D0-D3), all controller
context is preserved when entering D1, but the screen is placed into a low power
state (blanked).
The driver can also interpret this function as a notification that it may be
entering a sleep state in the near future. If it knows that the device cannot
enter the requested state, either because of lack of support for it, or because
the device is middle of some critical operation, then it should fail.
This function should not be used to set any state in the device or the driver
because the device may not actually enter the sleep state (e.g. another driver
later causes causes a global state transition to fail).
Note that in intermediate low power states, a device's I/O and memory spaces may
be disabled and may not be available in subsequent transitions to lower power
states.
int (*enable_wake) (struct pci_dev *dev, pci_power_t state, int enable);
suspend
...
...
arch/arm/mach-ixp4xx/common-pci.c
浏览文件 @
742b0c90
...
...
@@ -501,15 +501,6 @@ pci_set_dma_mask(struct pci_dev *dev, u64 mask)
return
-
EIO
;
}
int
pci_dac_set_dma_mask
(
struct
pci_dev
*
dev
,
u64
mask
)
{
if
(
mask
>=
SZ_64M
-
1
)
return
0
;
return
-
EIO
;
}
int
pci_set_consistent_dma_mask
(
struct
pci_dev
*
dev
,
u64
mask
)
{
...
...
@@ -520,7 +511,6 @@ pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
}
EXPORT_SYMBOL
(
pci_set_dma_mask
);
EXPORT_SYMBOL
(
pci_dac_set_dma_mask
);
EXPORT_SYMBOL
(
pci_set_consistent_dma_mask
);
EXPORT_SYMBOL
(
ixp4xx_pci_read
);
EXPORT_SYMBOL
(
ixp4xx_pci_write
);
...
...
drivers/pci/hotplug/ibmphp.h
浏览文件 @
742b0c90
...
...
@@ -196,7 +196,7 @@ struct ebda_hpc_bus {
/********************************************************************
* THREE TYPE OF HOT PLUG CONTROLER *
* THREE TYPE OF HOT PLUG CONTROL
L
ER *
********************************************************************/
struct
isa_ctlr_access
{
...
...
drivers/pci/hotplug/ibmphp_hpc.c
浏览文件 @
742b0c90
...
...
@@ -64,7 +64,7 @@ static int to_debug = FALSE;
#define WPG_I2C_OR 0x2000 // I2C OR operation
//----------------------------------------------------------------------------
// Command set for I2C Master Operation Setup Regis
et
r
// Command set for I2C Master Operation Setup Regis
te
r
//----------------------------------------------------------------------------
#define WPG_READATADDR_MASK 0x00010000 // read,bytes,I2C shifted,index
#define WPG_WRITEATADDR_MASK 0x40010000 // write,bytes,I2C shifted,index
...
...
@@ -835,7 +835,7 @@ static void poll_hpc (void)
if
(
ibmphp_shutdown
)
break
;
/* try to get the lock to do some kind of harware access */
/* try to get the lock to do some kind of har
d
ware access */
down
(
&
semOperations
);
switch
(
poll_state
)
{
...
...
@@ -906,7 +906,7 @@ static void poll_hpc (void)
poll_state
=
POLL_LATCH_REGISTER
;
break
;
}
/* give up the harware semaphore */
/* give up the har
d
ware semaphore */
up
(
&
semOperations
);
/* sleep for a short time just for good measure */
msleep
(
100
);
...
...
drivers/pci/hotplug/ibmphp_pci.c
浏览文件 @
742b0c90
...
...
@@ -1308,10 +1308,10 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function)
/* ????????? DO WE NEED TO WRITE ANYTHING INTO THE PCI CONFIG SPACE BACK ?????????? */
}
else
{
/* This is Memory */
start_address
&=
PCI_BASE_ADDRESS_MEM_MASK
;
if
(
start_address
&
PCI_BASE_ADDRESS_MEM_PREFETCH
)
{
/* pfmem */
debug
(
"start address of pfmem is %x
\n
"
,
start_address
);
start_address
&=
PCI_BASE_ADDRESS_MEM_MASK
;
if
(
ibmphp_find_resource
(
bus
,
start_address
,
&
pfmem
,
PFMEM
)
<
0
)
{
err
(
"cannot find corresponding PFMEM resource to remove
\n
"
);
...
...
@@ -1325,6 +1325,8 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function)
}
else
{
/* regular memory */
debug
(
"start address of mem is %x
\n
"
,
start_address
);
start_address
&=
PCI_BASE_ADDRESS_MEM_MASK
;
if
(
ibmphp_find_resource
(
bus
,
start_address
,
&
mem
,
MEM
)
<
0
)
{
err
(
"cannot find corresponding MEM resource to remove
\n
"
);
return
-
EIO
;
...
...
@@ -1422,9 +1424,9 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function)
/* ????????? DO WE NEED TO WRITE ANYTHING INTO THE PCI CONFIG SPACE BACK ?????????? */
}
else
{
/* This is Memory */
start_address
&=
PCI_BASE_ADDRESS_MEM_MASK
;
if
(
start_address
&
PCI_BASE_ADDRESS_MEM_PREFETCH
)
{
/* pfmem */
start_address
&=
PCI_BASE_ADDRESS_MEM_MASK
;
if
(
ibmphp_find_resource
(
bus
,
start_address
,
&
pfmem
,
PFMEM
)
<
0
)
{
err
(
"cannot find corresponding PFMEM resource to remove
\n
"
);
return
-
EINVAL
;
...
...
@@ -1436,6 +1438,7 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function)
}
}
else
{
/* regular memory */
start_address
&=
PCI_BASE_ADDRESS_MEM_MASK
;
if
(
ibmphp_find_resource
(
bus
,
start_address
,
&
mem
,
MEM
)
<
0
)
{
err
(
"cannot find corresponding MEM resource to remove
\n
"
);
return
-
EINVAL
;
...
...
drivers/pci/hotplug/pci_hotplug.h
浏览文件 @
742b0c90
...
...
@@ -150,7 +150,7 @@ struct hotplug_slot_info {
* @name: the name of the slot being registered. This string must
* be unique amoung slots registered on this system.
* @ops: pointer to the &struct hotplug_slot_ops to be used for this slot
* @info: pointer to the &struct hotplug_slot_info for the inital values for
* @info: pointer to the &struct hotplug_slot_info for the init
i
al values for
* this slot.
* @release: called during pci_hp_deregister to free memory allocated in a
* hotplug_slot structure.
...
...
drivers/pci/hotplug/pciehp_core.c
浏览文件 @
742b0c90
...
...
@@ -90,6 +90,22 @@ static struct hotplug_slot_ops pciehp_hotplug_slot_ops = {
.
get_cur_bus_speed
=
get_cur_bus_speed
,
};
/**
* release_slot - free up the memory used by a slot
* @hotplug_slot: slot to free
*/
static
void
release_slot
(
struct
hotplug_slot
*
hotplug_slot
)
{
struct
slot
*
slot
=
hotplug_slot
->
private
;
dbg
(
"%s - physical_slot = %s
\n
"
,
__FUNCTION__
,
hotplug_slot
->
name
);
kfree
(
slot
->
hotplug_slot
->
info
);
kfree
(
slot
->
hotplug_slot
->
name
);
kfree
(
slot
->
hotplug_slot
);
kfree
(
slot
);
}
static
int
init_slots
(
struct
controller
*
ctrl
)
{
struct
slot
*
new_slot
;
...
...
@@ -139,7 +155,8 @@ static int init_slots(struct controller *ctrl)
/* register this slot with the hotplug pci core */
new_slot
->
hotplug_slot
->
private
=
new_slot
;
make_slot_name
(
new_slot
->
hotplug_slot
->
name
,
SLOT_NAME_SIZE
,
new_slot
);
new_slot
->
hotplug_slot
->
release
=
&
release_slot
;
make_slot_name
(
new_slot
->
hotplug_slot
->
name
,
SLOT_NAME_SIZE
,
new_slot
);
new_slot
->
hotplug_slot
->
ops
=
&
pciehp_hotplug_slot_ops
;
new_slot
->
hpc_ops
->
get_power_status
(
new_slot
,
&
(
new_slot
->
hotplug_slot
->
info
->
power_status
));
...
...
@@ -188,10 +205,6 @@ static int cleanup_slots (struct controller * ctrl)
while
(
old_slot
)
{
next_slot
=
old_slot
->
next
;
pci_hp_deregister
(
old_slot
->
hotplug_slot
);
kfree
(
old_slot
->
hotplug_slot
->
info
);
kfree
(
old_slot
->
hotplug_slot
->
name
);
kfree
(
old_slot
->
hotplug_slot
);
kfree
(
old_slot
);
old_slot
=
next_slot
;
}
...
...
drivers/pci/hotplug/pcihp_skeleton.c
浏览文件 @
742b0c90
...
...
@@ -297,7 +297,7 @@ static int __init init_slots(void)
hotplug_slot
->
ops
=
&
skel_hotplug_slot_ops
;
/*
* Initilize the slot info structure with some known
* Initi
a
lize the slot info structure with some known
* good values.
*/
info
->
power_status
=
get_power_status
(
slot
);
...
...
drivers/pci/msi.c
浏览文件 @
742b0c90
...
...
@@ -522,7 +522,7 @@ void pci_scan_msi_device(struct pci_dev *dev)
* msi_capability_init - configure device's MSI capability structure
* @dev: pointer to the pci_dev data structure of MSI device function
*
* Setup the MSI capability structure of device funtion with a single
* Setup the MSI capability structure of device fun
c
tion with a single
* MSI vector, regardless of device function is capable of handling
* multiple messages. A return of zero indicates the successful setup
* of an entry zero with the new MSI vector or non-zero for otherwise.
...
...
@@ -599,7 +599,7 @@ static int msi_capability_init(struct pci_dev *dev)
* msix_capability_init - configure device's MSI-X capability
* @dev: pointer to the pci_dev data structure of MSI-X device function
*
* Setup the MSI-X capability structure of device funtion with a
* Setup the MSI-X capability structure of device fun
c
tion with a
* single MSI-X vector. A return of zero indicates the successful setup of
* requested MSI-X entries with allocated vectors or non-zero for otherwise.
**/
...
...
@@ -1074,7 +1074,7 @@ void pci_disable_msix(struct pci_dev* dev)
* msi_remove_pci_irq_vectors - reclaim MSI(X) vectors to unused state
* @dev: pointer to the pci_dev data structure of MSI(X) device function
*
* Being called during hotplug remove, from which the device func
it
on
* Being called during hotplug remove, from which the device func
ti
on
* is hot-removed. All previous assigned MSI/MSI-X vectors, if
* allocated for this device function, are reclaimed to unused state,
* which may be used later on.
...
...
drivers/pci/pci-acpi.c
浏览文件 @
742b0c90
...
...
@@ -19,7 +19,7 @@
static
u32
ctrlset_buf
[
3
]
=
{
0
,
0
,
0
};
static
u32
global_ctrlsets
=
0
;
u8
OSC_UUID
[
16
]
=
{
0x5B
,
0x4D
,
0xDB
,
0x33
,
0xF7
,
0x1F
,
0x1C
,
0x40
,
0x96
,
0x57
,
0x74
,
0x41
,
0xC0
,
0x3D
,
0xD7
,
0x66
};
static
u8
OSC_UUID
[
16
]
=
{
0x5B
,
0x4D
,
0xDB
,
0x33
,
0xF7
,
0x1F
,
0x1C
,
0x40
,
0x96
,
0x57
,
0x74
,
0x41
,
0xC0
,
0x3D
,
0xD7
,
0x66
};
static
acpi_status
acpi_query_osc
(
...
...
drivers/pci/pci-driver.c
浏览文件 @
742b0c90
...
...
@@ -318,6 +318,14 @@ static int pci_device_resume(struct device * dev)
return
0
;
}
static
void
pci_device_shutdown
(
struct
device
*
dev
)
{
struct
pci_dev
*
pci_dev
=
to_pci_dev
(
dev
);
struct
pci_driver
*
drv
=
pci_dev
->
driver
;
if
(
drv
&&
drv
->
shutdown
)
drv
->
shutdown
(
pci_dev
);
}
#define kobj_to_pci_driver(obj) container_of(obj, struct device_driver, kobj)
#define attr_to_driver_attribute(obj) container_of(obj, struct driver_attribute, attr)
...
...
@@ -373,7 +381,7 @@ pci_populate_driver_dir(struct pci_driver *drv)
*
* Adds the driver structure to the list of registered drivers.
* Returns a negative value on error, otherwise 0.
* If no error occured, the driver remains registered even if
* If no error occur
r
ed, the driver remains registered even if
* no device was claimed during registration.
*/
int
pci_register_driver
(
struct
pci_driver
*
drv
)
...
...
@@ -385,6 +393,7 @@ int pci_register_driver(struct pci_driver *drv)
drv
->
driver
.
bus
=
&
pci_bus_type
;
drv
->
driver
.
probe
=
pci_device_probe
;
drv
->
driver
.
remove
=
pci_device_remove
;
drv
->
driver
.
shutdown
=
pci_device_shutdown
,
drv
->
driver
.
owner
=
drv
->
owner
;
drv
->
driver
.
kobj
.
ktype
=
&
pci_driver_kobj_type
;
pci_init_dynids
(
&
drv
->
dynids
);
...
...
drivers/pci/pci-sysfs.c
浏览文件 @
742b0c90
...
...
@@ -91,6 +91,7 @@ pci_read_config(struct kobject *kobj, char *buf, loff_t off, size_t count)
struct
pci_dev
*
dev
=
to_pci_dev
(
container_of
(
kobj
,
struct
device
,
kobj
));
unsigned
int
size
=
64
;
loff_t
init_off
=
off
;
u8
*
data
=
(
u8
*
)
buf
;
/* Several chips lock up trying to read undefined config space */
if
(
capable
(
CAP_SYS_ADMIN
))
{
...
...
@@ -108,30 +109,47 @@ pci_read_config(struct kobject *kobj, char *buf, loff_t off, size_t count)
size
=
count
;
}
while
(
off
&
3
)
{
u
nsigned
char
val
;
if
((
off
&
1
)
&&
size
)
{
u
8
val
;
pci_read_config_byte
(
dev
,
off
,
&
val
);
buf
[
off
-
init_off
]
=
val
;
data
[
off
-
init_off
]
=
val
;
off
++
;
if
(
--
size
==
0
)
break
;
size
--
;
}
if
((
off
&
3
)
&&
size
>
2
)
{
u16
val
;
pci_read_config_word
(
dev
,
off
,
&
val
);
data
[
off
-
init_off
]
=
val
&
0xff
;
data
[
off
-
init_off
+
1
]
=
(
val
>>
8
)
&
0xff
;
off
+=
2
;
size
-=
2
;
}
while
(
size
>
3
)
{
u
nsigned
int
val
;
u
32
val
;
pci_read_config_dword
(
dev
,
off
,
&
val
);
buf
[
off
-
init_off
]
=
val
&
0xff
;
buf
[
off
-
init_off
+
1
]
=
(
val
>>
8
)
&
0xff
;
buf
[
off
-
init_off
+
2
]
=
(
val
>>
16
)
&
0xff
;
buf
[
off
-
init_off
+
3
]
=
(
val
>>
24
)
&
0xff
;
data
[
off
-
init_off
]
=
val
&
0xff
;
data
[
off
-
init_off
+
1
]
=
(
val
>>
8
)
&
0xff
;
data
[
off
-
init_off
+
2
]
=
(
val
>>
16
)
&
0xff
;
data
[
off
-
init_off
+
3
]
=
(
val
>>
24
)
&
0xff
;
off
+=
4
;
size
-=
4
;
}
while
(
size
>
0
)
{
unsigned
char
val
;
if
(
size
>=
2
)
{
u16
val
;
pci_read_config_word
(
dev
,
off
,
&
val
);
data
[
off
-
init_off
]
=
val
&
0xff
;
data
[
off
-
init_off
+
1
]
=
(
val
>>
8
)
&
0xff
;
off
+=
2
;
size
-=
2
;
}
if
(
size
>
0
)
{
u8
val
;
pci_read_config_byte
(
dev
,
off
,
&
val
);
buf
[
off
-
init_off
]
=
val
;
data
[
off
-
init_off
]
=
val
;
off
++
;
--
size
;
}
...
...
@@ -145,6 +163,7 @@ pci_write_config(struct kobject *kobj, char *buf, loff_t off, size_t count)
struct
pci_dev
*
dev
=
to_pci_dev
(
container_of
(
kobj
,
struct
device
,
kobj
));
unsigned
int
size
=
count
;
loff_t
init_off
=
off
;
u8
*
data
=
(
u8
*
)
buf
;
if
(
off
>
dev
->
cfg_size
)
return
0
;
...
...
@@ -152,26 +171,41 @@ pci_write_config(struct kobject *kobj, char *buf, loff_t off, size_t count)
size
=
dev
->
cfg_size
-
off
;
count
=
size
;
}
while
(
off
&
3
)
{
pci_write_config_byte
(
dev
,
off
,
buf
[
off
-
init_off
]);
if
((
off
&
1
)
&&
size
)
{
pci_write_config_byte
(
dev
,
off
,
data
[
off
-
init_off
]);
off
++
;
if
(
--
size
==
0
)
break
;
size
--
;
}
if
((
off
&
3
)
&&
size
>
2
)
{
u16
val
=
data
[
off
-
init_off
];
val
|=
(
u16
)
data
[
off
-
init_off
+
1
]
<<
8
;
pci_write_config_word
(
dev
,
off
,
val
);
off
+=
2
;
size
-=
2
;
}
while
(
size
>
3
)
{
u
nsigned
int
val
=
buf
[
off
-
init_off
];
val
|=
(
u
nsigned
int
)
buf
[
off
-
init_off
+
1
]
<<
8
;
val
|=
(
u
nsigned
int
)
buf
[
off
-
init_off
+
2
]
<<
16
;
val
|=
(
u
nsigned
int
)
buf
[
off
-
init_off
+
3
]
<<
24
;
u
32
val
=
data
[
off
-
init_off
];
val
|=
(
u
32
)
data
[
off
-
init_off
+
1
]
<<
8
;
val
|=
(
u
32
)
data
[
off
-
init_off
+
2
]
<<
16
;
val
|=
(
u
32
)
data
[
off
-
init_off
+
3
]
<<
24
;
pci_write_config_dword
(
dev
,
off
,
val
);
off
+=
4
;
size
-=
4
;
}
if
(
size
>=
2
)
{
u16
val
=
data
[
off
-
init_off
];
val
|=
(
u16
)
data
[
off
-
init_off
+
1
]
<<
8
;
pci_write_config_word
(
dev
,
off
,
val
);
off
+=
2
;
size
-=
2
;
}
while
(
size
>
0
)
{
pci_write_config_byte
(
dev
,
off
,
buf
[
off
-
init_off
]);
if
(
size
)
{
pci_write_config_byte
(
dev
,
off
,
data
[
off
-
init_off
]);
off
++
;
--
size
;
}
...
...
drivers/pci/pci.c
浏览文件 @
742b0c90
...
...
@@ -16,6 +16,7 @@
#include <linux/module.h>
#include <linux/spinlock.h>
#include <asm/dma.h>
/* isa_dma_bridge_buggy */
#include "pci.h"
/**
...
...
@@ -398,10 +399,10 @@ pci_enable_device(struct pci_dev *dev)
{
int
err
;
dev
->
is_enabled
=
1
;
if
((
err
=
pci_enable_device_bars
(
dev
,
(
1
<<
PCI_NUM_RESOURCES
)
-
1
)))
return
err
;
pci_fixup_device
(
pci_fixup_enable
,
dev
);
dev
->
is_enabled
=
1
;
return
0
;
}
...
...
@@ -427,16 +428,15 @@ pci_disable_device(struct pci_dev *dev)
{
u16
pci_command
;
dev
->
is_enabled
=
0
;
dev
->
is_busmaster
=
0
;
pci_read_config_word
(
dev
,
PCI_COMMAND
,
&
pci_command
);
if
(
pci_command
&
PCI_COMMAND_MASTER
)
{
pci_command
&=
~
PCI_COMMAND_MASTER
;
pci_write_config_word
(
dev
,
PCI_COMMAND
,
pci_command
);
}
dev
->
is_busmaster
=
0
;
pcibios_disable_device
(
dev
);
dev
->
is_enabled
=
0
;
}
/**
...
...
@@ -748,17 +748,6 @@ pci_set_dma_mask(struct pci_dev *dev, u64 mask)
return
0
;
}
int
pci_dac_set_dma_mask
(
struct
pci_dev
*
dev
,
u64
mask
)
{
if
(
!
pci_dac_dma_supported
(
dev
,
mask
))
return
-
EIO
;
dev
->
dma_mask
=
mask
;
return
0
;
}
int
pci_set_consistent_dma_mask
(
struct
pci_dev
*
dev
,
u64
mask
)
{
...
...
@@ -821,7 +810,6 @@ EXPORT_SYMBOL(pci_set_master);
EXPORT_SYMBOL
(
pci_set_mwi
);
EXPORT_SYMBOL
(
pci_clear_mwi
);
EXPORT_SYMBOL
(
pci_set_dma_mask
);
EXPORT_SYMBOL
(
pci_dac_set_dma_mask
);
EXPORT_SYMBOL
(
pci_set_consistent_dma_mask
);
EXPORT_SYMBOL
(
pci_assign_resource
);
EXPORT_SYMBOL
(
pci_find_parent_resource
);
...
...
drivers/pci/probe.c
浏览文件 @
742b0c90
...
...
@@ -9,6 +9,7 @@
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/cpumask.h>
#include "pci.h"
#define CARDBUS_LATENCY_TIMER 176
/* secondary latency timer */
#define CARDBUS_RESERVE_BUSNR 3
...
...
drivers/pci/proc.c
浏览文件 @
742b0c90
...
...
@@ -15,6 +15,7 @@
#include <asm/uaccess.h>
#include <asm/byteorder.h>
#include "pci.h"
static
int
proc_initialized
;
/* = 0 */
...
...
drivers/pci/quirks.c
浏览文件 @
742b0c90
...
...
@@ -18,6 +18,7 @@
#include <linux/pci.h>
#include <linux/init.h>
#include <linux/delay.h>
#include "pci.h"
/* Deal with broken BIOS'es that neglect to enable passive release,
which can cause problems in combination with the 82441FX/PPro MTRRs */
...
...
@@ -328,6 +329,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_12,
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801DB_0
,
quirk_ich4_lpc_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801DB_12
,
quirk_ich4_lpc_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801EB_0
,
quirk_ich4_lpc_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_ESB_1
,
quirk_ich4_lpc_acpi
);
/*
* VIA ACPI: One IO region pointed to by longword at
...
...
include/linux/pci.h
浏览文件 @
742b0c90
...
...
@@ -671,6 +671,7 @@ struct pci_driver {
int
(
*
suspend
)
(
struct
pci_dev
*
dev
,
pm_message_t
state
);
/* Device suspended */
int
(
*
resume
)
(
struct
pci_dev
*
dev
);
/* Device woken up */
int
(
*
enable_wake
)
(
struct
pci_dev
*
dev
,
pci_power_t
state
,
int
enable
);
/* Enable wake event */
void
(
*
shutdown
)
(
struct
pci_dev
*
dev
);
struct
device_driver
driver
;
struct
pci_dynids
dynids
;
...
...
@@ -810,7 +811,6 @@ void pci_set_master(struct pci_dev *dev);
int
pci_set_mwi
(
struct
pci_dev
*
dev
);
void
pci_clear_mwi
(
struct
pci_dev
*
dev
);
int
pci_set_dma_mask
(
struct
pci_dev
*
dev
,
u64
mask
);
int
pci_dac_set_dma_mask
(
struct
pci_dev
*
dev
,
u64
mask
);
int
pci_set_consistent_dma_mask
(
struct
pci_dev
*
dev
,
u64
mask
);
int
pci_assign_resource
(
struct
pci_dev
*
dev
,
int
i
);
...
...
@@ -941,7 +941,6 @@ static inline void pci_set_master(struct pci_dev *dev) { }
static
inline
int
pci_enable_device
(
struct
pci_dev
*
dev
)
{
return
-
EIO
;
}
static
inline
void
pci_disable_device
(
struct
pci_dev
*
dev
)
{
}
static
inline
int
pci_set_dma_mask
(
struct
pci_dev
*
dev
,
u64
mask
)
{
return
-
EIO
;
}
static
inline
int
pci_dac_set_dma_mask
(
struct
pci_dev
*
dev
,
u64
mask
)
{
return
-
EIO
;
}
static
inline
int
pci_assign_resource
(
struct
pci_dev
*
dev
,
int
i
)
{
return
-
EBUSY
;}
static
inline
int
pci_register_driver
(
struct
pci_driver
*
drv
)
{
return
0
;}
static
inline
void
pci_unregister_driver
(
struct
pci_driver
*
drv
)
{
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录