Lines Matching refs:ctx
25 void (*reg_write)(struct regmap_mmio_context *ctx,
27 unsigned int (*reg_read)(struct regmap_mmio_context *ctx,
65 static void regmap_mmio_write8(struct regmap_mmio_context *ctx, in regmap_mmio_write8() argument
69 writeb(val, ctx->regs + reg); in regmap_mmio_write8()
72 static void regmap_mmio_write8_relaxed(struct regmap_mmio_context *ctx, in regmap_mmio_write8_relaxed() argument
76 writeb_relaxed(val, ctx->regs + reg); in regmap_mmio_write8_relaxed()
79 static void regmap_mmio_iowrite8(struct regmap_mmio_context *ctx, in regmap_mmio_iowrite8() argument
82 iowrite8(val, ctx->regs + reg); in regmap_mmio_iowrite8()
85 static void regmap_mmio_write16le(struct regmap_mmio_context *ctx, in regmap_mmio_write16le() argument
89 writew(val, ctx->regs + reg); in regmap_mmio_write16le()
92 static void regmap_mmio_write16le_relaxed(struct regmap_mmio_context *ctx, in regmap_mmio_write16le_relaxed() argument
96 writew_relaxed(val, ctx->regs + reg); in regmap_mmio_write16le_relaxed()
99 static void regmap_mmio_iowrite16le(struct regmap_mmio_context *ctx, in regmap_mmio_iowrite16le() argument
102 iowrite16(val, ctx->regs + reg); in regmap_mmio_iowrite16le()
105 static void regmap_mmio_write16be(struct regmap_mmio_context *ctx, in regmap_mmio_write16be() argument
109 writew(swab16(val), ctx->regs + reg); in regmap_mmio_write16be()
112 static void regmap_mmio_iowrite16be(struct regmap_mmio_context *ctx, in regmap_mmio_iowrite16be() argument
115 iowrite16be(val, ctx->regs + reg); in regmap_mmio_iowrite16be()
118 static void regmap_mmio_write32le(struct regmap_mmio_context *ctx, in regmap_mmio_write32le() argument
122 writel(val, ctx->regs + reg); in regmap_mmio_write32le()
125 static void regmap_mmio_write32le_relaxed(struct regmap_mmio_context *ctx, in regmap_mmio_write32le_relaxed() argument
129 writel_relaxed(val, ctx->regs + reg); in regmap_mmio_write32le_relaxed()
132 static void regmap_mmio_iowrite32le(struct regmap_mmio_context *ctx, in regmap_mmio_iowrite32le() argument
135 iowrite32(val, ctx->regs + reg); in regmap_mmio_iowrite32le()
138 static void regmap_mmio_write32be(struct regmap_mmio_context *ctx, in regmap_mmio_write32be() argument
142 writel(swab32(val), ctx->regs + reg); in regmap_mmio_write32be()
145 static void regmap_mmio_iowrite32be(struct regmap_mmio_context *ctx, in regmap_mmio_iowrite32be() argument
148 iowrite32be(val, ctx->regs + reg); in regmap_mmio_iowrite32be()
153 struct regmap_mmio_context *ctx = context; in regmap_mmio_write() local
156 if (!IS_ERR(ctx->clk)) { in regmap_mmio_write()
157 ret = clk_enable(ctx->clk); in regmap_mmio_write()
162 ctx->reg_write(ctx, reg, val); in regmap_mmio_write()
164 if (!IS_ERR(ctx->clk)) in regmap_mmio_write()
165 clk_disable(ctx->clk); in regmap_mmio_write()
173 struct regmap_mmio_context *ctx = context; in regmap_mmio_noinc_write() local
177 if (!IS_ERR(ctx->clk)) { in regmap_mmio_noinc_write()
178 ret = clk_enable(ctx->clk); in regmap_mmio_noinc_write()
189 if (ctx->big_endian && (ctx->val_bytes > 1)) { in regmap_mmio_noinc_write()
190 switch (ctx->val_bytes) { in regmap_mmio_noinc_write()
195 writew(swab16(valp[i]), ctx->regs + reg); in regmap_mmio_noinc_write()
202 writel(swab32(valp[i]), ctx->regs + reg); in regmap_mmio_noinc_write()
210 writeq(swab64(valp[i]), ctx->regs + reg); in regmap_mmio_noinc_write()
220 switch (ctx->val_bytes) { in regmap_mmio_noinc_write()
222 writesb(ctx->regs + reg, (const u8 *)val, val_count); in regmap_mmio_noinc_write()
225 writesw(ctx->regs + reg, (const u16 *)val, val_count); in regmap_mmio_noinc_write()
228 writesl(ctx->regs + reg, (const u32 *)val, val_count); in regmap_mmio_noinc_write()
232 writesq(ctx->regs + reg, (const u64 *)val, val_count); in regmap_mmio_noinc_write()
241 if (!IS_ERR(ctx->clk)) in regmap_mmio_noinc_write()
242 clk_disable(ctx->clk); in regmap_mmio_noinc_write()
247 static unsigned int regmap_mmio_read8(struct regmap_mmio_context *ctx, in regmap_mmio_read8() argument
250 return readb(ctx->regs + reg); in regmap_mmio_read8()
253 static unsigned int regmap_mmio_read8_relaxed(struct regmap_mmio_context *ctx, in regmap_mmio_read8_relaxed() argument
256 return readb_relaxed(ctx->regs + reg); in regmap_mmio_read8_relaxed()
259 static unsigned int regmap_mmio_ioread8(struct regmap_mmio_context *ctx, in regmap_mmio_ioread8() argument
262 return ioread8(ctx->regs + reg); in regmap_mmio_ioread8()
265 static unsigned int regmap_mmio_read16le(struct regmap_mmio_context *ctx, in regmap_mmio_read16le() argument
268 return readw(ctx->regs + reg); in regmap_mmio_read16le()
271 static unsigned int regmap_mmio_read16le_relaxed(struct regmap_mmio_context *ctx, in regmap_mmio_read16le_relaxed() argument
274 return readw_relaxed(ctx->regs + reg); in regmap_mmio_read16le_relaxed()
277 static unsigned int regmap_mmio_ioread16le(struct regmap_mmio_context *ctx, in regmap_mmio_ioread16le() argument
280 return ioread16(ctx->regs + reg); in regmap_mmio_ioread16le()
283 static unsigned int regmap_mmio_read16be(struct regmap_mmio_context *ctx, in regmap_mmio_read16be() argument
286 return swab16(readw(ctx->regs + reg)); in regmap_mmio_read16be()
289 static unsigned int regmap_mmio_ioread16be(struct regmap_mmio_context *ctx, in regmap_mmio_ioread16be() argument
292 return ioread16be(ctx->regs + reg); in regmap_mmio_ioread16be()
295 static unsigned int regmap_mmio_read32le(struct regmap_mmio_context *ctx, in regmap_mmio_read32le() argument
298 return readl(ctx->regs + reg); in regmap_mmio_read32le()
301 static unsigned int regmap_mmio_read32le_relaxed(struct regmap_mmio_context *ctx, in regmap_mmio_read32le_relaxed() argument
304 return readl_relaxed(ctx->regs + reg); in regmap_mmio_read32le_relaxed()
307 static unsigned int regmap_mmio_ioread32le(struct regmap_mmio_context *ctx, in regmap_mmio_ioread32le() argument
310 return ioread32(ctx->regs + reg); in regmap_mmio_ioread32le()
313 static unsigned int regmap_mmio_read32be(struct regmap_mmio_context *ctx, in regmap_mmio_read32be() argument
316 return swab32(readl(ctx->regs + reg)); in regmap_mmio_read32be()
319 static unsigned int regmap_mmio_ioread32be(struct regmap_mmio_context *ctx, in regmap_mmio_ioread32be() argument
322 return ioread32be(ctx->regs + reg); in regmap_mmio_ioread32be()
327 struct regmap_mmio_context *ctx = context; in regmap_mmio_read() local
330 if (!IS_ERR(ctx->clk)) { in regmap_mmio_read()
331 ret = clk_enable(ctx->clk); in regmap_mmio_read()
336 *val = ctx->reg_read(ctx, reg); in regmap_mmio_read()
338 if (!IS_ERR(ctx->clk)) in regmap_mmio_read()
339 clk_disable(ctx->clk); in regmap_mmio_read()
347 struct regmap_mmio_context *ctx = context; in regmap_mmio_noinc_read() local
350 if (!IS_ERR(ctx->clk)) { in regmap_mmio_noinc_read()
351 ret = clk_enable(ctx->clk); in regmap_mmio_noinc_read()
356 switch (ctx->val_bytes) { in regmap_mmio_noinc_read()
358 readsb(ctx->regs + reg, (u8 *)val, val_count); in regmap_mmio_noinc_read()
361 readsw(ctx->regs + reg, (u16 *)val, val_count); in regmap_mmio_noinc_read()
364 readsl(ctx->regs + reg, (u32 *)val, val_count); in regmap_mmio_noinc_read()
368 readsq(ctx->regs + reg, (u64 *)val, val_count); in regmap_mmio_noinc_read()
382 if (ctx->big_endian && (ctx->val_bytes > 1)) { in regmap_mmio_noinc_read()
383 switch (ctx->val_bytes) { in regmap_mmio_noinc_read()
402 if (!IS_ERR(ctx->clk)) in regmap_mmio_noinc_read()
403 clk_disable(ctx->clk); in regmap_mmio_noinc_read()
411 struct regmap_mmio_context *ctx = context; in regmap_mmio_free_context() local
413 if (!IS_ERR(ctx->clk)) { in regmap_mmio_free_context()
414 clk_unprepare(ctx->clk); in regmap_mmio_free_context()
415 if (!ctx->attached_clk) in regmap_mmio_free_context()
416 clk_put(ctx->clk); in regmap_mmio_free_context()
436 struct regmap_mmio_context *ctx; in regmap_mmio_gen_context() local
457 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); in regmap_mmio_gen_context()
458 if (!ctx) in regmap_mmio_gen_context()
461 ctx->regs = regs; in regmap_mmio_gen_context()
462 ctx->val_bytes = config->val_bits / 8; in regmap_mmio_gen_context()
463 ctx->clk = ERR_PTR(-ENODEV); in regmap_mmio_gen_context()
474 ctx->reg_read = regmap_mmio_ioread8; in regmap_mmio_gen_context()
475 ctx->reg_write = regmap_mmio_iowrite8; in regmap_mmio_gen_context()
477 ctx->reg_read = regmap_mmio_read8_relaxed; in regmap_mmio_gen_context()
478 ctx->reg_write = regmap_mmio_write8_relaxed; in regmap_mmio_gen_context()
480 ctx->reg_read = regmap_mmio_read8; in regmap_mmio_gen_context()
481 ctx->reg_write = regmap_mmio_write8; in regmap_mmio_gen_context()
486 ctx->reg_read = regmap_mmio_ioread16le; in regmap_mmio_gen_context()
487 ctx->reg_write = regmap_mmio_iowrite16le; in regmap_mmio_gen_context()
489 ctx->reg_read = regmap_mmio_read16le_relaxed; in regmap_mmio_gen_context()
490 ctx->reg_write = regmap_mmio_write16le_relaxed; in regmap_mmio_gen_context()
492 ctx->reg_read = regmap_mmio_read16le; in regmap_mmio_gen_context()
493 ctx->reg_write = regmap_mmio_write16le; in regmap_mmio_gen_context()
498 ctx->reg_read = regmap_mmio_ioread32le; in regmap_mmio_gen_context()
499 ctx->reg_write = regmap_mmio_iowrite32le; in regmap_mmio_gen_context()
501 ctx->reg_read = regmap_mmio_read32le_relaxed; in regmap_mmio_gen_context()
502 ctx->reg_write = regmap_mmio_write32le_relaxed; in regmap_mmio_gen_context()
504 ctx->reg_read = regmap_mmio_read32le; in regmap_mmio_gen_context()
505 ctx->reg_write = regmap_mmio_write32le; in regmap_mmio_gen_context()
517 ctx->big_endian = true; in regmap_mmio_gen_context()
521 ctx->reg_read = regmap_mmio_ioread8; in regmap_mmio_gen_context()
522 ctx->reg_write = regmap_mmio_iowrite8; in regmap_mmio_gen_context()
524 ctx->reg_read = regmap_mmio_read8; in regmap_mmio_gen_context()
525 ctx->reg_write = regmap_mmio_write8; in regmap_mmio_gen_context()
530 ctx->reg_read = regmap_mmio_ioread16be; in regmap_mmio_gen_context()
531 ctx->reg_write = regmap_mmio_iowrite16be; in regmap_mmio_gen_context()
533 ctx->reg_read = regmap_mmio_read16be; in regmap_mmio_gen_context()
534 ctx->reg_write = regmap_mmio_write16be; in regmap_mmio_gen_context()
539 ctx->reg_read = regmap_mmio_ioread32be; in regmap_mmio_gen_context()
540 ctx->reg_write = regmap_mmio_iowrite32be; in regmap_mmio_gen_context()
542 ctx->reg_read = regmap_mmio_read32be; in regmap_mmio_gen_context()
543 ctx->reg_write = regmap_mmio_write32be; in regmap_mmio_gen_context()
557 return ctx; in regmap_mmio_gen_context()
559 ctx->clk = clk_get(dev, clk_id); in regmap_mmio_gen_context()
560 if (IS_ERR(ctx->clk)) { in regmap_mmio_gen_context()
561 ret = PTR_ERR(ctx->clk); in regmap_mmio_gen_context()
565 ret = clk_prepare(ctx->clk); in regmap_mmio_gen_context()
567 clk_put(ctx->clk); in regmap_mmio_gen_context()
571 return ctx; in regmap_mmio_gen_context()
574 kfree(ctx); in regmap_mmio_gen_context()
585 struct regmap_mmio_context *ctx; in __regmap_init_mmio_clk() local
587 ctx = regmap_mmio_gen_context(dev, clk_id, regs, config); in __regmap_init_mmio_clk()
588 if (IS_ERR(ctx)) in __regmap_init_mmio_clk()
589 return ERR_CAST(ctx); in __regmap_init_mmio_clk()
591 return __regmap_init(dev, ®map_mmio, ctx, config, in __regmap_init_mmio_clk()
603 struct regmap_mmio_context *ctx; in __devm_regmap_init_mmio_clk() local
605 ctx = regmap_mmio_gen_context(dev, clk_id, regs, config); in __devm_regmap_init_mmio_clk()
606 if (IS_ERR(ctx)) in __devm_regmap_init_mmio_clk()
607 return ERR_CAST(ctx); in __devm_regmap_init_mmio_clk()
609 return __devm_regmap_init(dev, ®map_mmio, ctx, config, in __devm_regmap_init_mmio_clk()
616 struct regmap_mmio_context *ctx = map->bus_context; in regmap_mmio_attach_clk() local
618 ctx->clk = clk; in regmap_mmio_attach_clk()
619 ctx->attached_clk = true; in regmap_mmio_attach_clk()
621 return clk_prepare(ctx->clk); in regmap_mmio_attach_clk()
627 struct regmap_mmio_context *ctx = map->bus_context; in regmap_mmio_detach_clk() local
629 clk_unprepare(ctx->clk); in regmap_mmio_detach_clk()
631 ctx->attached_clk = false; in regmap_mmio_detach_clk()
632 ctx->clk = NULL; in regmap_mmio_detach_clk()