pata_hpt3x2n: fix clock turnaround
authorSergei Shtylyov <sshtylyov@ru.mvista.com>
Thu, 17 Dec 2009 06:11:27 +0000 (01:11 -0500)
committerJeff Garzik <jgarzik@redhat.com>
Thu, 17 Dec 2009 06:11:27 +0000 (01:11 -0500)
commit256ace9bbd4cdb6d48d5f55d55d42fa20527fad1
treeef768224eace1e50b8b80cedae9a37bb9cd4c035
parent9a8fd68b15e7b047678a651b7f7e2f3dcd19d20d
pata_hpt3x2n: fix clock turnaround

The clock turnaround code still doesn't work for several reasons:

- 'USE_DPLL' flag in 'ap->host->private_data' is never initialized
  or updated, so the driver can only set the chip to the DPLL clock
  mode, not the PCI mode;

- the driver doesn't serialize access to the channels depending on
  the current clock mode like the vendor drivers, so the clock
  turnaround is only executed "optionally", not always as it should be;

- the wrong ports are written to when hpt3x2n_set_clock() is called
  for the secondary channel;

- hpt3x2n_set_clock() can inadvertently enable the disabled channels
  when resetting the channel state machines.

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: stable@kernel.org
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/pata_hpt3x2n.c