Lines Matching refs:zdev
39 static int zpci_set_airq(struct zpci_dev *zdev) in zpci_set_airq() argument
41 u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_REG_INT); in zpci_set_airq()
47 fib.fmt0.noi = airq_iv_end(zdev->aibv); in zpci_set_airq()
48 fib.fmt0.aibv = (unsigned long) zdev->aibv->vector; in zpci_set_airq()
50 fib.fmt0.aisb = (unsigned long) zpci_sbv->vector + (zdev->aisb/64)*8; in zpci_set_airq()
51 fib.fmt0.aisbo = zdev->aisb & 63; in zpci_set_airq()
57 static int zpci_clear_airq(struct zpci_dev *zdev) in zpci_clear_airq() argument
59 u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_DEREG_INT); in zpci_clear_airq()
72 static int zpci_set_directed_irq(struct zpci_dev *zdev) in zpci_set_directed_irq() argument
74 u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_REG_INT_D); in zpci_set_directed_irq()
79 fib.fmt1.noi = zdev->msi_nr_irqs; in zpci_set_directed_irq()
80 fib.fmt1.dibvo = zdev->msi_first_bit; in zpci_set_directed_irq()
86 static int zpci_clear_directed_irq(struct zpci_dev *zdev) in zpci_clear_directed_irq() argument
88 u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_DEREG_INT_D); in zpci_clear_directed_irq()
102 int zpci_set_irq(struct zpci_dev *zdev) in zpci_set_irq() argument
107 rc = zpci_set_directed_irq(zdev); in zpci_set_irq()
109 rc = zpci_set_airq(zdev); in zpci_set_irq()
112 zdev->irqs_registered = 1; in zpci_set_irq()
118 int zpci_clear_irq(struct zpci_dev *zdev) in zpci_clear_irq() argument
123 rc = zpci_clear_directed_irq(zdev); in zpci_clear_irq()
125 rc = zpci_clear_airq(zdev); in zpci_clear_irq()
128 zdev->irqs_registered = 0; in zpci_clear_irq()
267 struct zpci_dev *zdev = to_zpci(pdev); in arch_setup_msi_irqs() local
275 zdev->aisb = -1UL; in arch_setup_msi_irqs()
276 zdev->msi_first_bit = -1U; in arch_setup_msi_irqs()
279 msi_vecs = min_t(unsigned int, nvec, zdev->max_msi); in arch_setup_msi_irqs()
291 zdev->aisb = bit; in arch_setup_msi_irqs()
294 zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA | AIRQ_IV_BITLOCK); in arch_setup_msi_irqs()
295 if (!zdev->aibv) in arch_setup_msi_irqs()
299 zpci_ibv[bit] = zdev->aibv; in arch_setup_msi_irqs()
328 msg.address_lo = zdev->msi_addr & 0xff0000ff; in arch_setup_msi_irqs()
335 msg.address_lo = zdev->msi_addr & 0xffffffff; in arch_setup_msi_irqs()
336 airq_iv_set_data(zdev->aibv, hwirq, irq); in arch_setup_msi_irqs()
338 msg.address_hi = zdev->msi_addr >> 32; in arch_setup_msi_irqs()
343 zdev->msi_first_bit = bit; in arch_setup_msi_irqs()
344 zdev->msi_nr_irqs = msi_vecs; in arch_setup_msi_irqs()
346 rc = zpci_set_irq(zdev); in arch_setup_msi_irqs()
355 struct zpci_dev *zdev = to_zpci(pdev); in arch_teardown_msi_irqs() local
360 rc = zpci_clear_irq(zdev); in arch_teardown_msi_irqs()
376 if (zdev->aisb != -1UL) { in arch_teardown_msi_irqs()
377 zpci_ibv[zdev->aisb] = NULL; in arch_teardown_msi_irqs()
378 airq_iv_free_bit(zpci_sbv, zdev->aisb); in arch_teardown_msi_irqs()
379 zdev->aisb = -1UL; in arch_teardown_msi_irqs()
381 if (zdev->aibv) { in arch_teardown_msi_irqs()
382 airq_iv_release(zdev->aibv); in arch_teardown_msi_irqs()
383 zdev->aibv = NULL; in arch_teardown_msi_irqs()
386 if ((irq_delivery == DIRECTED) && zdev->msi_first_bit != -1U) in arch_teardown_msi_irqs()
387 airq_iv_free(zpci_ibv[0], zdev->msi_first_bit, zdev->msi_nr_irqs); in arch_teardown_msi_irqs()