.. | .. |
---|
67 | 67 | sizeof(struct tcw), 0); |
---|
68 | 68 | } else { |
---|
69 | 69 | printk(KERN_WARNING "cio: orb indicates command mode\n"); |
---|
70 | | - if ((void *)(addr_t)orb->cmd.cpa == &private->sense_ccw || |
---|
71 | | - (void *)(addr_t)orb->cmd.cpa == cdev->private->iccws) |
---|
| 70 | + if ((void *)(addr_t)orb->cmd.cpa == |
---|
| 71 | + &private->dma_area->sense_ccw || |
---|
| 72 | + (void *)(addr_t)orb->cmd.cpa == |
---|
| 73 | + cdev->private->dma_area->iccws) |
---|
72 | 74 | printk(KERN_WARNING "cio: last channel program " |
---|
73 | 75 | "(intern):\n"); |
---|
74 | 76 | else |
---|
.. | .. |
---|
143 | 145 | void ccw_device_update_sense_data(struct ccw_device *cdev) |
---|
144 | 146 | { |
---|
145 | 147 | memset(&cdev->id, 0, sizeof(cdev->id)); |
---|
146 | | - cdev->id.cu_type = cdev->private->senseid.cu_type; |
---|
147 | | - cdev->id.cu_model = cdev->private->senseid.cu_model; |
---|
148 | | - cdev->id.dev_type = cdev->private->senseid.dev_type; |
---|
149 | | - cdev->id.dev_model = cdev->private->senseid.dev_model; |
---|
| 148 | + cdev->id.cu_type = cdev->private->dma_area->senseid.cu_type; |
---|
| 149 | + cdev->id.cu_model = cdev->private->dma_area->senseid.cu_model; |
---|
| 150 | + cdev->id.dev_type = cdev->private->dma_area->senseid.dev_type; |
---|
| 151 | + cdev->id.dev_model = cdev->private->dma_area->senseid.dev_model; |
---|
150 | 152 | } |
---|
151 | 153 | |
---|
152 | 154 | int ccw_device_test_sense_data(struct ccw_device *cdev) |
---|
153 | 155 | { |
---|
154 | | - return cdev->id.cu_type == cdev->private->senseid.cu_type && |
---|
155 | | - cdev->id.cu_model == cdev->private->senseid.cu_model && |
---|
156 | | - cdev->id.dev_type == cdev->private->senseid.dev_type && |
---|
157 | | - cdev->id.dev_model == cdev->private->senseid.dev_model; |
---|
| 156 | + return cdev->id.cu_type == |
---|
| 157 | + cdev->private->dma_area->senseid.cu_type && |
---|
| 158 | + cdev->id.cu_model == |
---|
| 159 | + cdev->private->dma_area->senseid.cu_model && |
---|
| 160 | + cdev->id.dev_type == |
---|
| 161 | + cdev->private->dma_area->senseid.dev_type && |
---|
| 162 | + cdev->id.dev_model == |
---|
| 163 | + cdev->private->dma_area->senseid.dev_model; |
---|
158 | 164 | } |
---|
159 | 165 | |
---|
160 | 166 | /* |
---|
.. | .. |
---|
342 | 348 | cio_disable_subchannel(sch); |
---|
343 | 349 | |
---|
344 | 350 | /* Reset device status. */ |
---|
345 | | - memset(&cdev->private->irb, 0, sizeof(struct irb)); |
---|
| 351 | + memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb)); |
---|
346 | 352 | |
---|
347 | 353 | cdev->private->state = state; |
---|
348 | 354 | |
---|
.. | .. |
---|
509 | 515 | ccw_device_done(cdev, DEV_STATE_ONLINE); |
---|
510 | 516 | /* Deliver fake irb to device driver, if needed. */ |
---|
511 | 517 | if (cdev->private->flags.fake_irb) { |
---|
512 | | - create_fake_irb(&cdev->private->irb, |
---|
| 518 | + create_fake_irb(&cdev->private->dma_area->irb, |
---|
513 | 519 | cdev->private->flags.fake_irb); |
---|
514 | 520 | cdev->private->flags.fake_irb = 0; |
---|
515 | 521 | if (cdev->handler) |
---|
516 | 522 | cdev->handler(cdev, cdev->private->intparm, |
---|
517 | | - &cdev->private->irb); |
---|
518 | | - memset(&cdev->private->irb, 0, sizeof(struct irb)); |
---|
| 523 | + &cdev->private->dma_area->irb); |
---|
| 524 | + memset(&cdev->private->dma_area->irb, 0, |
---|
| 525 | + sizeof(struct irb)); |
---|
519 | 526 | } |
---|
520 | 527 | ccw_device_report_path_events(cdev); |
---|
521 | 528 | ccw_device_handle_broken_paths(cdev); |
---|
.. | .. |
---|
672 | 679 | |
---|
673 | 680 | if (scsw_actl(&sch->schib.scsw) != 0 || |
---|
674 | 681 | (scsw_stctl(&sch->schib.scsw) & SCSW_STCTL_STATUS_PEND) || |
---|
675 | | - (scsw_stctl(&cdev->private->irb.scsw) & SCSW_STCTL_STATUS_PEND)) { |
---|
| 682 | + (scsw_stctl(&cdev->private->dma_area->irb.scsw) & |
---|
| 683 | + SCSW_STCTL_STATUS_PEND)) { |
---|
676 | 684 | /* |
---|
677 | 685 | * No final status yet or final status not yet delivered |
---|
678 | 686 | * to the device driver. Can't do path verification now, |
---|
.. | .. |
---|
719 | 727 | * - fast notification was requested (primary status) |
---|
720 | 728 | * - unsolicited interrupts |
---|
721 | 729 | */ |
---|
722 | | - stctl = scsw_stctl(&cdev->private->irb.scsw); |
---|
| 730 | + stctl = scsw_stctl(&cdev->private->dma_area->irb.scsw); |
---|
723 | 731 | ending_status = (stctl & SCSW_STCTL_SEC_STATUS) || |
---|
724 | 732 | (stctl == (SCSW_STCTL_ALERT_STATUS | SCSW_STCTL_STATUS_PEND)) || |
---|
725 | 733 | (stctl == SCSW_STCTL_STATUS_PEND); |
---|
.. | .. |
---|
735 | 743 | |
---|
736 | 744 | if (cdev->handler) |
---|
737 | 745 | cdev->handler(cdev, cdev->private->intparm, |
---|
738 | | - &cdev->private->irb); |
---|
| 746 | + &cdev->private->dma_area->irb); |
---|
739 | 747 | |
---|
740 | | - memset(&cdev->private->irb, 0, sizeof(struct irb)); |
---|
| 748 | + memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb)); |
---|
741 | 749 | return 1; |
---|
742 | 750 | } |
---|
743 | 751 | |
---|
.. | .. |
---|
759 | 767 | /* Unit check but no sense data. Need basic sense. */ |
---|
760 | 768 | if (ccw_device_do_sense(cdev, irb) != 0) |
---|
761 | 769 | goto call_handler_unsol; |
---|
762 | | - memcpy(&cdev->private->irb, irb, sizeof(struct irb)); |
---|
| 770 | + memcpy(&cdev->private->dma_area->irb, irb, |
---|
| 771 | + sizeof(struct irb)); |
---|
763 | 772 | cdev->private->state = DEV_STATE_W4SENSE; |
---|
764 | 773 | cdev->private->intparm = 0; |
---|
765 | 774 | return; |
---|
.. | .. |
---|
842 | 851 | if (scsw_fctl(&irb->scsw) & |
---|
843 | 852 | (SCSW_FCTL_CLEAR_FUNC | SCSW_FCTL_HALT_FUNC)) { |
---|
844 | 853 | cdev->private->flags.dosense = 0; |
---|
845 | | - memset(&cdev->private->irb, 0, sizeof(struct irb)); |
---|
| 854 | + memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb)); |
---|
846 | 855 | ccw_device_accumulate_irb(cdev, irb); |
---|
847 | 856 | goto call_handler; |
---|
848 | 857 | } |
---|