Commit 9d2c7c75f889a3eefad016c71f651b0796e0a6e9
Committed by
Jeff Garzik
1 parent
432729f0b0
Exists in
master
and in
39 other branches
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: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Showing 1 changed file with 19 additions and 4 deletions Side-by-side Diff
drivers/ata/sata_sil.c
... | ... | @@ -46,7 +46,7 @@ |
46 | 46 | #include <linux/libata.h> |
47 | 47 | |
48 | 48 | #define DRV_NAME "sata_sil" |
49 | -#define DRV_VERSION "2.1" | |
49 | +#define DRV_VERSION "2.2" | |
50 | 50 | |
51 | 51 | enum { |
52 | 52 | SIL_MMIO_BAR = 5, |
... | ... | @@ -117,7 +117,7 @@ |
117 | 117 | static void sil_dev_config(struct ata_device *dev); |
118 | 118 | static u32 sil_scr_read (struct ata_port *ap, unsigned int sc_reg); |
119 | 119 | static void sil_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); |
120 | -static void sil_post_set_mode (struct ata_port *ap); | |
120 | +static int sil_set_mode (struct ata_port *ap, struct ata_device **r_failed); | |
121 | 121 | static irqreturn_t sil_interrupt(int irq, void *dev_instance); |
122 | 122 | static void sil_freeze(struct ata_port *ap); |
123 | 123 | static void sil_thaw(struct ata_port *ap); |
... | ... | @@ -197,7 +197,7 @@ |
197 | 197 | .check_status = ata_check_status, |
198 | 198 | .exec_command = ata_exec_command, |
199 | 199 | .dev_select = ata_std_dev_select, |
200 | - .post_set_mode = sil_post_set_mode, | |
200 | + .set_mode = sil_set_mode, | |
201 | 201 | .bmdma_setup = ata_bmdma_setup, |
202 | 202 | .bmdma_start = ata_bmdma_start, |
203 | 203 | .bmdma_stop = ata_bmdma_stop, |
... | ... | @@ -297,7 +297,16 @@ |
297 | 297 | return cache_line; |
298 | 298 | } |
299 | 299 | |
300 | -static void sil_post_set_mode (struct ata_port *ap) | |
300 | +/** | |
301 | + * sil_set_mode - wrap set_mode functions | |
302 | + * @ap: port to set up | |
303 | + * @r_failed: returned device when we fail | |
304 | + * | |
305 | + * Wrap the libata method for device setup as after the setup we need | |
306 | + * to inspect the results and do some configuration work | |
307 | + */ | |
308 | + | |
309 | +static int sil_set_mode (struct ata_port *ap, struct ata_device **r_failed) | |
301 | 310 | { |
302 | 311 | struct ata_host *host = ap->host; |
303 | 312 | struct ata_device *dev; |
... | ... | @@ -305,6 +314,11 @@ |
305 | 314 | void __iomem *addr = mmio_base + sil_port[ap->port_no].xfer_mode; |
306 | 315 | u32 tmp, dev_mode[2]; |
307 | 316 | unsigned int i; |
317 | + int rc; | |
318 | + | |
319 | + rc = ata_do_set_mode(ap, r_failed); | |
320 | + if (rc) | |
321 | + return rc; | |
308 | 322 | |
309 | 323 | for (i = 0; i < 2; i++) { |
310 | 324 | dev = &ap->device[i]; |
... | ... | @@ -323,6 +337,7 @@ |
323 | 337 | tmp |= (dev_mode[1] << 4); |
324 | 338 | writel(tmp, addr); |
325 | 339 | readl(addr); /* flush */ |
340 | + return 0; | |
326 | 341 | } |
327 | 342 | |
328 | 343 | static inline void __iomem *sil_scr_addr(struct ata_port *ap, unsigned int sc_reg) |