ARM: AM33xx: PRM: move global warm reset implementation to driver
Moved the implementation from am33xx-restart.c to the prm33xx.c file to isolate the PRM register accesses to be private for PRM driver. Signed-off-by: Tero Kristo <t-kristo@ti.com> Acked-by: Paul Walmsley <paul@pwsan.com> Tested-by: Nishanth Menon <nm@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
88f9474f18
commit
840b7eb834
|
@ -24,12 +24,5 @@ void am33xx_restart(enum reboot_mode mode, const char *cmd)
|
||||||
{
|
{
|
||||||
/* TODO: Handle mode and cmd if necessary */
|
/* TODO: Handle mode and cmd if necessary */
|
||||||
|
|
||||||
am33xx_prm_rmw_reg_bits(AM33XX_RST_GLOBAL_WARM_SW_MASK,
|
am33xx_prm_global_warm_sw_reset();
|
||||||
AM33XX_RST_GLOBAL_WARM_SW_MASK,
|
|
||||||
AM33XX_PRM_DEVICE_MOD,
|
|
||||||
AM33XX_PRM_RSTCTRL_OFFSET);
|
|
||||||
|
|
||||||
/* OCP barrier */
|
|
||||||
(void)am33xx_prm_read_reg(AM33XX_PRM_DEVICE_MOD,
|
|
||||||
AM33XX_PRM_RSTCTRL_OFFSET);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
#include "prm33xx.h"
|
#include "prm33xx.h"
|
||||||
#include "prm-regbits-33xx.h"
|
#include "prm-regbits-33xx.h"
|
||||||
|
|
||||||
|
#define AM33XX_PRM_RSTCTRL_OFFSET 0x0000
|
||||||
|
|
||||||
|
#define AM33XX_RST_GLOBAL_WARM_SW_MASK (1 << 0)
|
||||||
|
|
||||||
/* Read a register in a PRM instance */
|
/* Read a register in a PRM instance */
|
||||||
u32 am33xx_prm_read_reg(s16 inst, u16 idx)
|
u32 am33xx_prm_read_reg(s16 inst, u16 idx)
|
||||||
{
|
{
|
||||||
|
@ -332,6 +336,23 @@ static int am33xx_check_vcvp(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* am33xx_prm_global_warm_sw_reset - reboot the device via warm reset
|
||||||
|
*
|
||||||
|
* Immediately reboots the device through warm reset.
|
||||||
|
*/
|
||||||
|
void am33xx_prm_global_warm_sw_reset(void)
|
||||||
|
{
|
||||||
|
am33xx_prm_rmw_reg_bits(AM33XX_RST_GLOBAL_WARM_SW_MASK,
|
||||||
|
AM33XX_RST_GLOBAL_WARM_SW_MASK,
|
||||||
|
AM33XX_PRM_DEVICE_MOD,
|
||||||
|
AM33XX_PRM_RSTCTRL_OFFSET);
|
||||||
|
|
||||||
|
/* OCP barrier */
|
||||||
|
(void)am33xx_prm_read_reg(AM33XX_PRM_DEVICE_MOD,
|
||||||
|
AM33XX_PRM_RSTCTRL_OFFSET);
|
||||||
|
}
|
||||||
|
|
||||||
struct pwrdm_ops am33xx_pwrdm_operations = {
|
struct pwrdm_ops am33xx_pwrdm_operations = {
|
||||||
.pwrdm_set_next_pwrst = am33xx_pwrdm_set_next_pwrst,
|
.pwrdm_set_next_pwrst = am33xx_pwrdm_set_next_pwrst,
|
||||||
.pwrdm_read_next_pwrst = am33xx_pwrdm_read_next_pwrst,
|
.pwrdm_read_next_pwrst = am33xx_pwrdm_read_next_pwrst,
|
||||||
|
|
Loading…
Reference in New Issue