ata_piix: implement piix_borken_suspend()
Separate out broken suspend blacklist matching into piix_broken_suspend(). Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
@@ -890,7 +890,9 @@ static void ich_set_dmamode (struct ata_port *ap, struct ata_device *adev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
static struct dmi_system_id piix_broken_suspend_dmi_table[] = {
|
static int piix_broken_suspend(void)
|
||||||
|
{
|
||||||
|
static struct dmi_system_id sysids[] = {
|
||||||
{
|
{
|
||||||
.ident = "TECRA M5",
|
.ident = "TECRA M5",
|
||||||
.matches = {
|
.matches = {
|
||||||
@@ -898,13 +900,6 @@ static struct dmi_system_id piix_broken_suspend_dmi_table[] = {
|
|||||||
DMI_MATCH(DMI_PRODUCT_NAME, "TECRA M5"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "TECRA M5"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
.ident = "Satellite U200",
|
|
||||||
.matches = {
|
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
|
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Satellite U200"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
.ident = "Satellite U205",
|
.ident = "Satellite U205",
|
||||||
.matches = {
|
.matches = {
|
||||||
@@ -922,6 +917,12 @@ static struct dmi_system_id piix_broken_suspend_dmi_table[] = {
|
|||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (dmi_check_system(sysids))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int piix_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg)
|
static int piix_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg)
|
||||||
{
|
{
|
||||||
struct ata_host *host = dev_get_drvdata(&pdev->dev);
|
struct ata_host *host = dev_get_drvdata(&pdev->dev);
|
||||||
@@ -937,8 +938,7 @@ static int piix_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg)
|
|||||||
* cycles and power trying to do something to the sleeping
|
* cycles and power trying to do something to the sleeping
|
||||||
* beauty.
|
* beauty.
|
||||||
*/
|
*/
|
||||||
if (dmi_check_system(piix_broken_suspend_dmi_table) &&
|
if (piix_broken_suspend() && mesg.event == PM_EVENT_SUSPEND) {
|
||||||
mesg.event == PM_EVENT_SUSPEND) {
|
|
||||||
pci_save_state(pdev);
|
pci_save_state(pdev);
|
||||||
|
|
||||||
/* mark its power state as "unknown", since we don't
|
/* mark its power state as "unknown", since we don't
|
||||||
|
Reference in New Issue
Block a user