1*b562e72bSNiklas Söderlund // SPDX-License-Identifier: GPL-2.0 2*b562e72bSNiklas Söderlund /* 3*b562e72bSNiklas Söderlund * Copyright (C) 2026 Renesas Electronics Corp. 4*b562e72bSNiklas Söderlund * Copyright (C) 2026 Ideas on Board Oy 5*b562e72bSNiklas Söderlund * Copyright (C) 2026 Ragnatech AB 6*b562e72bSNiklas Söderlund */ 7*b562e72bSNiklas Söderlund 8*b562e72bSNiklas Söderlund #include "rppx1.h" 9*b562e72bSNiklas Söderlund #include "rpp_module.h" 10*b562e72bSNiklas Söderlund 11*b562e72bSNiklas Söderlund int rpp_module_probe(struct rpp_module *mod, struct rppx1 *rpp, 12*b562e72bSNiklas Söderlund const struct rpp_module_ops *ops, u32 base) 13*b562e72bSNiklas Söderlund { 14*b562e72bSNiklas Söderlund mod->rpp = rpp; 15*b562e72bSNiklas Söderlund mod->base = base; 16*b562e72bSNiklas Söderlund mod->ops = ops; 17*b562e72bSNiklas Söderlund 18*b562e72bSNiklas Söderlund if (ops->probe) 19*b562e72bSNiklas Söderlund return ops->probe(mod); 20*b562e72bSNiklas Söderlund 21*b562e72bSNiklas Söderlund return 0; 22*b562e72bSNiklas Söderlund } 23*b562e72bSNiklas Söderlund 24*b562e72bSNiklas Söderlund void rpp_module_write(struct rpp_module *mod, u32 offset, u32 value) 25*b562e72bSNiklas Söderlund { 26*b562e72bSNiklas Söderlund rppx1_write(mod->rpp, mod->base + offset, value); 27*b562e72bSNiklas Söderlund } 28*b562e72bSNiklas Söderlund 29*b562e72bSNiklas Söderlund u32 rpp_module_read(struct rpp_module *mod, u32 offset) 30*b562e72bSNiklas Söderlund { 31*b562e72bSNiklas Söderlund return rppx1_read(mod->rpp, mod->base + offset); 32*b562e72bSNiklas Söderlund } 33*b562e72bSNiklas Söderlund 34*b562e72bSNiklas Söderlund void rpp_module_clrset(struct rpp_module *mod, u32 offset, u32 mask, u32 value) 35*b562e72bSNiklas Söderlund { 36*b562e72bSNiklas Söderlund u32 reg = rpp_module_read(mod, offset) & ~mask; 37*b562e72bSNiklas Söderlund 38*b562e72bSNiklas Söderlund rpp_module_write(mod, offset, reg | value); 39*b562e72bSNiklas Söderlund } 40