|
@@ -158,7 +158,8 @@ static int rs5c348_probe(struct spi_device *spi)
|
|
|
struct rtc_device *rtc;
|
|
|
struct rs5c348_plat_data *pdata;
|
|
|
|
|
|
- pdata = kzalloc(sizeof(struct rs5c348_plat_data), GFP_KERNEL);
|
|
|
+ pdata = devm_kzalloc(&spi->dev, sizeof(struct rs5c348_plat_data),
|
|
|
+ GFP_KERNEL);
|
|
|
if (!pdata)
|
|
|
return -ENOMEM;
|
|
|
spi->dev.platform_data = pdata;
|
|
@@ -202,7 +203,7 @@ static int rs5c348_probe(struct spi_device *spi)
|
|
|
if (ret & RS5C348_BIT_24H)
|
|
|
pdata->rtc_24h = 1;
|
|
|
|
|
|
- rtc = rtc_device_register(rs5c348_driver.driver.name, &spi->dev,
|
|
|
+ rtc = devm_rtc_device_register(&spi->dev, rs5c348_driver.driver.name,
|
|
|
&rs5c348_rtc_ops, THIS_MODULE);
|
|
|
|
|
|
if (IS_ERR(rtc)) {
|
|
@@ -214,18 +215,11 @@ static int rs5c348_probe(struct spi_device *spi)
|
|
|
|
|
|
return 0;
|
|
|
kfree_exit:
|
|
|
- kfree(pdata);
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
static int rs5c348_remove(struct spi_device *spi)
|
|
|
{
|
|
|
- struct rs5c348_plat_data *pdata = spi->dev.platform_data;
|
|
|
- struct rtc_device *rtc = pdata->rtc;
|
|
|
-
|
|
|
- if (rtc)
|
|
|
- rtc_device_unregister(rtc);
|
|
|
- kfree(pdata);
|
|
|
return 0;
|
|
|
}
|
|
|
|