Lines Matching defs:p2wi

84 struct p2wi {
96 struct p2wi *p2wi = dev_id;
99 status = readl(p2wi->regs + P2WI_INTS);
100 p2wi->status = status;
105 writel(status, p2wi->regs + P2WI_INTS);
107 complete(&p2wi->complete);
121 struct p2wi *p2wi = i2c_get_adapdata(adap);
124 if (p2wi->slave_addr >= 0 && addr != p2wi->slave_addr) {
132 writel(command, p2wi->regs + P2WI_DADDR0);
137 writel(data->byte, p2wi->regs + P2WI_DATA0);
139 writel(dlen, p2wi->regs + P2WI_DLEN);
141 if (readl(p2wi->regs + P2WI_CTRL) & P2WI_CTRL_START_TRANS) {
146 reinit_completion(&p2wi->complete);
149 p2wi->regs + P2WI_INTE);
152 p2wi->regs + P2WI_CTRL);
154 wait_for_completion(&p2wi->complete);
156 if (p2wi->status & P2WI_INTS_LOAD_BSY) {
161 if (p2wi->status & P2WI_INTS_TRANS_ERR) {
167 data->byte = readl(p2wi->regs + P2WI_DATA0);
178 { .compatible = "allwinner,sun6i-a31-p2wi" },
190 struct p2wi *p2wi;
214 p2wi = devm_kzalloc(dev, sizeof(struct p2wi), GFP_KERNEL);
215 if (!p2wi)
218 p2wi->slave_addr = -1;
221 * Authorize a p2wi node without any children to be able to use an
235 p2wi->slave_addr = slave_addr;
238 p2wi->regs = devm_platform_ioremap_resource(pdev, 0);
239 if (IS_ERR(p2wi->regs))
240 return PTR_ERR(p2wi->regs);
242 strscpy(p2wi->adapter.name, pdev->name, sizeof(p2wi->adapter.name));
247 p2wi->clk = devm_clk_get_enabled(dev, NULL);
248 if (IS_ERR(p2wi->clk)) {
249 ret = PTR_ERR(p2wi->clk);
254 parent_clk_freq = clk_get_rate(p2wi->clk);
256 p2wi->rstc = devm_reset_control_get_exclusive(dev, NULL);
257 if (IS_ERR(p2wi->rstc)) {
259 p2wi->rstc);
260 return PTR_ERR(p2wi->rstc);
263 ret = reset_control_deassert(p2wi->rstc);
269 init_completion(&p2wi->complete);
270 p2wi->adapter.dev.parent = dev;
271 p2wi->adapter.algo = &p2wi_algo;
272 p2wi->adapter.owner = THIS_MODULE;
273 p2wi->adapter.dev.of_node = pdev->dev.of_node;
274 platform_set_drvdata(pdev, p2wi);
275 i2c_set_adapdata(&p2wi->adapter, p2wi);
277 ret = devm_request_irq(dev, irq, p2wi_interrupt, 0, pdev->name, p2wi);
284 writel(P2WI_CTRL_SOFT_RST, p2wi->regs + P2WI_CTRL);
300 p2wi->regs + P2WI_CCR);
302 ret = i2c_add_adapter(&p2wi->adapter);
307 reset_control_assert(p2wi->rstc);
314 struct p2wi *p2wi = platform_get_drvdata(dev);
316 reset_control_assert(p2wi->rstc);
317 i2c_del_adapter(&p2wi->adapter);
324 .name = "i2c-sunxi-p2wi",