mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 04:23:35 +02:00
Few more SoC changes for omaps
Two changes to implement REBOOT_COLD for am335x. -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEkgNvrZJU/QSQYIcQG9Q+yVyrpXMFAmXgPJsRHHRvbnlAYXRv bWlkZS5jb20ACgkQG9Q+yVyrpXNVRBAAvVN5aHVqE2wcb+VPcDTz1ujgof9fZQoi sDdhZx0NDCF9AQ8T43ynj0q56pnkGAJs1TKL7XhsKfqvDXferp1s/7sYqrCoaBst bMfkoMpSQLwrbbICfoOKOmyG0XsTt6o0/NgPDQpv4km5/TAcnAj1cESwK873hrLM AEjrUqVYArVLvK5hPYzwyWZ69ItTFgs7JvmnOSJEQa8/yeIf08n6qdFQYS3aGWku tViaKgDEAvdkD29xEhoeoyIUw5AziBT69ggA+042AJzbvO1zVH1zQacf2kf0odS7 tZ5Ezh99bNyoQGeyQWKZE619XZWIm0Ni3oWyxYr7fWzMNvUT8vf5QzHX5kB1XooI H5blqQ9VjaQfyajB2NiN8PSEcS1X8PP/zXMBPC+VG8XljUthVKKYmF38KOjwY4th QbAWA0w2Eo9M36Y4ZBPW+gRxsxi1NlWjKdUV5Ql/LGXLNtLYljj/fHm+usgGiQfm njjPHdmJHVzY7GjBvf+xd5nuL9MTnluJXU11vsqouHIo+2CrNz6nOMsaK7bjfXjh w82o1jBC5bClatXqShk/do8tpRc+Z12AmrZ5JLD/Ko3mGEfuYXKfTFdGW9TRyW8c 0dmNBzgKuew1gQrLo57U2DDD7Uqs1O31LmjZseGS80GPWSAbf0URS4klzMaWj0a4 dKRp5V5SswM= =EoNX -----END PGP SIGNATURE----- gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmXl2DgACgkQYKtH/8kJ Uidqfg/9GQQBmEtpY8DVDwYTTDvHuhXiXlVy0IjPS1PGu4WorJuM49YuEVahRMGh ylL1rAin2mJdf+XTUHyWhJgFt0wx5DeS/AgWLSJ0uQl3IEKaOtLnYLv7BunKGnlo 247ekt6BPCHkxnq1/Sx0ovgNO/XLf/G/FHTEFKtnNmRN9Zouh+ay38Wy0eOOY0bS 3eFmwVKwcVpDwE+AANE6QHYJqFd1EGSX31wMokpt3HdRxGrvOKSfvVpL4+zOCdH4 +g8sdirg+LJxQBpoIbz3quwxSvmw/i3uisw40nL1LPDvAaw+UOXNbKfqgrzAl1AR YUL2kUWC4+7/5DUrzGy6APi10j9PUxmWicIvilsD91CRhB4qnVvg4wxg3hQoo2NF DkEisSN9pKpkQ54wwGYjjSI8EzGmyv8q3jB7syu0TZFm2piMHe341XVSDDxOgUFt rH25P84WRdW0KAANdGdxWlQJ/UoWcyVrO2bWxTntOo9p6EdBbIF1kl4anSX6KvDa JuHfIwMWutCb2cI6Vqllh07r07Tbs+krQU6YqO4f5IhEBKk5yZvFCd0wZXa/BXLX TJF6QkRZRBEd26Id/jt1CzTagU/gW5RwSfXa1KBqxaJVDEEWMfEFM+8aT8iDUWZ0 1dp+JSM8aB8RclkuHJkdSqRCn+qTDC6fKDDFd/1yq6k4u70I0I8= =ZWXU -----END PGP SIGNATURE----- Merge tag 'omap-for-v6.9/soc-part2-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into soc/arm Few more SoC changes for omaps Two changes to implement REBOOT_COLD for am335x. * tag 'omap-for-v6.9/soc-part2-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: ARM: AM33xx: PRM: Implement REBOOT_COLD ARM: AM33xx: PRM: Remove redundand defines Link: https://lore.kernel.org/r/pull-1709194504-639032@atomide.com Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
commit
b98ad40faa
|
|
@ -18,7 +18,8 @@
|
|||
*/
|
||||
void am33xx_restart(enum reboot_mode mode, const char *cmd)
|
||||
{
|
||||
/* TODO: Handle mode and cmd if necessary */
|
||||
/* TODO: Handle cmd if necessary */
|
||||
prm_reboot_mode = mode;
|
||||
|
||||
omap_prm_reset_system();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -246,6 +246,12 @@ DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)")
|
|||
.init_time = omap_init_time_of,
|
||||
.dt_compat = am33xx_boards_compat,
|
||||
.restart = am33xx_restart,
|
||||
/*
|
||||
* Historically am33xx supported only REBOOT_WARM even though default
|
||||
* reboot_mode was REBOOT_COLD. Reflect legacy de-facto behaviour in
|
||||
* SYSFS.
|
||||
*/
|
||||
.reboot_mode = REBOOT_WARM,
|
||||
MACHINE_END
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#define AM33XX_GFX_MEM_STATEST_MASK (0x3 << 4)
|
||||
#define AM33XX_GLOBAL_WARM_SW_RST_MASK (1 << 1)
|
||||
#define AM33XX_RST_GLOBAL_WARM_SW_MASK (1 << 0)
|
||||
#define AM33XX_RST_GLOBAL_COLD_SW_MASK (1 << 1)
|
||||
#define AM33XX_PRUSS_MEM_ONSTATE_MASK (0x3 << 5)
|
||||
#define AM33XX_PRUSS_MEM_RETSTATE_MASK (1 << 7)
|
||||
#define AM33XX_PRUSS_MEM_STATEST_MASK (0x3 << 23)
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
# ifndef __ASSEMBLER__
|
||||
extern struct omap_domain_base prm_base;
|
||||
extern u16 prm_features;
|
||||
extern enum reboot_mode prm_reboot_mode;
|
||||
int omap_prcm_init(void);
|
||||
int omap2_prcm_base_init(void);
|
||||
# endif
|
||||
|
|
|
|||
|
|
@ -10,15 +10,12 @@
|
|||
#include <linux/errno.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/reboot.h>
|
||||
|
||||
#include "powerdomain.h"
|
||||
#include "prm33xx.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 */
|
||||
static u32 am33xx_prm_read_reg(s16 inst, u16 idx)
|
||||
{
|
||||
|
|
@ -322,10 +319,19 @@ static int am33xx_check_vcvp(void)
|
|||
*
|
||||
* Immediately reboots the device through warm reset.
|
||||
*/
|
||||
static void am33xx_prm_global_warm_sw_reset(void)
|
||||
static void am33xx_prm_global_sw_reset(void)
|
||||
{
|
||||
am33xx_prm_rmw_reg_bits(AM33XX_RST_GLOBAL_WARM_SW_MASK,
|
||||
AM33XX_RST_GLOBAL_WARM_SW_MASK,
|
||||
/*
|
||||
* Historically AM33xx performed warm reset for all requested reboot_mode.
|
||||
* Keep this behaviour unchanged for all except newly added REBOOT_COLD.
|
||||
*/
|
||||
u32 mask = AM33XX_RST_GLOBAL_WARM_SW_MASK;
|
||||
|
||||
if (prm_reboot_mode == REBOOT_COLD)
|
||||
mask = AM33XX_RST_GLOBAL_COLD_SW_MASK;
|
||||
|
||||
am33xx_prm_rmw_reg_bits(mask,
|
||||
mask,
|
||||
AM33XX_PRM_DEVICE_MOD,
|
||||
AM33XX_PRM_RSTCTRL_OFFSET);
|
||||
|
||||
|
|
@ -386,7 +392,7 @@ static struct prm_ll_data am33xx_prm_ll_data = {
|
|||
.assert_hardreset = am33xx_prm_assert_hardreset,
|
||||
.deassert_hardreset = am33xx_prm_deassert_hardreset,
|
||||
.is_hardreset_asserted = am33xx_prm_is_hardreset_asserted,
|
||||
.reset_system = am33xx_prm_global_warm_sw_reset,
|
||||
.reset_system = am33xx_prm_global_sw_reset,
|
||||
};
|
||||
|
||||
int __init am33xx_prm_init(const struct omap_prcm_init_data *data)
|
||||
|
|
|
|||
|
|
@ -66,6 +66,12 @@ struct omap_domain_base prm_base;
|
|||
|
||||
u16 prm_features;
|
||||
|
||||
/*
|
||||
* Platforms that implement different reboot modes can store the requested
|
||||
* mode here.
|
||||
*/
|
||||
enum reboot_mode prm_reboot_mode;
|
||||
|
||||
/*
|
||||
* prm_ll_data: function pointers to SoC-specific implementations of
|
||||
* common PRM functions
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user