Lines Matching refs:priv
216 static void ismt_desc_dump(struct ismt_priv *priv) in ismt_desc_dump() argument
218 struct device *dev = &priv->pci_dev->dev; in ismt_desc_dump()
219 struct ismt_desc *desc = &priv->hw[priv->head]; in ismt_desc_dump()
221 dev_dbg(dev, "Dump of the descriptor struct: 0x%X\n", priv->head); in ismt_desc_dump()
229 static void ismt_gen_reg_dump(struct ismt_priv *priv) in ismt_gen_reg_dump() argument
231 struct device *dev = &priv->pci_dev->dev; in ismt_gen_reg_dump()
235 priv->smba + ISMT_GR_GCTRL, in ismt_gen_reg_dump()
236 readl(priv->smba + ISMT_GR_GCTRL)); in ismt_gen_reg_dump()
238 priv->smba + ISMT_GR_SMTICL, in ismt_gen_reg_dump()
239 (long long unsigned int)readq(priv->smba + ISMT_GR_SMTICL)); in ismt_gen_reg_dump()
241 priv->smba + ISMT_GR_ERRINTMSK, in ismt_gen_reg_dump()
242 readl(priv->smba + ISMT_GR_ERRINTMSK)); in ismt_gen_reg_dump()
244 priv->smba + ISMT_GR_ERRAERMSK, in ismt_gen_reg_dump()
245 readl(priv->smba + ISMT_GR_ERRAERMSK)); in ismt_gen_reg_dump()
247 priv->smba + ISMT_GR_ERRSTS, in ismt_gen_reg_dump()
248 readl(priv->smba + ISMT_GR_ERRSTS)); in ismt_gen_reg_dump()
250 priv->smba + ISMT_GR_ERRINFO, in ismt_gen_reg_dump()
251 readl(priv->smba + ISMT_GR_ERRINFO)); in ismt_gen_reg_dump()
258 static void ismt_mstr_reg_dump(struct ismt_priv *priv) in ismt_mstr_reg_dump() argument
260 struct device *dev = &priv->pci_dev->dev; in ismt_mstr_reg_dump()
264 priv->smba + ISMT_MSTR_MDBA, in ismt_mstr_reg_dump()
265 (long long unsigned int)readq(priv->smba + ISMT_MSTR_MDBA)); in ismt_mstr_reg_dump()
267 priv->smba + ISMT_MSTR_MCTRL, in ismt_mstr_reg_dump()
268 readl(priv->smba + ISMT_MSTR_MCTRL)); in ismt_mstr_reg_dump()
270 priv->smba + ISMT_MSTR_MSTS, in ismt_mstr_reg_dump()
271 readl(priv->smba + ISMT_MSTR_MSTS)); in ismt_mstr_reg_dump()
273 priv->smba + ISMT_MSTR_MDS, in ismt_mstr_reg_dump()
274 readl(priv->smba + ISMT_MSTR_MDS)); in ismt_mstr_reg_dump()
276 priv->smba + ISMT_MSTR_RPOLICY, in ismt_mstr_reg_dump()
277 readl(priv->smba + ISMT_MSTR_RPOLICY)); in ismt_mstr_reg_dump()
279 priv->smba + ISMT_SPGT, in ismt_mstr_reg_dump()
280 readl(priv->smba + ISMT_SPGT)); in ismt_mstr_reg_dump()
287 static void ismt_submit_desc(struct ismt_priv *priv) in ismt_submit_desc() argument
292 ismt_desc_dump(priv); in ismt_submit_desc()
293 ismt_gen_reg_dump(priv); in ismt_submit_desc()
294 ismt_mstr_reg_dump(priv); in ismt_submit_desc()
297 fmhp = ((priv->head + 1) % ISMT_DESC_ENTRIES) << 16; in ismt_submit_desc()
298 val = readl(priv->smba + ISMT_MSTR_MCTRL); in ismt_submit_desc()
300 priv->smba + ISMT_MSTR_MCTRL); in ismt_submit_desc()
303 val = readl(priv->smba + ISMT_MSTR_MCTRL); in ismt_submit_desc()
305 priv->smba + ISMT_MSTR_MCTRL); in ismt_submit_desc()
318 struct ismt_priv *priv, int size, in ismt_process_desc() argument
321 u8 *dma_buffer = priv->dma_buffer; in ismt_process_desc()
323 dev_dbg(&priv->pci_dev->dev, "Processing completed descriptor\n"); in ismt_process_desc()
324 __ismt_desc_dump(&priv->pci_dev->dev, desc); in ismt_process_desc()
387 struct ismt_priv *priv = i2c_get_adapdata(adap); in ismt_access() local
388 struct device *dev = &priv->pci_dev->dev; in ismt_access()
390 desc = &priv->hw[priv->head]; in ismt_access()
393 memset(priv->dma_buffer, 0, sizeof(priv->dma_buffer)); in ismt_access()
400 if (likely(pci_dev_msi_enabled(priv->pci_dev))) in ismt_access()
442 priv->dma_buffer[0] = command; in ismt_access()
443 priv->dma_buffer[1] = data->byte; in ismt_access()
462 priv->dma_buffer[0] = command; in ismt_access()
463 priv->dma_buffer[1] = data->word & 0xff; in ismt_access()
464 priv->dma_buffer[2] = data->word >> 8; in ismt_access()
482 priv->dma_buffer[0] = command; in ismt_access()
483 priv->dma_buffer[1] = data->word & 0xff; in ismt_access()
484 priv->dma_buffer[2] = data->word >> 8; in ismt_access()
495 priv->dma_buffer[0] = command; in ismt_access()
496 memcpy(&priv->dma_buffer[1], &data->block[1], dma_size - 1); in ismt_access()
523 priv->dma_buffer[0] = command; in ismt_access()
524 memcpy(&priv->dma_buffer[1], &data->block[1], dma_size - 1); in ismt_access()
553 dev_dbg(dev, " dma_buffer=%p\n", priv->dma_buffer); in ismt_access()
558 priv->dma_buffer, in ismt_access()
564 priv->dma_buffer); in ismt_access()
575 reinit_completion(&priv->cmp); in ismt_access()
578 ismt_submit_desc(priv); in ismt_access()
581 time_left = wait_for_completion_timeout(&priv->cmp, HZ*1); in ismt_access()
594 ret = ismt_process_desc(desc, data, priv, size, read_write); in ismt_access()
598 priv->head++; in ismt_access()
599 priv->head %= ISMT_DESC_ENTRIES; in ismt_access()
634 static irqreturn_t ismt_handle_isr(struct ismt_priv *priv) in ismt_handle_isr() argument
636 complete(&priv->cmp); in ismt_handle_isr()
650 struct ismt_priv *priv = data; in ismt_do_interrupt() local
656 val = readl(priv->smba + ISMT_MSTR_MSTS); in ismt_do_interrupt()
662 priv->smba + ISMT_MSTR_MSTS); in ismt_do_interrupt()
664 return ismt_handle_isr(priv); in ismt_do_interrupt()
681 static void ismt_hw_init(struct ismt_priv *priv) in ismt_hw_init() argument
684 struct device *dev = &priv->pci_dev->dev; in ismt_hw_init()
687 writeq(priv->io_rng_dma, priv->smba + ISMT_MSTR_MDBA); in ismt_hw_init()
690 writel(ISMT_MCTRL_MEIE, priv->smba + ISMT_MSTR_MCTRL); in ismt_hw_init()
693 writel(0, priv->smba + ISMT_MSTR_MSTS); in ismt_hw_init()
696 val = readl(priv->smba + ISMT_MSTR_MDS); in ismt_hw_init()
698 priv->smba + ISMT_MSTR_MDS); in ismt_hw_init()
704 val = readl(priv->smba + ISMT_SPGT); in ismt_hw_init()
713 priv->smba + ISMT_SPGT); in ismt_hw_init()
719 priv->smba + ISMT_SPGT); in ismt_hw_init()
725 priv->smba + ISMT_SPGT); in ismt_hw_init()
731 priv->smba + ISMT_SPGT); in ismt_hw_init()
739 val = readl(priv->smba + ISMT_SPGT); in ismt_hw_init()
762 static int ismt_dev_init(struct ismt_priv *priv) in ismt_dev_init() argument
765 priv->hw = dmam_alloc_coherent(&priv->pci_dev->dev, in ismt_dev_init()
768 &priv->io_rng_dma, in ismt_dev_init()
770 if (!priv->hw) in ismt_dev_init()
773 memset(priv->hw, 0, (ISMT_DESC_ENTRIES * sizeof(struct ismt_desc))); in ismt_dev_init()
775 priv->head = 0; in ismt_dev_init()
776 init_completion(&priv->cmp); in ismt_dev_init()
785 static int ismt_int_init(struct ismt_priv *priv) in ismt_int_init() argument
790 err = pci_enable_msi(priv->pci_dev); in ismt_int_init()
794 err = devm_request_irq(&priv->pci_dev->dev, in ismt_int_init()
795 priv->pci_dev->irq, in ismt_int_init()
799 priv); in ismt_int_init()
801 pci_disable_msi(priv->pci_dev); in ismt_int_init()
809 dev_warn(&priv->pci_dev->dev, in ismt_int_init()
812 err = devm_request_irq(&priv->pci_dev->dev, in ismt_int_init()
813 priv->pci_dev->irq, in ismt_int_init()
817 priv); in ismt_int_init()
819 dev_err(&priv->pci_dev->dev, "no usable interrupts\n"); in ismt_int_init()
837 struct ismt_priv *priv; in ismt_probe() local
840 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); in ismt_probe()
841 if (!priv) in ismt_probe()
844 pci_set_drvdata(pdev, priv); in ismt_probe()
846 i2c_set_adapdata(&priv->adapter, priv); in ismt_probe()
847 priv->adapter.owner = THIS_MODULE; in ismt_probe()
848 priv->adapter.class = I2C_CLASS_HWMON; in ismt_probe()
849 priv->adapter.algo = &smbus_algorithm; in ismt_probe()
850 priv->adapter.dev.parent = &pdev->dev; in ismt_probe()
851 ACPI_COMPANION_SET(&priv->adapter.dev, ACPI_COMPANION(&pdev->dev)); in ismt_probe()
852 priv->adapter.retries = ISMT_MAX_RETRIES; in ismt_probe()
854 priv->pci_dev = pdev; in ismt_probe()
875 snprintf(priv->adapter.name, sizeof(priv->adapter.name), in ismt_probe()
878 dev_dbg(&priv->pci_dev->dev, " start=0x%lX\n", start); in ismt_probe()
879 dev_dbg(&priv->pci_dev->dev, " len=0x%lX\n", len); in ismt_probe()
895 priv->smba = pcim_iomap(pdev, SMBBAR, len); in ismt_probe()
896 if (!priv->smba) { in ismt_probe()
912 err = ismt_dev_init(priv); in ismt_probe()
916 ismt_hw_init(priv); in ismt_probe()
918 err = ismt_int_init(priv); in ismt_probe()
922 err = i2c_add_adapter(&priv->adapter); in ismt_probe()
936 struct ismt_priv *priv = pci_get_drvdata(pdev); in ismt_remove() local
938 i2c_del_adapter(&priv->adapter); in ismt_remove()