lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120801201811.GK4701@darwin>
Date:	Wed, 1 Aug 2012 22:18:11 +0200
From:	Matthias Kaehlcke <matthias.list@...hlcke.net>
To:	Venu Byravarasu <vbyravarasu@...dia.com>
Cc:	a.zummo@...ertech.it, sameo@...ux.intel.com,
	broonie@...nsource.wolfsonmicro.com, ldewangan@...dia.com,
	kyle.manna@...l7.com, sboyd@...eaurora.org,
	rtc-linux@...glegroups.com, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] rtc: tps65910: Add RTC driver for TPS65910 PMIC RTC

hi,

El Wed, Aug 01, 2012 at 11:52:37AM +0530 Venu Byravarasu ha dit:

> TPS65910 PMIC is a MFD with RTC as one of the device.
> Adding RTC driver for supporting RTC device present
> inside TPS65910 PMIC.
> 
> Only support for RTC alarm is implemented as part of this patch.
> 
> Signed-off-by: Venu Byravarasu <vbyravarasu@...dia.com>
> ---

...

> +static irqreturn_t tps65910_rtc_interrupt(int irq, void *rtc)
> +{
> +	struct device *dev = rtc;
> +	unsigned long events = 0;
> +	struct tps65910 *tps = dev_get_drvdata(dev->parent);
> +	struct tps65910_rtc *tps_rtc = dev_get_drvdata(dev);
>
> ...
>
> +static int __devinit tps65910_rtc_probe(struct platform_device *pdev)
> +{
>
> ...
>
> +	ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
> +		tps65910_rtc_interrupt, IRQF_TRIGGER_LOW,
> +		"rtc-tps65910", &pdev->dev);
> +	if (ret < 0) {
> +		dev_err(&pdev->dev, "IRQ is not free.\n");
> +		return ret;
> +	}
> +	device_init_wakeup(&pdev->dev, 1);
> +
> +	tps_rtc->rtc = rtc_device_register(pdev->name, &pdev->dev,
> +		&tps65910_rtc_ops, THIS_MODULE);
> +	if (IS_ERR(tps_rtc->rtc)) {
> +		ret = PTR_ERR(tps_rtc->rtc);
> +		dev_err(&pdev->dev, "RTC device register: err %d\n", ret);
> +		return ret;
> +	}
> +
> +	platform_set_drvdata(pdev, tps_rtc);

the interrupt should be requested after this call. otherwise
tps65910_rtc_interrupt() could be executed before the RTC device is
registered and the driver data set. normally this shouldn't happen as
the RTC interrupts are disabled after reset, but the interrupts could
have been enabled for example by the bootloader

best regards

-- 
Matthias Kaehlcke
Embedded Linux Developer
Amsterdam

      Anyone who has never made a mistake has never tried anything new
                            (Albert Einstein)
                                                                 .''`.
    using free software / Debian GNU/Linux | http://debian.org  : :'  :
                                                                `. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4                  `-
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ