Lines Matching defs:lpcdev

93  * @lpcdev: pointer to hisi lpc device
101 static int hisi_lpc_target_in(struct hisi_lpc_dev *lpcdev,
110 if (!buf || !opcnt || !para || !para->csize || !lpcdev)
121 spin_lock_irqsave(&lpcdev->cycle_lock, flags);
123 writel_relaxed(opcnt, lpcdev->membase + LPC_REG_OP_LEN);
124 writel_relaxed(cmd_word, lpcdev->membase + LPC_REG_CMD);
125 writel_relaxed(addr, lpcdev->membase + LPC_REG_ADDR);
128 lpcdev->membase + LPC_REG_STARTUP_SIGNAL);
131 ret = wait_lpc_idle(lpcdev->membase, waitcnt);
133 spin_unlock_irqrestore(&lpcdev->cycle_lock, flags);
137 readsb(lpcdev->membase + LPC_REG_RDATA, buf, opcnt);
139 spin_unlock_irqrestore(&lpcdev->cycle_lock, flags);
146 * @lpcdev: pointer to hisi lpc device
154 static int hisi_lpc_target_out(struct hisi_lpc_dev *lpcdev,
163 if (!buf || !opcnt || !para || !lpcdev)
174 spin_lock_irqsave(&lpcdev->cycle_lock, flags);
176 writel_relaxed(opcnt, lpcdev->membase + LPC_REG_OP_LEN);
177 writel_relaxed(cmd_word, lpcdev->membase + LPC_REG_CMD);
178 writel_relaxed(addr, lpcdev->membase + LPC_REG_ADDR);
180 writesb(lpcdev->membase + LPC_REG_WDATA, buf, opcnt);
183 lpcdev->membase + LPC_REG_STARTUP_SIGNAL);
186 ret = wait_lpc_idle(lpcdev->membase, waitcnt);
188 spin_unlock_irqrestore(&lpcdev->cycle_lock, flags);
193 static unsigned long hisi_lpc_pio_to_addr(struct hisi_lpc_dev *lpcdev,
196 return pio - lpcdev->io_host->io_start + lpcdev->io_host->hw_start;
209 struct hisi_lpc_dev *lpcdev = hostdata;
215 if (!lpcdev || !dwidth || dwidth > LPC_MAX_DWIDTH)
218 addr = hisi_lpc_pio_to_addr(lpcdev, pio);
223 ret = hisi_lpc_target_in(lpcdev, &iopara, addr,
243 struct hisi_lpc_dev *lpcdev = hostdata;
249 if (!lpcdev || !dwidth || dwidth > LPC_MAX_DWIDTH)
253 addr = hisi_lpc_pio_to_addr(lpcdev, pio);
258 hisi_lpc_target_out(lpcdev, &iopara, addr, buf, dwidth);
275 struct hisi_lpc_dev *lpcdev = hostdata;
280 if (!lpcdev || !buf || !count || !dwidth || dwidth > LPC_MAX_DWIDTH)
288 addr = hisi_lpc_pio_to_addr(lpcdev, pio);
293 ret = hisi_lpc_target_in(lpcdev, &iopara, addr, buf, dwidth);
314 struct hisi_lpc_dev *lpcdev = hostdata;
319 if (!lpcdev || !buf || !count || !dwidth || dwidth > LPC_MAX_DWIDTH)
327 addr = hisi_lpc_pio_to_addr(lpcdev, pio);
329 if (hisi_lpc_target_out(lpcdev, &iopara, addr, buf, dwidth))
610 struct hisi_lpc_dev *lpcdev;
614 lpcdev = devm_kzalloc(dev, sizeof(*lpcdev), GFP_KERNEL);
615 if (!lpcdev)
618 spin_lock_init(&lpcdev->cycle_lock);
620 lpcdev->membase = devm_platform_ioremap_resource(pdev, 0);
621 if (IS_ERR(lpcdev->membase))
622 return PTR_ERR(lpcdev->membase);
631 range->hostdata = lpcdev;
633 lpcdev->io_host = range;
651 dev_set_drvdata(dev, lpcdev);
653 io_end = lpcdev->io_host->io_start + lpcdev->io_host->size;
655 &lpcdev->io_host->io_start, &io_end);
663 struct hisi_lpc_dev *lpcdev = dev_get_drvdata(dev);
664 struct logic_pio_hwaddr *range = lpcdev->io_host;