@@ -69,14 +69,11 @@ static int litex_check_csr_access(void __iomem *reg_addr)
69
69
70
70
struct litex_soc_ctrl_device {
71
71
void __iomem * base ;
72
- struct notifier_block reset_nb ;
73
72
};
74
73
75
- static int litex_reset_handler (struct notifier_block * this , unsigned long mode ,
76
- void * cmd )
74
+ static int litex_reset_handler (struct sys_off_data * data )
77
75
{
78
- struct litex_soc_ctrl_device * soc_ctrl_dev =
79
- container_of (this , struct litex_soc_ctrl_device , reset_nb );
76
+ struct litex_soc_ctrl_device * soc_ctrl_dev = data -> cb_data ;
80
77
81
78
litex_write32 (soc_ctrl_dev -> base + RESET_REG_OFF , RESET_REG_VALUE );
82
79
return NOTIFY_DONE ;
@@ -105,11 +102,9 @@ static int litex_soc_ctrl_probe(struct platform_device *pdev)
105
102
if (error )
106
103
return error ;
107
104
108
- platform_set_drvdata (pdev , soc_ctrl_dev );
109
-
110
- soc_ctrl_dev -> reset_nb .notifier_call = litex_reset_handler ;
111
- soc_ctrl_dev -> reset_nb .priority = 128 ;
112
- error = register_restart_handler (& soc_ctrl_dev -> reset_nb );
105
+ error = devm_register_restart_handler (& pdev -> dev ,
106
+ litex_reset_handler ,
107
+ soc_ctrl_dev );
113
108
if (error ) {
114
109
dev_warn (& pdev -> dev , "cannot register restart handler: %d\n" ,
115
110
error );
@@ -118,20 +113,12 @@ static int litex_soc_ctrl_probe(struct platform_device *pdev)
118
113
return 0 ;
119
114
}
120
115
121
- static void litex_soc_ctrl_remove (struct platform_device * pdev )
122
- {
123
- struct litex_soc_ctrl_device * soc_ctrl_dev = platform_get_drvdata (pdev );
124
-
125
- unregister_restart_handler (& soc_ctrl_dev -> reset_nb );
126
- }
127
-
128
116
static struct platform_driver litex_soc_ctrl_driver = {
129
117
.driver = {
130
118
.name = "litex-soc-controller" ,
131
119
.of_match_table = litex_soc_ctrl_of_match ,
132
120
},
133
121
.probe = litex_soc_ctrl_probe ,
134
- .remove = litex_soc_ctrl_remove ,
135
122
};
136
123
137
124
module_platform_driver (litex_soc_ctrl_driver );
0 commit comments