Loading drivers/rtc/rtc-pcap.c +12 −22 Original line number Diff line number Diff line Loading @@ -145,7 +145,8 @@ static int __init pcap_rtc_probe(struct platform_device *pdev) int timer_irq, alarm_irq; int err = -ENOMEM; pcap_rtc = kmalloc(sizeof(struct pcap_rtc), GFP_KERNEL); pcap_rtc = devm_kzalloc(&pdev->dev, sizeof(struct pcap_rtc), GFP_KERNEL); if (!pcap_rtc) return err; Loading @@ -153,45 +154,34 @@ static int __init pcap_rtc_probe(struct platform_device *pdev) platform_set_drvdata(pdev, pcap_rtc); pcap_rtc->rtc = rtc_device_register("pcap", &pdev->dev, pcap_rtc->rtc = devm_rtc_device_register(&pdev->dev, "pcap", &pcap_rtc_ops, THIS_MODULE); if (IS_ERR(pcap_rtc->rtc)) { err = PTR_ERR(pcap_rtc->rtc); goto fail_rtc; goto fail; } timer_irq = pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_1HZ); alarm_irq = pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_TODA); err = request_irq(timer_irq, pcap_rtc_irq, 0, "RTC Timer", pcap_rtc); err = devm_request_irq(&pdev->dev, timer_irq, pcap_rtc_irq, 0, "RTC Timer", pcap_rtc); if (err) goto fail_timer; goto fail; err = request_irq(alarm_irq, pcap_rtc_irq, 0, "RTC Alarm", pcap_rtc); err = devm_request_irq(&pdev->dev, alarm_irq, pcap_rtc_irq, 0, "RTC Alarm", pcap_rtc); if (err) goto fail_alarm; goto fail; return 0; fail_alarm: free_irq(timer_irq, pcap_rtc); fail_timer: rtc_device_unregister(pcap_rtc->rtc); fail_rtc: fail: platform_set_drvdata(pdev, NULL); kfree(pcap_rtc); return err; } static int __exit pcap_rtc_remove(struct platform_device *pdev) { struct pcap_rtc *pcap_rtc = platform_get_drvdata(pdev); free_irq(pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_1HZ), pcap_rtc); free_irq(pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_TODA), pcap_rtc); rtc_device_unregister(pcap_rtc->rtc); kfree(pcap_rtc); return 0; } Loading Loading
drivers/rtc/rtc-pcap.c +12 −22 Original line number Diff line number Diff line Loading @@ -145,7 +145,8 @@ static int __init pcap_rtc_probe(struct platform_device *pdev) int timer_irq, alarm_irq; int err = -ENOMEM; pcap_rtc = kmalloc(sizeof(struct pcap_rtc), GFP_KERNEL); pcap_rtc = devm_kzalloc(&pdev->dev, sizeof(struct pcap_rtc), GFP_KERNEL); if (!pcap_rtc) return err; Loading @@ -153,45 +154,34 @@ static int __init pcap_rtc_probe(struct platform_device *pdev) platform_set_drvdata(pdev, pcap_rtc); pcap_rtc->rtc = rtc_device_register("pcap", &pdev->dev, pcap_rtc->rtc = devm_rtc_device_register(&pdev->dev, "pcap", &pcap_rtc_ops, THIS_MODULE); if (IS_ERR(pcap_rtc->rtc)) { err = PTR_ERR(pcap_rtc->rtc); goto fail_rtc; goto fail; } timer_irq = pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_1HZ); alarm_irq = pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_TODA); err = request_irq(timer_irq, pcap_rtc_irq, 0, "RTC Timer", pcap_rtc); err = devm_request_irq(&pdev->dev, timer_irq, pcap_rtc_irq, 0, "RTC Timer", pcap_rtc); if (err) goto fail_timer; goto fail; err = request_irq(alarm_irq, pcap_rtc_irq, 0, "RTC Alarm", pcap_rtc); err = devm_request_irq(&pdev->dev, alarm_irq, pcap_rtc_irq, 0, "RTC Alarm", pcap_rtc); if (err) goto fail_alarm; goto fail; return 0; fail_alarm: free_irq(timer_irq, pcap_rtc); fail_timer: rtc_device_unregister(pcap_rtc->rtc); fail_rtc: fail: platform_set_drvdata(pdev, NULL); kfree(pcap_rtc); return err; } static int __exit pcap_rtc_remove(struct platform_device *pdev) { struct pcap_rtc *pcap_rtc = platform_get_drvdata(pdev); free_irq(pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_1HZ), pcap_rtc); free_irq(pcap_to_irq(pcap_rtc->pcap, PCAP_IRQ_TODA), pcap_rtc); rtc_device_unregister(pcap_rtc->rtc); kfree(pcap_rtc); return 0; } Loading