Lines Matching refs:zdev

39 static int zpci_set_airq(struct zpci_dev *zdev)
41 u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_REG_INT);
47 fib.fmt0.noi = airq_iv_end(zdev->aibv);
48 fib.fmt0.aibv = (unsigned long) zdev->aibv->vector;
49 fib.fmt0.aibvo = 0; /* each zdev has its own interrupt vector */
50 fib.fmt0.aisb = (unsigned long) zpci_sbv->vector + (zdev->aisb/64)*8;
51 fib.fmt0.aisbo = zdev->aisb & 63;
57 static int zpci_clear_airq(struct zpci_dev *zdev)
59 u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_DEREG_INT);
72 static int zpci_set_directed_irq(struct zpci_dev *zdev)
74 u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_REG_INT_D);
79 fib.fmt1.noi = zdev->msi_nr_irqs;
80 fib.fmt1.dibvo = zdev->msi_first_bit;
86 static int zpci_clear_directed_irq(struct zpci_dev *zdev)
88 u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_DEREG_INT_D);
237 struct zpci_dev *zdev = to_zpci(pdev);
245 zdev->aisb = -1UL;
246 zdev->msi_first_bit = -1U;
249 msi_vecs = min_t(unsigned int, nvec, zdev->max_msi);
261 zdev->aisb = bit;
264 zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA | AIRQ_IV_BITLOCK);
265 if (!zdev->aibv)
269 zpci_ibv[bit] = zdev->aibv;
298 msg.address_lo = zdev->msi_addr & 0xff0000ff;
305 msg.address_lo = zdev->msi_addr & 0xffffffff;
306 airq_iv_set_data(zdev->aibv, hwirq, irq);
308 msg.address_hi = zdev->msi_addr >> 32;
313 zdev->msi_first_bit = bit;
314 zdev->msi_nr_irqs = msi_vecs;
317 rc = zpci_set_directed_irq(zdev);
319 rc = zpci_set_airq(zdev);
328 struct zpci_dev *zdev = to_zpci(pdev);
334 rc = zpci_clear_directed_irq(zdev);
336 rc = zpci_clear_airq(zdev);
356 if (zdev->aisb != -1UL) {
357 zpci_ibv[zdev->aisb] = NULL;
358 airq_iv_free_bit(zpci_sbv, zdev->aisb);
359 zdev->aisb = -1UL;
361 if (zdev->aibv) {
362 airq_iv_release(zdev->aibv);
363 zdev->aibv = NULL;
366 if ((irq_delivery == DIRECTED) && zdev->msi_first_bit != -1U)
367 airq_iv_free(zpci_ibv[0], zdev->msi_first_bit, zdev->msi_nr_irqs);