Skip to content

Commit 8090bea

Browse files
Phil Edworthygeertu
authored andcommitted
clk: renesas: rzg2l: Add support for RZ/V2M reset monitor reg
The RZ/V2M doesn't have a matching set of reset monitor regs for each reset reg like the RZ/G2L. Instead, it has a single CPG_RST_MON reg which has a single bit per module. Signed-off-by: Phil Edworthy <phil.edworthy@renesas.com> Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com> Link: https://lore.kernel.org/r/20220503115557.53370-10-phil.edworthy@renesas.com Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
1 parent 6380440 commit 8090bea

2 files changed

Lines changed: 17 additions & 3 deletions

File tree

drivers/clk/renesas/rzg2l-cpg.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1177,8 +1177,16 @@ static int rzg2l_cpg_status(struct reset_controller_dev *rcdev,
11771177
const struct rzg2l_cpg_info *info = priv->info;
11781178
unsigned int reg = info->resets[id].off;
11791179
u32 bitmask = BIT(info->resets[id].bit);
1180+
s8 monbit = info->resets[id].monbit;
11801181

1181-
return !(readl(priv->base + CLK_MRST_R(reg)) & bitmask);
1182+
if (info->has_clk_mon_regs) {
1183+
return !(readl(priv->base + CLK_MRST_R(reg)) & bitmask);
1184+
} else if (monbit >= 0) {
1185+
u32 monbitmask = BIT(monbit);
1186+
1187+
return !!(readl(priv->base + CPG_RST_MON) & monbitmask);
1188+
}
1189+
return -ENOTSUPP;
11821190
}
11831191

11841192
static const struct reset_control_ops rzg2l_cpg_reset_ops = {

drivers/clk/renesas/rzg2l-cpg.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#define CPG_PL6_SSEL (0x414)
2626
#define CPG_PL6_ETH_SSEL (0x418)
2727
#define CPG_PL5_SDIV (0x420)
28+
#define CPG_RST_MON (0x680)
2829
#define CPG_OTHERFUNC1_REG (0xBE8)
2930

3031
#define CPG_SIPLL5_STBY_RESETB BIT(0)
@@ -206,17 +207,22 @@ struct rzg2l_mod_clk {
206207
*
207208
* @off: register offset
208209
* @bit: reset bit
210+
* @monbit: monitor bit in CPG_RST_MON register, -1 if none
209211
*/
210212
struct rzg2l_reset {
211213
u16 off;
212214
u8 bit;
215+
s8 monbit;
213216
};
214217

215-
#define DEF_RST(_id, _off, _bit) \
218+
#define DEF_RST_MON(_id, _off, _bit, _monbit) \
216219
[_id] = { \
217220
.off = (_off), \
218-
.bit = (_bit) \
221+
.bit = (_bit), \
222+
.monbit = (_monbit) \
219223
}
224+
#define DEF_RST(_id, _off, _bit) \
225+
DEF_RST_MON(_id, _off, _bit, -1)
220226

221227
/**
222228
* struct rzg2l_cpg_info - SoC-specific CPG Description

0 commit comments

Comments
 (0)