diff options
Diffstat (limited to 'arch/powerpc/sysdev')
| -rw-r--r-- | arch/powerpc/sysdev/rtc_cmos_setup.c | 17 | 
1 files changed, 13 insertions, 4 deletions
diff --git a/arch/powerpc/sysdev/rtc_cmos_setup.c b/arch/powerpc/sysdev/rtc_cmos_setup.c index e276048b8c5..0c9ac7ee08f 100644 --- a/arch/powerpc/sysdev/rtc_cmos_setup.c +++ b/arch/powerpc/sysdev/rtc_cmos_setup.c @@ -20,14 +20,16 @@ static int  __init add_rtc(void)  {  	struct device_node *np;  	struct platform_device *pd; -	struct resource res; +	struct resource res[2];  	int ret; +	memset(&res, 0, sizeof(res)); +  	np = of_find_compatible_node(NULL, NULL, "pnpPNP,b00");  	if (!np)  		return -ENODEV; -	ret = of_address_to_resource(np, 0, &res); +	ret = of_address_to_resource(np, 0, &res[0]);  	of_node_put(np);  	if (ret)  		return ret; @@ -36,11 +38,18 @@ static int  __init add_rtc(void)  	 * RTC_PORT(x) is hardcoded in asm/mc146818rtc.h.  Verify that the  	 * address provided by the device node matches.  	 */ -	if (res.start != RTC_PORT(0)) +	if (res[0].start != RTC_PORT(0))  		return -EINVAL; +	/* Use a fixed interrupt value of 8 since on PPC if we are using this +	 * its off an i8259 which we ensure has interrupt numbers 0..15. */ +	res[1].start = 8; +	res[1].end = 8; +	res[1].flags = IORESOURCE_IRQ; +  	pd = platform_device_register_simple("rtc_cmos", -1, -					     &res, 1); +					     &res[0], 2); +  	if (IS_ERR(pd))  		return PTR_ERR(pd);  |