Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 87463
b: refs/heads/master
c: 790c9d8
h: refs/heads/master
i:
  87461: 183099d
  87459: d2020f2
  87455: 0c0fe8a
v: v3
  • Loading branch information
Tobias Mueller authored and Jiri Kosina committed Mar 18, 2008
1 parent 1519979 commit b068d0c
Show file tree
Hide file tree
Showing 54 changed files with 1,611 additions and 546 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 74fe030532d779a3774fcc9e1ddce65f3773e156
refs/heads/master: 790c9d8d87f15827a455b191924aee9b397ce2b1
52 changes: 0 additions & 52 deletions trunk/Documentation/input/notifier.txt

This file was deleted.

2 changes: 0 additions & 2 deletions trunk/Documentation/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -732,8 +732,6 @@ and is between 256 and 4096 characters. It is defined in the file
(Don't attempt to blink the leds)
i8042.noaux [HW] Don't check for auxiliary (== mouse) port
i8042.nokbd [HW] Don't check/create keyboard port
i8042.noloop [HW] Disable the AUX Loopback command while probing
for the AUX port
i8042.nomux [HW] Don't check presence of an active multiplexing
controller
i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX
Expand Down
17 changes: 12 additions & 5 deletions trunk/Documentation/mca.txt
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,14 @@ MCA Device Drivers

Currently, there are a number of MCA-specific device drivers.

1) PS/2 SCSI
1) PS/2 ESDI
drivers/block/ps2esdi.c
include/linux/ps2esdi.h
Uses major number 36, and should use /dev files /dev/eda, /dev/edb.
Supports two drives, but only one controller. May use the
command-line args "ed=cyl,head,sec" and "tp720".

2) PS/2 SCSI
drivers/scsi/ibmmca.c
drivers/scsi/ibmmca.h
The driver for the IBM SCSI subsystem. Includes both integrated
Expand All @@ -152,25 +159,25 @@ Currently, there are a number of MCA-specific device drivers.
machine with a front-panel display (i.e. model 95), you can use
"ibmmcascsi=display" to enable a drive activity indicator.

2) 3c523
3) 3c523
drivers/net/3c523.c
drivers/net/3c523.h
3Com 3c523 Etherlink/MC ethernet driver.

3) SMC Ultra/MCA and IBM Adapter/A
4) SMC Ultra/MCA and IBM Adapter/A
drivers/net/smc-mca.c
drivers/net/smc-mca.h
Driver for the MCA version of the SMC Ultra and various other
OEM'ed and work-alike cards (Elite, Adapter/A, etc).

4) NE/2
5) NE/2
driver/net/ne2.c
driver/net/ne2.h
The NE/2 is the MCA version of the NE2000. This may not work
with clones that have a different adapter id than the original
NE/2.

5) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Adapter/A and
6) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Adapter/A and
Reply Sound Blaster/SCSI (SCSI part)
Better support for these cards than the driver for ISA.
Supports multiple cards with IRQ sharing.
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/acpi/asus_acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -610,7 +610,7 @@ write_led(const char __user * buffer, unsigned long count,
(led_out) ? (hotk->status | ledmask) : (hotk->status & ~ledmask);

if (invert) /* invert target value */
led_out = !led_out;
led_out = !led_out & 0x1;

if (!write_acpi_int(hotk->handle, ledname, led_out, NULL))
printk(KERN_WARNING "Asus ACPI: LED (%s) write failed\n",
Expand Down
11 changes: 6 additions & 5 deletions trunk/drivers/acpi/battery.c
Original file line number Diff line number Diff line change
Expand Up @@ -293,12 +293,13 @@ static int extract_package(struct acpi_battery *battery,
strncpy(ptr, (u8 *)&element->integer.value,
sizeof(acpi_integer));
ptr[sizeof(acpi_integer)] = 0;
} else
*ptr = 0; /* don't have value */
} else return -EFAULT;
} else {
int *x = (int *)((u8 *)battery + offsets[i].offset);
*x = (element->type == ACPI_TYPE_INTEGER) ?
element->integer.value : -1;
if (element->type == ACPI_TYPE_INTEGER) {
int *x = (int *)((u8 *)battery +
offsets[i].offset);
*x = element->integer.value;
} else return -EFAULT;
}
}
return 0;
Expand Down
1 change: 0 additions & 1 deletion trunk/drivers/acpi/dock.c
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,6 @@ static ssize_t write_undock(struct device *dev, struct device_attribute *attr,
if (!count)
return -EINVAL;

begin_undock(dock_station);
ret = handle_eject_request(dock_station, ACPI_NOTIFY_EJECT_REQUEST);
return ret ? ret: count;
}
Expand Down
12 changes: 3 additions & 9 deletions trunk/drivers/acpi/processor_idle.c
Original file line number Diff line number Diff line change
Expand Up @@ -216,10 +216,8 @@ static void acpi_safe_halt(void)
* test NEED_RESCHED:
*/
smp_mb();
if (!need_resched()) {
if (!need_resched())
safe_halt();
local_irq_disable();
}
current_thread_info()->status |= TS_POLLING;
}

Expand Down Expand Up @@ -423,9 +421,7 @@ static void acpi_processor_idle(void)
else
acpi_safe_halt();

if (irqs_disabled())
local_irq_enable();

local_irq_enable();
return;
}

Expand Down Expand Up @@ -534,9 +530,7 @@ static void acpi_processor_idle(void)
* skew otherwise.
*/
sleep_ticks = 0xFFFFFFFF;
if (irqs_disabled())
local_irq_enable();

local_irq_enable();
break;

case ACPI_STATE_C2:
Expand Down
60 changes: 59 additions & 1 deletion trunk/drivers/acpi/video.c
Original file line number Diff line number Diff line change
Expand Up @@ -807,11 +807,40 @@ static void acpi_video_bus_find_cap(struct acpi_video_bus *video)
static int acpi_video_bus_check(struct acpi_video_bus *video)
{
acpi_status status = -ENOENT;

long device_id;
struct device *dev;
struct acpi_device *device;

if (!video)
return -EINVAL;

device = video->device;

status =
acpi_evaluate_integer(device->handle, "_ADR", NULL, &device_id);

if (!ACPI_SUCCESS(status))
return -ENODEV;

/* We need to attempt to determine whether the _ADR refers to a
PCI device or not. There's no terribly good way to do this,
so the best we can hope for is to assume that there'll never
be a video device in the host bridge */
if (device_id >= 0x10000) {
/* It looks like a PCI device. Does it exist? */
dev = acpi_get_physical_device(device->handle);
} else {
/* It doesn't look like a PCI device. Does its parent
exist? */
acpi_handle phandle;
if (acpi_get_parent(device->handle, &phandle))
return -ENODEV;
dev = acpi_get_physical_device(phandle);
}
if (!dev)
return -ENODEV;
put_device(dev);

/* Since there is no HID, CID and so on for VGA driver, we have
* to check well known required nodes.
*/
Expand Down Expand Up @@ -1337,8 +1366,37 @@ acpi_video_bus_write_DOS(struct file *file,

static int acpi_video_bus_add_fs(struct acpi_device *device)
{
long device_id;
int status;
struct proc_dir_entry *entry = NULL;
struct acpi_video_bus *video;
struct device *dev;

status =
acpi_evaluate_integer(device->handle, "_ADR", NULL, &device_id);

if (!ACPI_SUCCESS(status))
return -ENODEV;

/* We need to attempt to determine whether the _ADR refers to a
PCI device or not. There's no terribly good way to do this,
so the best we can hope for is to assume that there'll never
be a video device in the host bridge */
if (device_id >= 0x10000) {
/* It looks like a PCI device. Does it exist? */
dev = acpi_get_physical_device(device->handle);
} else {
/* It doesn't look like a PCI device. Does its parent
exist? */
acpi_handle phandle;
if (acpi_get_parent(device->handle, &phandle))
return -ENODEV;
dev = acpi_get_physical_device(phandle);
}
if (!dev)
return -ENODEV;
put_device(dev);



video = acpi_driver_data(device);
Expand Down
1 change: 0 additions & 1 deletion trunk/drivers/ata/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ config ATA_NONSTANDARD
config ATA_ACPI
bool
depends on ACPI && PCI
select ACPI_DOCK
default y
help
This option adds support for ATA-related ACPI objects.
Expand Down
72 changes: 24 additions & 48 deletions trunk/drivers/ata/ahci.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,6 @@
#define DRV_NAME "ahci"
#define DRV_VERSION "3.0"

static int ahci_skip_host_reset;
module_param_named(skip_host_reset, ahci_skip_host_reset, int, 0444);
MODULE_PARM_DESC(skip_host_reset, "skip global host reset (0=don't skip, 1=skip)");

static int ahci_enable_alpm(struct ata_port *ap,
enum link_pm policy);
static void ahci_disable_alpm(struct ata_port *ap);
Expand Down Expand Up @@ -591,7 +587,6 @@ static const struct pci_device_id ahci_pci_tbl[] = {

/* Marvell */
{ PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */
{ PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv }, /* 6121 */

/* Generic, PCI class code for AHCI */
{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
Expand Down Expand Up @@ -666,7 +661,6 @@ static void ahci_save_initial_config(struct pci_dev *pdev,
void __iomem *mmio = pcim_iomap_table(pdev)[AHCI_PCI_BAR];
u32 cap, port_map;
int i;
int mv;

/* make sure AHCI mode is enabled before accessing CAP */
ahci_enable_ahci(mmio);
Expand Down Expand Up @@ -702,16 +696,12 @@ static void ahci_save_initial_config(struct pci_dev *pdev,
* presence register, as bit 4 (counting from 0)
*/
if (hpriv->flags & AHCI_HFLAG_MV_PATA) {
if (pdev->device == 0x6121)
mv = 0x3;
else
mv = 0xf;
dev_printk(KERN_ERR, &pdev->dev,
"MV_AHCI HACK: port_map %x -> %x\n",
port_map,
port_map & mv);
hpriv->port_map,
hpriv->port_map & 0xf);

port_map &= mv;
port_map &= 0xf;
}

/* cross check port_map and cap.n_ports */
Expand Down Expand Up @@ -1098,35 +1088,29 @@ static int ahci_reset_controller(struct ata_host *host)
ahci_enable_ahci(mmio);

/* global controller reset */
if (!ahci_skip_host_reset) {
tmp = readl(mmio + HOST_CTL);
if ((tmp & HOST_RESET) == 0) {
writel(tmp | HOST_RESET, mmio + HOST_CTL);
readl(mmio + HOST_CTL); /* flush */
}
tmp = readl(mmio + HOST_CTL);
if ((tmp & HOST_RESET) == 0) {
writel(tmp | HOST_RESET, mmio + HOST_CTL);
readl(mmio + HOST_CTL); /* flush */
}

/* reset must complete within 1 second, or
* the hardware should be considered fried.
*/
ssleep(1);
/* reset must complete within 1 second, or
* the hardware should be considered fried.
*/
ssleep(1);

tmp = readl(mmio + HOST_CTL);
if (tmp & HOST_RESET) {
dev_printk(KERN_ERR, host->dev,
"controller reset failed (0x%x)\n", tmp);
return -EIO;
}
tmp = readl(mmio + HOST_CTL);
if (tmp & HOST_RESET) {
dev_printk(KERN_ERR, host->dev,
"controller reset failed (0x%x)\n", tmp);
return -EIO;
}

/* turn on AHCI mode */
ahci_enable_ahci(mmio);
/* turn on AHCI mode */
ahci_enable_ahci(mmio);

/* Some registers might be cleared on reset. Restore
* initial values.
*/
ahci_restore_initial_config(host);
} else
dev_printk(KERN_INFO, host->dev,
"skipping global host reset\n");
/* some registers might be cleared on reset. restore initial values */
ahci_restore_initial_config(host);

if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
u16 tmp16;
Expand Down Expand Up @@ -1178,14 +1162,9 @@ static void ahci_init_controller(struct ata_host *host)
int i;
void __iomem *port_mmio;
u32 tmp;
int mv;

if (hpriv->flags & AHCI_HFLAG_MV_PATA) {
if (pdev->device == 0x6121)
mv = 2;
else
mv = 4;
port_mmio = __ahci_port_base(host, mv);
port_mmio = __ahci_port_base(host, 4);

writel(0, port_mmio + PORT_IRQ_MASK);

Expand Down Expand Up @@ -2262,10 +2241,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
if (rc)
return rc;

/* AHCI controllers often implement SFF compatible interface.
* Grab all PCI BARs just in case.
*/
rc = pcim_iomap_regions_request_all(pdev, 1 << AHCI_PCI_BAR, DRV_NAME);
rc = pcim_iomap_regions(pdev, 1 << AHCI_PCI_BAR, DRV_NAME);
if (rc == -EBUSY)
pcim_pin_device(pdev);
if (rc)
Expand Down
Loading

0 comments on commit b068d0c

Please sign in to comment.