diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2008-03-22 23:41:22 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-04-24 10:09:18 -0400 |
commit | be0d67680d524981dd65c661efe3c9cbd52a684f (patch) | |
tree | c9f48421ee7396bcc593c0a0ef8415dd18e1eaba /drivers/scsi/aic7xxx/aic79xx_osm.h | |
parent | 93c20a59af4624aedf53f8320606b355aa951bc1 (diff) |
[SCSI] aic7xxx, aic79xx: deinline functions
Deinlines and moves big functions from .h to .c files.
Adds prototypes for ahc_lookup_scb and ahd_lookup_scb to .h files.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/aic7xxx/aic79xx_osm.h')
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.h | 176 |
1 files changed, 9 insertions, 167 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.h b/drivers/scsi/aic7xxx/aic79xx_osm.h index 853998be1474..b252803e05f6 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.h +++ b/drivers/scsi/aic7xxx/aic79xx_osm.h | |||
@@ -222,22 +222,6 @@ typedef struct timer_list ahd_timer_t; | |||
222 | /***************************** Timer Facilities *******************************/ | 222 | /***************************** Timer Facilities *******************************/ |
223 | #define ahd_timer_init init_timer | 223 | #define ahd_timer_init init_timer |
224 | #define ahd_timer_stop del_timer_sync | 224 | #define ahd_timer_stop del_timer_sync |
225 | typedef void ahd_linux_callback_t (u_long); | ||
226 | static __inline void ahd_timer_reset(ahd_timer_t *timer, int usec, | ||
227 | ahd_callback_t *func, void *arg); | ||
228 | |||
229 | static __inline void | ||
230 | ahd_timer_reset(ahd_timer_t *timer, int usec, ahd_callback_t *func, void *arg) | ||
231 | { | ||
232 | struct ahd_softc *ahd; | ||
233 | |||
234 | ahd = (struct ahd_softc *)arg; | ||
235 | del_timer(timer); | ||
236 | timer->data = (u_long)arg; | ||
237 | timer->expires = jiffies + (usec * HZ)/1000000; | ||
238 | timer->function = (ahd_linux_callback_t*)func; | ||
239 | add_timer(timer); | ||
240 | } | ||
241 | 225 | ||
242 | /***************************** SMP support ************************************/ | 226 | /***************************** SMP support ************************************/ |
243 | #include <linux/spinlock.h> | 227 | #include <linux/spinlock.h> |
@@ -386,111 +370,19 @@ struct ahd_platform_data { | |||
386 | #define malloc(size, type, flags) kmalloc(size, flags) | 370 | #define malloc(size, type, flags) kmalloc(size, flags) |
387 | #define free(ptr, type) kfree(ptr) | 371 | #define free(ptr, type) kfree(ptr) |
388 | 372 | ||
389 | static __inline void ahd_delay(long); | 373 | void ahd_delay(long); |
390 | static __inline void | ||
391 | ahd_delay(long usec) | ||
392 | { | ||
393 | /* | ||
394 | * udelay on Linux can have problems for | ||
395 | * multi-millisecond waits. Wait at most | ||
396 | * 1024us per call. | ||
397 | */ | ||
398 | while (usec > 0) { | ||
399 | udelay(usec % 1024); | ||
400 | usec -= 1024; | ||
401 | } | ||
402 | } | ||
403 | |||
404 | 374 | ||
405 | /***************************** Low Level I/O **********************************/ | 375 | /***************************** Low Level I/O **********************************/ |
406 | static __inline uint8_t ahd_inb(struct ahd_softc * ahd, long port); | 376 | uint8_t ahd_inb(struct ahd_softc * ahd, long port); |
407 | static __inline uint16_t ahd_inw_atomic(struct ahd_softc * ahd, long port); | 377 | uint16_t ahd_inw_atomic(struct ahd_softc * ahd, long port); |
408 | static __inline void ahd_outb(struct ahd_softc * ahd, long port, uint8_t val); | 378 | void ahd_outb(struct ahd_softc * ahd, long port, uint8_t val); |
409 | static __inline void ahd_outw_atomic(struct ahd_softc * ahd, | 379 | void ahd_outw_atomic(struct ahd_softc * ahd, |
410 | long port, uint16_t val); | 380 | long port, uint16_t val); |
411 | static __inline void ahd_outsb(struct ahd_softc * ahd, long port, | 381 | void ahd_outsb(struct ahd_softc * ahd, long port, |
412 | uint8_t *, int count); | 382 | uint8_t *, int count); |
413 | static __inline void ahd_insb(struct ahd_softc * ahd, long port, | 383 | void ahd_insb(struct ahd_softc * ahd, long port, |
414 | uint8_t *, int count); | 384 | uint8_t *, int count); |
415 | 385 | ||
416 | static __inline uint8_t | ||
417 | ahd_inb(struct ahd_softc * ahd, long port) | ||
418 | { | ||
419 | uint8_t x; | ||
420 | |||
421 | if (ahd->tags[0] == BUS_SPACE_MEMIO) { | ||
422 | x = readb(ahd->bshs[0].maddr + port); | ||
423 | } else { | ||
424 | x = inb(ahd->bshs[(port) >> 8].ioport + ((port) & 0xFF)); | ||
425 | } | ||
426 | mb(); | ||
427 | return (x); | ||
428 | } | ||
429 | |||
430 | static __inline uint16_t | ||
431 | ahd_inw_atomic(struct ahd_softc * ahd, long port) | ||
432 | { | ||
433 | uint8_t x; | ||
434 | |||
435 | if (ahd->tags[0] == BUS_SPACE_MEMIO) { | ||
436 | x = readw(ahd->bshs[0].maddr + port); | ||
437 | } else { | ||
438 | x = inw(ahd->bshs[(port) >> 8].ioport + ((port) & 0xFF)); | ||
439 | } | ||
440 | mb(); | ||
441 | return (x); | ||
442 | } | ||
443 | |||
444 | static __inline void | ||
445 | ahd_outb(struct ahd_softc * ahd, long port, uint8_t val) | ||
446 | { | ||
447 | if (ahd->tags[0] == BUS_SPACE_MEMIO) { | ||
448 | writeb(val, ahd->bshs[0].maddr + port); | ||
449 | } else { | ||
450 | outb(val, ahd->bshs[(port) >> 8].ioport + (port & 0xFF)); | ||
451 | } | ||
452 | mb(); | ||
453 | } | ||
454 | |||
455 | static __inline void | ||
456 | ahd_outw_atomic(struct ahd_softc * ahd, long port, uint16_t val) | ||
457 | { | ||
458 | if (ahd->tags[0] == BUS_SPACE_MEMIO) { | ||
459 | writew(val, ahd->bshs[0].maddr + port); | ||
460 | } else { | ||
461 | outw(val, ahd->bshs[(port) >> 8].ioport + (port & 0xFF)); | ||
462 | } | ||
463 | mb(); | ||
464 | } | ||
465 | |||
466 | static __inline void | ||
467 | ahd_outsb(struct ahd_softc * ahd, long port, uint8_t *array, int count) | ||
468 | { | ||
469 | int i; | ||
470 | |||
471 | /* | ||
472 | * There is probably a more efficient way to do this on Linux | ||
473 | * but we don't use this for anything speed critical and this | ||
474 | * should work. | ||
475 | */ | ||
476 | for (i = 0; i < count; i++) | ||
477 | ahd_outb(ahd, port, *array++); | ||
478 | } | ||
479 | |||
480 | static __inline void | ||
481 | ahd_insb(struct ahd_softc * ahd, long port, uint8_t *array, int count) | ||
482 | { | ||
483 | int i; | ||
484 | |||
485 | /* | ||
486 | * There is probably a more efficient way to do this on Linux | ||
487 | * but we don't use this for anything speed critical and this | ||
488 | * should work. | ||
489 | */ | ||
490 | for (i = 0; i < count; i++) | ||
491 | *array++ = ahd_inb(ahd, port); | ||
492 | } | ||
493 | |||
494 | /**************************** Initialization **********************************/ | 386 | /**************************** Initialization **********************************/ |
495 | int ahd_linux_register_host(struct ahd_softc *, | 387 | int ahd_linux_register_host(struct ahd_softc *, |
496 | struct scsi_host_template *); | 388 | struct scsi_host_template *); |
@@ -593,62 +485,12 @@ void ahd_linux_pci_exit(void); | |||
593 | int ahd_pci_map_registers(struct ahd_softc *ahd); | 485 | int ahd_pci_map_registers(struct ahd_softc *ahd); |
594 | int ahd_pci_map_int(struct ahd_softc *ahd); | 486 | int ahd_pci_map_int(struct ahd_softc *ahd); |
595 | 487 | ||
596 | static __inline uint32_t ahd_pci_read_config(ahd_dev_softc_t pci, | 488 | uint32_t ahd_pci_read_config(ahd_dev_softc_t pci, |
597 | int reg, int width); | 489 | int reg, int width); |
598 | 490 | void ahd_pci_write_config(ahd_dev_softc_t pci, | |
599 | static __inline uint32_t | ||
600 | ahd_pci_read_config(ahd_dev_softc_t pci, int reg, int width) | ||
601 | { | ||
602 | switch (width) { | ||
603 | case 1: | ||
604 | { | ||
605 | uint8_t retval; | ||
606 | |||
607 | pci_read_config_byte(pci, reg, &retval); | ||
608 | return (retval); | ||
609 | } | ||
610 | case 2: | ||
611 | { | ||
612 | uint16_t retval; | ||
613 | pci_read_config_word(pci, reg, &retval); | ||
614 | return (retval); | ||
615 | } | ||
616 | case 4: | ||
617 | { | ||
618 | uint32_t retval; | ||
619 | pci_read_config_dword(pci, reg, &retval); | ||
620 | return (retval); | ||
621 | } | ||
622 | default: | ||
623 | panic("ahd_pci_read_config: Read size too big"); | ||
624 | /* NOTREACHED */ | ||
625 | return (0); | ||
626 | } | ||
627 | } | ||
628 | |||
629 | static __inline void ahd_pci_write_config(ahd_dev_softc_t pci, | ||
630 | int reg, uint32_t value, | 491 | int reg, uint32_t value, |
631 | int width); | 492 | int width); |
632 | 493 | ||
633 | static __inline void | ||
634 | ahd_pci_write_config(ahd_dev_softc_t pci, int reg, uint32_t value, int width) | ||
635 | { | ||
636 | switch (width) { | ||
637 | case 1: | ||
638 | pci_write_config_byte(pci, reg, value); | ||
639 | break; | ||
640 | case 2: | ||
641 | pci_write_config_word(pci, reg, value); | ||
642 | break; | ||
643 | case 4: | ||
644 | pci_write_config_dword(pci, reg, value); | ||
645 | break; | ||
646 | default: | ||
647 | panic("ahd_pci_write_config: Write size too big"); | ||
648 | /* NOTREACHED */ | ||
649 | } | ||
650 | } | ||
651 | |||
652 | static __inline int ahd_get_pci_function(ahd_dev_softc_t); | 494 | static __inline int ahd_get_pci_function(ahd_dev_softc_t); |
653 | static __inline int | 495 | static __inline int |
654 | ahd_get_pci_function(ahd_dev_softc_t pci) | 496 | ahd_get_pci_function(ahd_dev_softc_t pci) |