Re: [PATCH] libata: Register for dock events when the drive isinside a dock station

From: Holger Macht
Date: Tue Feb 26 2008 - 05:14:53 EST


On Fri 22. Feb - 10:34:24, Tejun Heo wrote:
> > If a device/bay is inside a docking station, we need to register for dock
> > events additionally to bay events. If a dock event occurs, the dock driver
> > will call the appropriate handler (ata_acpi_ap_notify() or
> > ata_acpi_dev_notify()) for us.
> >
> > Signed-off-by: Holger Macht <hmacht@xxxxxxx>
> > ---
> >
> > diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c
> > index 9e8ec19..563ad72 100644
> > --- a/drivers/ata/libata-acpi.c
> > +++ b/drivers/ata/libata-acpi.c
> > @@ -191,20 +191,33 @@ void ata_acpi_associate(struct ata_host *host)
> > else
> > ata_acpi_associate_ide_port(ap);
> >
> > - if (ap->acpi_handle)
> > + if (ap->acpi_handle) {
> > acpi_install_notify_handler (ap->acpi_handle,
> > ACPI_SYSTEM_NOTIFY,
> > ata_acpi_ap_notify,
> > ap);
> > +#ifdef CONFIG_ACPI_DOCK_MODULE
>
> Heh, you need
>
> #if defined(CONFIG_ACPI_DOCK) || defined(CONFIG_ACPI_DOCK_MODULE)
>
> Also, another question. Is there a way to tell whether the device or
> port is connected behind a dock or not? Just notifying hotplug signal
> is fine for hotplugging but to make hot unplug safe for PATA, libata
> should be able to tell whether the device is actually gonna go away and
> kill it explicitly.

The hotplug handler is only called if the device is actually inside the
dock station. If it is not, nothing will happen. I hope that I got your
question right?

However, if this would be helpful, it would be easy to add something like
a am_I_on_dock_station?(...) function to the dock driver.

Regards,
Holger
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/