mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-04 12:54:37 +08:00
can: mcp251xfd: mcp251xfd_chip_clock_init(): prepare for PLL support, wait for OSC ready
This patch prepares the mcp251xfd_chip_clock_init() function for PLL support. If the PLL is needed is must be switched on after chip reset. This should be done in the mcp251xfd_chip_clock_init() function. Prepare this function to wait for the OSC and PLL to be ready. Link: https://lore.kernel.org/all/20220207131047.282110-14-mkl@pengutronix.de Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
a10fd91e42
commit
e39ea1360c
@ -429,7 +429,7 @@ static int mcp251xfd_chip_softreset(const struct mcp251xfd_priv *priv)
|
||||
|
||||
static int mcp251xfd_chip_clock_init(const struct mcp251xfd_priv *priv)
|
||||
{
|
||||
u32 osc;
|
||||
u32 osc, osc_reference, osc_mask;
|
||||
int err;
|
||||
|
||||
/* Activate Low Power Mode on Oscillator Disable. This only
|
||||
@ -439,10 +439,17 @@ static int mcp251xfd_chip_clock_init(const struct mcp251xfd_priv *priv)
|
||||
osc = MCP251XFD_REG_OSC_LPMEN |
|
||||
FIELD_PREP(MCP251XFD_REG_OSC_CLKODIV_MASK,
|
||||
MCP251XFD_REG_OSC_CLKODIV_10);
|
||||
osc_reference = MCP251XFD_REG_OSC_OSCRDY;
|
||||
osc_mask = MCP251XFD_REG_OSC_OSCRDY | MCP251XFD_REG_OSC_PLLRDY;
|
||||
|
||||
err = regmap_write(priv->map_reg, MCP251XFD_REG_OSC, osc);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = mcp251xfd_chip_wait_for_osc_ready(priv, osc_reference, osc_mask);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user