diff options
Diffstat (limited to 'drivers/s390/cio/qdio.h')
-rw-r--r-- | drivers/s390/cio/qdio.h | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h index b5d303e79a24..43b840af5300 100644 --- a/drivers/s390/cio/qdio.h +++ b/drivers/s390/cio/qdio.h | |||
@@ -3,7 +3,9 @@ | |||
3 | 3 | ||
4 | #include <asm/page.h> | 4 | #include <asm/page.h> |
5 | 5 | ||
6 | #define VERSION_CIO_QDIO_H "$Revision: 1.37 $" | 6 | #include "schid.h" |
7 | |||
8 | #define VERSION_CIO_QDIO_H "$Revision: 1.40 $" | ||
7 | 9 | ||
8 | #ifdef CONFIG_QDIO_DEBUG | 10 | #ifdef CONFIG_QDIO_DEBUG |
9 | #define QDIO_VERBOSE_LEVEL 9 | 11 | #define QDIO_VERBOSE_LEVEL 9 |
@@ -317,7 +319,7 @@ do_eqbs(unsigned long sch, unsigned char *state, int queue, | |||
317 | 319 | ||
318 | 320 | ||
319 | static inline int | 321 | static inline int |
320 | do_siga_sync(unsigned int irq, unsigned int mask1, unsigned int mask2) | 322 | do_siga_sync(struct subchannel_id schid, unsigned int mask1, unsigned int mask2) |
321 | { | 323 | { |
322 | int cc; | 324 | int cc; |
323 | 325 | ||
@@ -331,7 +333,7 @@ do_siga_sync(unsigned int irq, unsigned int mask1, unsigned int mask2) | |||
331 | "ipm %0 \n\t" | 333 | "ipm %0 \n\t" |
332 | "srl %0,28 \n\t" | 334 | "srl %0,28 \n\t" |
333 | : "=d" (cc) | 335 | : "=d" (cc) |
334 | : "d" (irq), "d" (mask1), "d" (mask2) | 336 | : "d" (schid), "d" (mask1), "d" (mask2) |
335 | : "cc", "0", "1", "2", "3" | 337 | : "cc", "0", "1", "2", "3" |
336 | ); | 338 | ); |
337 | #else /* CONFIG_ARCH_S390X */ | 339 | #else /* CONFIG_ARCH_S390X */ |
@@ -344,7 +346,7 @@ do_siga_sync(unsigned int irq, unsigned int mask1, unsigned int mask2) | |||
344 | "ipm %0 \n\t" | 346 | "ipm %0 \n\t" |
345 | "srl %0,28 \n\t" | 347 | "srl %0,28 \n\t" |
346 | : "=d" (cc) | 348 | : "=d" (cc) |
347 | : "d" (irq), "d" (mask1), "d" (mask2) | 349 | : "d" (schid), "d" (mask1), "d" (mask2) |
348 | : "cc", "0", "1", "2", "3" | 350 | : "cc", "0", "1", "2", "3" |
349 | ); | 351 | ); |
350 | #endif /* CONFIG_ARCH_S390X */ | 352 | #endif /* CONFIG_ARCH_S390X */ |
@@ -352,7 +354,7 @@ do_siga_sync(unsigned int irq, unsigned int mask1, unsigned int mask2) | |||
352 | } | 354 | } |
353 | 355 | ||
354 | static inline int | 356 | static inline int |
355 | do_siga_input(unsigned int irq, unsigned int mask) | 357 | do_siga_input(struct subchannel_id schid, unsigned int mask) |
356 | { | 358 | { |
357 | int cc; | 359 | int cc; |
358 | 360 | ||
@@ -365,7 +367,7 @@ do_siga_input(unsigned int irq, unsigned int mask) | |||
365 | "ipm %0 \n\t" | 367 | "ipm %0 \n\t" |
366 | "srl %0,28 \n\t" | 368 | "srl %0,28 \n\t" |
367 | : "=d" (cc) | 369 | : "=d" (cc) |
368 | : "d" (irq), "d" (mask) | 370 | : "d" (schid), "d" (mask) |
369 | : "cc", "0", "1", "2", "memory" | 371 | : "cc", "0", "1", "2", "memory" |
370 | ); | 372 | ); |
371 | #else /* CONFIG_ARCH_S390X */ | 373 | #else /* CONFIG_ARCH_S390X */ |
@@ -377,7 +379,7 @@ do_siga_input(unsigned int irq, unsigned int mask) | |||
377 | "ipm %0 \n\t" | 379 | "ipm %0 \n\t" |
378 | "srl %0,28 \n\t" | 380 | "srl %0,28 \n\t" |
379 | : "=d" (cc) | 381 | : "=d" (cc) |
380 | : "d" (irq), "d" (mask) | 382 | : "d" (schid), "d" (mask) |
381 | : "cc", "0", "1", "2", "memory" | 383 | : "cc", "0", "1", "2", "memory" |
382 | ); | 384 | ); |
383 | #endif /* CONFIG_ARCH_S390X */ | 385 | #endif /* CONFIG_ARCH_S390X */ |
@@ -386,7 +388,7 @@ do_siga_input(unsigned int irq, unsigned int mask) | |||
386 | } | 388 | } |
387 | 389 | ||
388 | static inline int | 390 | static inline int |
389 | do_siga_output(unsigned long irq, unsigned long mask, __u32 *bb, | 391 | do_siga_output(unsigned long schid, unsigned long mask, __u32 *bb, |
390 | unsigned int fc) | 392 | unsigned int fc) |
391 | { | 393 | { |
392 | int cc; | 394 | int cc; |
@@ -418,7 +420,7 @@ do_siga_output(unsigned long irq, unsigned long mask, __u32 *bb, | |||
418 | ".long 0b,2b \n\t" | 420 | ".long 0b,2b \n\t" |
419 | ".previous \n\t" | 421 | ".previous \n\t" |
420 | : "=d" (cc), "=d" (busy_bit) | 422 | : "=d" (cc), "=d" (busy_bit) |
421 | : "d" (irq), "d" (mask), | 423 | : "d" (schid), "d" (mask), |
422 | "i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION) | 424 | "i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION) |
423 | : "cc", "0", "1", "2", "memory" | 425 | : "cc", "0", "1", "2", "memory" |
424 | ); | 426 | ); |
@@ -443,7 +445,7 @@ do_siga_output(unsigned long irq, unsigned long mask, __u32 *bb, | |||
443 | ".quad 0b,1b \n\t" | 445 | ".quad 0b,1b \n\t" |
444 | ".previous \n\t" | 446 | ".previous \n\t" |
445 | : "=d" (cc), "=d" (busy_bit) | 447 | : "=d" (cc), "=d" (busy_bit) |
446 | : "d" (irq), "d" (mask), | 448 | : "d" (schid), "d" (mask), |
447 | "i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION), "d" (fc) | 449 | "i" (QDIO_SIGA_ERROR_ACCESS_EXCEPTION), "d" (fc) |
448 | : "cc", "0", "1", "2", "memory" | 450 | : "cc", "0", "1", "2", "memory" |
449 | ); | 451 | ); |
@@ -554,7 +556,7 @@ struct qdio_q { | |||
554 | __u32 * dev_st_chg_ind; | 556 | __u32 * dev_st_chg_ind; |
555 | 557 | ||
556 | int is_input_q; | 558 | int is_input_q; |
557 | int irq; | 559 | struct subchannel_id schid; |
558 | struct ccw_device *cdev; | 560 | struct ccw_device *cdev; |
559 | 561 | ||
560 | unsigned int is_iqdio_q; | 562 | unsigned int is_iqdio_q; |
@@ -649,7 +651,7 @@ struct qdio_irq { | |||
649 | __u32 * volatile dev_st_chg_ind; | 651 | __u32 * volatile dev_st_chg_ind; |
650 | 652 | ||
651 | unsigned long int_parm; | 653 | unsigned long int_parm; |
652 | int irq; | 654 | struct subchannel_id schid; |
653 | 655 | ||
654 | unsigned int is_iqdio_irq; | 656 | unsigned int is_iqdio_irq; |
655 | unsigned int is_thinint_irq; | 657 | unsigned int is_thinint_irq; |