[ARM] orion5x: ts78xx make more bulletproof the RTC load/unload code
Added checks to the platform_device_(register|add) calls so that if a device failed to load it would then not later be unloaded; also added the hooks so that it would not try to unload when the RTC driver support is compiled out. Signed-off-by: Alexander Clouter <alex@digriz.org.uk> Signed-off-by: Nicolas Pitre <nico@cam.org>
This commit is contained in:
parent
f1f5465782
commit
f5273fa310
|
@ -117,6 +117,7 @@ static struct platform_device ts78xx_ts_rtc_device = {
|
|||
*/
|
||||
static int ts78xx_ts_rtc_load(void)
|
||||
{
|
||||
int rc;
|
||||
unsigned char tmp_rtc0, tmp_rtc1;
|
||||
|
||||
tmp_rtc0 = ts78xx_ts_rtc_readbyte(126);
|
||||
|
@ -130,16 +131,18 @@ static int ts78xx_ts_rtc_load(void)
|
|||
&& ts78xx_ts_rtc_readbyte(126) == 0x00) {
|
||||
ts78xx_ts_rtc_writebyte(tmp_rtc0, 126);
|
||||
ts78xx_ts_rtc_writebyte(tmp_rtc1, 127);
|
||||
|
||||
if (ts78xx_fpga.supports.ts_rtc.init == 0) {
|
||||
ts78xx_fpga.supports.ts_rtc.init = 1;
|
||||
platform_device_register(&ts78xx_ts_rtc_device);
|
||||
rc = platform_device_register(&ts78xx_ts_rtc_device);
|
||||
if (!rc)
|
||||
ts78xx_fpga.supports.ts_rtc.init = 1;
|
||||
} else
|
||||
platform_device_add(&ts78xx_ts_rtc_device);
|
||||
return 0;
|
||||
rc = platform_device_add(&ts78xx_ts_rtc_device);
|
||||
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
ts78xx_fpga.supports.ts_rtc.present = 0;
|
||||
return -ENODEV;
|
||||
};
|
||||
|
||||
|
@ -150,7 +153,7 @@ static void ts78xx_ts_rtc_unload(void)
|
|||
#else
|
||||
static int ts78xx_ts_rtc_load(void)
|
||||
{
|
||||
return 0;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static void ts78xx_ts_rtc_unload(void)
|
||||
|
@ -184,8 +187,11 @@ static int ts78xx_fpga_load_devices(void)
|
|||
|
||||
if (ts78xx_fpga.supports.ts_rtc.present == 1) {
|
||||
tmp = ts78xx_ts_rtc_load();
|
||||
if (tmp)
|
||||
printk(KERN_INFO "TS-78xx RTC not detected or enabled\n");
|
||||
if (tmp) {
|
||||
printk(KERN_INFO "TS-78xx RTC"
|
||||
" not detected or enabled\n");
|
||||
ts78xx_fpga.supports.ts_rtc.present = 0;
|
||||
}
|
||||
ret |= tmp;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue