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