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
0951a832
Commit
0951a832
authored
Sep 17, 2003
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge intel.com:/home/lenb/src/linux-acpi-test-2.6.0
into intel.com:/home/lenb/bk/linux-acpi-test-2.6.0
parents
def8bfa3
09fae3b3
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
83 additions
and
40 deletions
+83
-40
arch/i386/kernel/dmi_scan.c
arch/i386/kernel/dmi_scan.c
+4
-6
arch/i386/kernel/mpparse.c
arch/i386/kernel/mpparse.c
+13
-11
drivers/acpi/ec.c
drivers/acpi/ec.c
+5
-2
drivers/acpi/events/evregion.c
drivers/acpi/events/evregion.c
+3
-3
drivers/acpi/pci_link.c
drivers/acpi/pci_link.c
+57
-17
include/acpi/acconfig.h
include/acpi/acconfig.h
+1
-1
No files found.
arch/i386/kernel/dmi_scan.c
View file @
0951a832
...
...
@@ -939,11 +939,6 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={
MATCH
(
DMI_BOARD_NAME
,
"CUR-DLS"
),
NO_MATCH
,
NO_MATCH
}},
{
force_acpi_ht
,
"ASUS A7V"
,
{
MATCH
(
DMI_BOARD_VENDOR
,
"ASUSTeK Computer INC"
),
MATCH
(
DMI_BOARD_NAME
,
"<A7V>"
),
MATCH
(
DMI_BIOS_VERSION
,
"ASUS A7V ACPI BIOS Revision 1011"
),
NO_MATCH
}},
{
force_acpi_ht
,
"ABIT i440BX-W83977"
,
{
MATCH
(
DMI_BOARD_VENDOR
,
"ABIT <http://www.abit.com>"
),
MATCH
(
DMI_BOARD_NAME
,
"i440BX-W83977 (BP6)"
),
...
...
@@ -978,7 +973,10 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={
{
disable_acpi_pci
,
"ASUS A7V"
,
{
MATCH
(
DMI_BOARD_VENDOR
,
"ASUSTeK Computer INC"
),
MATCH
(
DMI_BOARD_NAME
,
"<A7V>"
),
MATCH
(
DMI_BIOS_VERSION
,
"ASUS A7V ACPI BIOS Revision 1007"
),
NO_MATCH
}},
/* newer BIOS, Revision 1011, does work */
MATCH
(
DMI_BIOS_VERSION
,
"ASUS A7V ACPI BIOS Revision 1007"
),
NO_MATCH
}},
#endif
{
NULL
,
}
...
...
arch/i386/kernel/mpparse.c
View file @
0951a832
...
...
@@ -1019,8 +1019,6 @@ void __init mp_config_acpi_legacy_irqs (void)
}
}
/* Ensure the ACPI SCI interrupt level is active low, edge-triggered */
extern
FADT_DESCRIPTOR
acpi_fadt
;
void
__init
mp_config_ioapic_for_sci
(
int
irq
)
...
...
@@ -1029,6 +1027,7 @@ void __init mp_config_ioapic_for_sci(int irq)
int
ioapic_pin
;
struct
acpi_table_madt
*
madt
;
struct
acpi_table_int_src_ovr
*
entry
=
NULL
;
acpi_interrupt_flags
flags
;
void
*
madt_end
;
acpi_status
status
;
...
...
@@ -1052,15 +1051,12 @@ void __init mp_config_ioapic_for_sci(int irq)
* See the note at the end of ACPI 2.0b section
* 5.2.10.8 for what this is about.
*/
if
(
entry
->
bus_irq
!=
entry
->
global_irq
)
{
acpi_fadt
.
sci_int
=
entry
->
global_irq
;
irq
=
entry
->
global_irq
;
break
;
}
else
return
;
flags
=
entry
->
flags
;
acpi_fadt
.
sci_int
=
entry
->
global_irq
;
irq
=
entry
->
global_irq
;
break
;
}
entry
=
(
struct
acpi_table_int_src_ovr
*
)
((
unsigned
long
)
entry
+
entry
->
header
.
length
);
}
...
...
@@ -1070,7 +1066,13 @@ void __init mp_config_ioapic_for_sci(int irq)
ioapic_pin
=
irq
-
mp_ioapic_routing
[
ioapic
].
irq_start
;
io_apic_set_pci_routing
(
ioapic
,
ioapic_pin
,
irq
,
1
,
1
);
// Active low, level triggered
if
(
flags
.
polarity
==
0
)
flags
.
polarity
=
0x3
;
/* Active low */
if
(
flags
.
trigger
==
0
)
flags
.
trigger
=
0x3
;
/* Level-triggered */
io_apic_set_pci_routing
(
ioapic
,
ioapic_pin
,
irq
,
(
flags
.
trigger
>>
1
)
,
(
flags
.
polarity
>>
1
));
}
#ifdef CONFIG_ACPI_PCI
...
...
drivers/acpi/ec.c
View file @
0951a832
...
...
@@ -32,7 +32,7 @@
#include <asm/io.h>
#include <acpi/acpi_bus.h>
#include <acpi/acpi_drivers.h>
#include <acpi/actypes.h>
#define _COMPONENT ACPI_EC_COMPONENT
ACPI_MODULE_NAME
(
"acpi_ec"
)
...
...
@@ -412,7 +412,10 @@ acpi_ec_space_setup (
* The EC object is in the handler context and is needed
* when calling the acpi_ec_space_handler.
*/
*
return_context
=
handler_context
;
if
(
function
==
ACPI_REGION_DEACTIVATE
)
*
return_context
=
NULL
;
else
*
return_context
=
handler_context
;
return
AE_OK
;
}
...
...
drivers/acpi/events/evregion.c
View file @
0951a832
...
...
@@ -382,7 +382,7 @@ acpi_ev_detach_region(
union
acpi_operand_object
*
obj_desc
;
union
acpi_operand_object
**
last_obj_ptr
;
acpi_adr_space_setup
region_setup
;
void
*
region_context
;
void
*
*
region_context
;
union
acpi_operand_object
*
region_obj2
;
acpi_status
status
;
...
...
@@ -394,7 +394,7 @@ acpi_ev_detach_region(
if
(
!
region_obj2
)
{
return_VOID
;
}
region_context
=
region_obj2
->
extra
.
region_context
;
region_context
=
&
region_obj2
->
extra
.
region_context
;
/* Get the address handler from the region object */
...
...
@@ -450,7 +450,7 @@ acpi_ev_detach_region(
region_setup
=
handler_obj
->
address_space
.
setup
;
status
=
region_setup
(
region_obj
,
ACPI_REGION_DEACTIVATE
,
handler_obj
->
address_space
.
context
,
&
region_context
);
handler_obj
->
address_space
.
context
,
region_context
);
/* Init routine may fail, Just ignore errors */
...
...
drivers/acpi/pci_link.c
View file @
0951a832
...
...
@@ -220,7 +220,6 @@ acpi_pci_link_check_current (
return
AE_CTRL_TERMINATE
;
}
static
int
acpi_pci_link_get_current
(
struct
acpi_pci_link
*
link
)
...
...
@@ -279,6 +278,28 @@ acpi_pci_link_get_current (
return_VALUE
(
result
);
}
static
int
acpi_pci_link_try_get_current
(
struct
acpi_pci_link
*
link
,
int
irq
)
{
int
result
;
ACPI_FUNCTION_TRACE
(
"acpi_pci_link_try_get_current"
);
result
=
acpi_pci_link_get_current
(
link
);
if
(
result
&&
link
->
irq
.
active
)
{
return_VALUE
(
result
);
}
if
(
!
link
->
irq
.
active
)
{
ACPI_DEBUG_PRINT
((
ACPI_DB_ERROR
,
"No active IRQ resource found
\n
"
));
printk
(
KERN_WARNING
"_CRS returns NULL! Using IRQ %d for device (%s [%s]).
\n
"
,
irq
,
acpi_device_name
(
link
->
device
),
acpi_device_bid
(
link
->
device
));
link
->
irq
.
active
=
irq
;
}
return
0
;
}
static
int
acpi_pci_link_set
(
...
...
@@ -294,6 +315,7 @@ acpi_pci_link_set (
struct
acpi_buffer
buffer
=
{
sizeof
(
resource
)
+
1
,
&
resource
};
int
i
=
0
;
int
valid
=
0
;
int
resource_type
=
0
;
ACPI_FUNCTION_TRACE
(
"acpi_pci_link_set"
);
...
...
@@ -317,20 +339,32 @@ acpi_pci_link_set (
}
}
/* If IRQ<=15, first try with a "normal" IRQ descriptor. If that fails, try with
* an extended one */
if
(
irq
<=
15
)
{
resource_type
=
ACPI_RSTYPE_IRQ
;
}
else
{
resource_type
=
ACPI_RSTYPE_EXT_IRQ
;
}
retry_programming:
memset
(
&
resource
,
0
,
sizeof
(
resource
));
/* NOTE: PCI interrupts are always level / active_low / shared. But not all
interrupts > 15 are PCI interrupts. Rely on the ACPI IRQ definition for
parameters */
if
(
irq
<=
15
)
{
switch
(
resource_type
)
{
case
ACPI_RSTYPE_IRQ
:
resource
.
res
.
id
=
ACPI_RSTYPE_IRQ
;
resource
.
res
.
length
=
sizeof
(
struct
acpi_resource
);
resource
.
res
.
data
.
irq
.
edge_level
=
link
->
irq
.
edge_level
;
resource
.
res
.
data
.
irq
.
active_high_low
=
link
->
irq
.
active_high_low
;
resource
.
res
.
data
.
irq
.
number_of_interrupts
=
1
;
resource
.
res
.
data
.
irq
.
interrupts
[
0
]
=
irq
;
}
else
{
break
;
case
ACPI_RSTYPE_EXT_IRQ
:
resource
.
res
.
id
=
ACPI_RSTYPE_EXT_IRQ
;
resource
.
res
.
length
=
sizeof
(
struct
acpi_resource
);
resource
.
res
.
data
.
extended_irq
.
producer_consumer
=
ACPI_CONSUMER
;
...
...
@@ -339,11 +373,21 @@ acpi_pci_link_set (
resource
.
res
.
data
.
extended_irq
.
number_of_interrupts
=
1
;
resource
.
res
.
data
.
extended_irq
.
interrupts
[
0
]
=
irq
;
/* ignore resource_source, it's optional */
break
;
}
resource
.
end
.
id
=
ACPI_RSTYPE_END_TAG
;
/* Attempt to set the resource */
status
=
acpi_set_current_resources
(
link
->
handle
,
&
buffer
);
/* if we failed and IRQ <= 15, try again with an extended descriptor */
if
(
ACPI_FAILURE
(
status
)
&&
(
resource_type
==
ACPI_RSTYPE_IRQ
))
{
resource_type
=
ACPI_RSTYPE_EXT_IRQ
;
printk
(
PREFIX
"Retrying with extended IRQ descriptor
\n
"
);
goto
retry_programming
;
}
/* check for total failure */
if
(
ACPI_FAILURE
(
status
))
{
ACPI_DEBUG_PRINT
((
ACPI_DB_ERROR
,
"Error evaluating _SRS
\n
"
));
return_VALUE
(
-
ENODEV
);
...
...
@@ -361,7 +405,7 @@ acpi_pci_link_set (
}
/* Make sure the active IRQ is the one we requested. */
result
=
acpi_pci_link_
get_current
(
link
);
result
=
acpi_pci_link_
try_get_current
(
link
,
irq
);
if
(
result
)
{
return_VALUE
(
result
);
}
...
...
@@ -458,14 +502,14 @@ static int acpi_pci_link_allocate(struct acpi_pci_link* link) {
irq
=
link
->
irq
.
possible
[
0
];
}
/*
* Select the best IRQ. This is done in reverse to promote
* the use of IRQs 9, 10, 11, and >15.
*/
for
(
i
=
(
link
->
irq
.
possible_count
-
1
);
i
>
0
;
i
--
)
{
if
(
acpi_irq_penalty
[
irq
]
>
acpi_irq_penalty
[
link
->
irq
.
possible
[
i
]])
irq
=
link
->
irq
.
possible
[
i
];
}
/*
* Select the best IRQ. This is done in reverse to promote
* the use of IRQs 9, 10, 11, and >15.
*/
for
(
i
=
(
link
->
irq
.
possible_count
-
1
);
i
>
0
;
i
--
)
{
if
(
acpi_irq_penalty
[
irq
]
>
acpi_irq_penalty
[
link
->
irq
.
possible
[
i
]])
irq
=
link
->
irq
.
possible
[
i
];
}
/* Attempt to enable the link device at this IRQ. */
if
(
acpi_pci_link_set
(
link
,
irq
))
{
...
...
@@ -574,10 +618,6 @@ acpi_pci_link_add (
else
printk
(
" %d"
,
link
->
irq
.
possible
[
i
]);
}
if
(
!
link
->
irq
.
active
)
printk
(
", disabled"
);
else
if
(
!
found
)
printk
(
", enabled at IRQ %d"
,
link
->
irq
.
active
);
printk
(
")
\n
"
);
/* TBD: Acquire/release lock */
...
...
include/acpi/acconfig.h
View file @
0951a832
...
...
@@ -64,7 +64,7 @@
/* Version string */
#define ACPI_CA_VERSION 0x20030
813
#define ACPI_CA_VERSION 0x20030
916
/* Maximum objects in the various object caches */
...
...
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