提交 9d2c7c75 编写于 作者: A Alan Cox 提交者: Jeff Garzik

sata_sil: First step to removing ->post_set_mode

Now that we have ata_do_set_mode() available for drivers to use we don't
actually need ->post_set_mode() as the driver can wrap set_mode nicely
and do stuff before or after (eg PCMCIA needs before), so we can kill off
a method in all the structs

While I was at it I added kernel-doc to the function involved.
Signed-off-by: NAlan Cox <alan@redhat.com>
Signed-off-by: NJeff Garzik <jeff@garzik.org>
上级 432729f0
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
#include <linux/libata.h> #include <linux/libata.h>
#define DRV_NAME "sata_sil" #define DRV_NAME "sata_sil"
#define DRV_VERSION "2.1" #define DRV_VERSION "2.2"
enum { enum {
SIL_MMIO_BAR = 5, SIL_MMIO_BAR = 5,
...@@ -117,7 +117,7 @@ static int sil_pci_device_resume(struct pci_dev *pdev); ...@@ -117,7 +117,7 @@ static int sil_pci_device_resume(struct pci_dev *pdev);
static void sil_dev_config(struct ata_device *dev); static void sil_dev_config(struct ata_device *dev);
static u32 sil_scr_read (struct ata_port *ap, unsigned int sc_reg); static u32 sil_scr_read (struct ata_port *ap, unsigned int sc_reg);
static void sil_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); static void sil_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
static void sil_post_set_mode (struct ata_port *ap); static int sil_set_mode (struct ata_port *ap, struct ata_device **r_failed);
static irqreturn_t sil_interrupt(int irq, void *dev_instance); static irqreturn_t sil_interrupt(int irq, void *dev_instance);
static void sil_freeze(struct ata_port *ap); static void sil_freeze(struct ata_port *ap);
static void sil_thaw(struct ata_port *ap); static void sil_thaw(struct ata_port *ap);
...@@ -197,7 +197,7 @@ static const struct ata_port_operations sil_ops = { ...@@ -197,7 +197,7 @@ static const struct ata_port_operations sil_ops = {
.check_status = ata_check_status, .check_status = ata_check_status,
.exec_command = ata_exec_command, .exec_command = ata_exec_command,
.dev_select = ata_std_dev_select, .dev_select = ata_std_dev_select,
.post_set_mode = sil_post_set_mode, .set_mode = sil_set_mode,
.bmdma_setup = ata_bmdma_setup, .bmdma_setup = ata_bmdma_setup,
.bmdma_start = ata_bmdma_start, .bmdma_start = ata_bmdma_start,
.bmdma_stop = ata_bmdma_stop, .bmdma_stop = ata_bmdma_stop,
...@@ -297,7 +297,16 @@ static unsigned char sil_get_device_cache_line(struct pci_dev *pdev) ...@@ -297,7 +297,16 @@ static unsigned char sil_get_device_cache_line(struct pci_dev *pdev)
return cache_line; return cache_line;
} }
static void sil_post_set_mode (struct ata_port *ap) /**
* sil_set_mode - wrap set_mode functions
* @ap: port to set up
* @r_failed: returned device when we fail
*
* Wrap the libata method for device setup as after the setup we need
* to inspect the results and do some configuration work
*/
static int sil_set_mode (struct ata_port *ap, struct ata_device **r_failed)
{ {
struct ata_host *host = ap->host; struct ata_host *host = ap->host;
struct ata_device *dev; struct ata_device *dev;
...@@ -305,6 +314,11 @@ static void sil_post_set_mode (struct ata_port *ap) ...@@ -305,6 +314,11 @@ static void sil_post_set_mode (struct ata_port *ap)
void __iomem *addr = mmio_base + sil_port[ap->port_no].xfer_mode; void __iomem *addr = mmio_base + sil_port[ap->port_no].xfer_mode;
u32 tmp, dev_mode[2]; u32 tmp, dev_mode[2];
unsigned int i; unsigned int i;
int rc;
rc = ata_do_set_mode(ap, r_failed);
if (rc)
return rc;
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
dev = &ap->device[i]; dev = &ap->device[i];
...@@ -323,6 +337,7 @@ static void sil_post_set_mode (struct ata_port *ap) ...@@ -323,6 +337,7 @@ static void sil_post_set_mode (struct ata_port *ap)
tmp |= (dev_mode[1] << 4); tmp |= (dev_mode[1] << 4);
writel(tmp, addr); writel(tmp, addr);
readl(addr); /* flush */ readl(addr); /* flush */
return 0;
} }
static inline void __iomem *sil_scr_addr(struct ata_port *ap, unsigned int sc_reg) static inline void __iomem *sil_scr_addr(struct ata_port *ap, unsigned int sc_reg)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册