Skip to content

Commit

Permalink
Pull motherboard into test branch
Browse files Browse the repository at this point in the history
Conflicts:

	drivers/acpi/motherboard.c

Signed-off-by: Len Brown <len.brown@intel.com>
  • Loading branch information
Len Brown committed Feb 3, 2007
2 parents 5473526 + fb5c3e1 commit eee3c85
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 209 deletions.
3 changes: 2 additions & 1 deletion arch/i386/defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,8 @@ CONFIG_FW_LOADER=y
#
# Plug and Play support
#
# CONFIG_PNP is not set
CONFIG_PNP=y
CONFIG_PNPACPI=y

#
# Block devices
Expand Down
2 changes: 1 addition & 1 deletion drivers/acpi/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ endif

obj-y += sleep/
obj-y += bus.o glue.o
obj-y += scan.o motherboard.o
obj-y += scan.o
obj-$(CONFIG_ACPI_AC) += ac.o
obj-$(CONFIG_ACPI_BATTERY) += battery.o
obj-$(CONFIG_ACPI_BUTTON) += button.o
Expand Down
180 changes: 0 additions & 180 deletions drivers/acpi/motherboard.c

This file was deleted.

48 changes: 48 additions & 0 deletions drivers/acpi/osl.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,54 @@ static acpi_osd_handler acpi_irq_handler;
static void *acpi_irq_context;
static struct workqueue_struct *kacpid_wq;

static void __init acpi_request_region (struct acpi_generic_address *addr,
unsigned int length, char *desc)
{
struct resource *res;

if (!addr->address || !length)
return;

if (addr->space_id == ACPI_ADR_SPACE_SYSTEM_IO)
res = request_region(addr->address, length, desc);
else if (addr->space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY)
res = request_mem_region(addr->address, length, desc);
}

static int __init acpi_reserve_resources(void)
{
acpi_request_region(&acpi_gbl_FADT.xpm1a_event_block, acpi_gbl_FADT.pm1_event_length,
"ACPI PM1a_EVT_BLK");

acpi_request_region(&acpi_gbl_FADT.xpm1b_event_block, acpi_gbl_FADT.pm1_event_length,
"ACPI PM1b_EVT_BLK");

acpi_request_region(&acpi_gbl_FADT.xpm1a_control_block, acpi_gbl_FADT.pm1_control_length,
"ACPI PM1a_CNT_BLK");

acpi_request_region(&acpi_gbl_FADT.xpm1b_control_block, acpi_gbl_FADT.pm1_control_length,
"ACPI PM1b_CNT_BLK");

if (acpi_gbl_FADT.pm_timer_length == 4)
acpi_request_region(&acpi_gbl_FADT.xpm_timer_block, 4, "ACPI PM_TMR");

acpi_request_region(&acpi_gbl_FADT.xpm2_control_block, acpi_gbl_FADT.pm2_control_length,
"ACPI PM2_CNT_BLK");

/* Length of GPE blocks must be a non-negative multiple of 2 */

if (!(acpi_gbl_FADT.gpe0_block_length & 0x1))
acpi_request_region(&acpi_gbl_FADT.xgpe0_block,
acpi_gbl_FADT.gpe0_block_length, "ACPI GPE0_BLK");

if (!(acpi_gbl_FADT.gpe1_block_length & 0x1))
acpi_request_region(&acpi_gbl_FADT.xgpe1_block,
acpi_gbl_FADT.gpe1_block_length, "ACPI GPE1_BLK");

return 0;
}
device_initcall(acpi_reserve_resources);

acpi_status acpi_os_initialize(void)
{
return AE_OK;
Expand Down
4 changes: 2 additions & 2 deletions drivers/pnp/pnpacpi/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
# Plug and Play ACPI configuration
#
config PNPACPI
bool "Plug and Play ACPI support (EXPERIMENTAL)"
depends on PNP && ACPI && EXPERIMENTAL
bool "Plug and Play ACPI support"
depends on PNP && ACPI
default y
---help---
Linux uses the PNPACPI to autodetect built-in
Expand Down
52 changes: 27 additions & 25 deletions drivers/pnp/system.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
*
* Some code is based on pnpbios_core.c
* Copyright 2002 Adam Belay <ambx1@neo.rr.com>
*
* (c) Copyright 2007 Hewlett-Packard Development Company, L.P.
* Bjorn Helgaas <bjorn.helgaas@hp.com>
*/

#include <linux/pnp.h>
Expand All @@ -21,18 +22,21 @@ static const struct pnp_device_id pnp_dev_table[] = {
{ "", 0 }
};

static void reserve_ioport_range(char *pnpid, int start, int end)
static void reserve_range(char *pnpid, int start, int end, int port)
{
struct resource *res;
char *regionid;

regionid = kmalloc(16, GFP_KERNEL);
if ( regionid == NULL )
if (regionid == NULL)
return;
snprintf(regionid, 16, "pnp %s", pnpid);
res = request_region(start,end-start+1,regionid);
if ( res == NULL )
kfree( regionid );
if (port)
res = request_region(start,end-start+1,regionid);
else
res = request_mem_region(start,end-start+1,regionid);
if (res == NULL)
kfree(regionid);
else
res->flags &= ~IORESOURCE_BUSY;
/*
Expand All @@ -41,26 +45,20 @@ static void reserve_ioport_range(char *pnpid, int start, int end)
* have double reservations.
*/
printk(KERN_INFO
"pnp: %s: ioport range 0x%x-0x%x %s reserved\n",
pnpid, start, end,
NULL != res ? "has been" : "could not be"
);

return;
"pnp: %s: %s range 0x%x-0x%x %s reserved\n",
pnpid, port ? "ioport" : "iomem", start, end,
NULL != res ? "has been" : "could not be");
}

static void reserve_resources_of_dev( struct pnp_dev *dev )
static void reserve_resources_of_dev(struct pnp_dev *dev)
{
int i;

for (i=0;i<PNP_MAX_PORT;i++) {
for (i = 0; i < PNP_MAX_PORT; i++) {
if (!pnp_port_valid(dev, i))
/* end of resources */
continue;
if (pnp_port_start(dev, i) == 0)
/* disabled */
/* Do nothing */
continue;
continue; /* disabled */
if (pnp_port_start(dev, i) < 0x100)
/*
* Below 0x100 is only standard PC hardware
Expand All @@ -72,14 +70,18 @@ static void reserve_resources_of_dev( struct pnp_dev *dev )
*/
continue;
if (pnp_port_end(dev, i) < pnp_port_start(dev, i))
/* invalid endpoint */
/* Do nothing */
continue; /* invalid */

reserve_range(dev->dev.bus_id, pnp_port_start(dev, i),
pnp_port_end(dev, i), 1);
}

for (i = 0; i < PNP_MAX_MEM; i++) {
if (!pnp_mem_valid(dev, i))
continue;
reserve_ioport_range(
dev->dev.bus_id,
pnp_port_start(dev, i),
pnp_port_end(dev, i)
);

reserve_range(dev->dev.bus_id, pnp_mem_start(dev, i),
pnp_mem_end(dev, i), 0);
}

return;
Expand Down

0 comments on commit eee3c85

Please sign in to comment.