static int __devinit cmos_pnp_probe(struct pnp_dev *pnp, const struct pnp_device_id *id) { cmos_wake_setup(&pnp->dev); if (pnp_port_start(pnp,0) == 0x70 && !pnp_irq_valid(pnp,0)) return cmos_do_probe(&pnp->dev, pnp_get_resource(pnp, IORESOURCE_IO, 0), 8); else return cmos_do_probe(&pnp->dev, pnp_get_resource(pnp, IORESOURCE_IO, 0), pnp_irq(pnp, 0)); }
static int __devinit cmos_pnp_probe(struct pnp_dev *pnp, const struct pnp_device_id *id) { if (pnp_port_start(pnp,0) == 0x70 && !pnp_irq_valid(pnp,0)) /* Some machines contain a PNP entry for the RTC, but * don't define the IRQ. It should always be safe to * hardcode it in these cases */ return cmos_do_probe(&pnp->dev, pnp_get_resource(pnp, IORESOURCE_IO, 0), 8); else return cmos_do_probe(&pnp->dev, pnp_get_resource(pnp, IORESOURCE_IO, 0), pnp_irq(pnp, 0)); }
static int __devinit cmos_pnp_probe(struct pnp_dev *pnp, const struct pnp_device_id *id) { cmos_wake_setup(&pnp->dev); if (pnp_port_start(pnp,0) == 0x70 && !pnp_irq_valid(pnp,0)) /* Some machines contain a PNP entry for the RTC, but * don't define the IRQ. It should always be safe to * hardcode it in these cases */ return cmos_do_probe(&pnp->dev, &pnp->res.port_resource[0], 8); else return cmos_do_probe(&pnp->dev, &pnp->res.port_resource[0], pnp->res.irq_resource[0].start); }
static int __init cmos_platform_probe(struct platform_device *pdev) { cmos_wake_setup(&pdev->dev); return cmos_do_probe(&pdev->dev, platform_get_resource(pdev, IORESOURCE_IO, 0), platform_get_irq(pdev, 0)); }
static int __devinit cmos_pnp_probe(struct pnp_dev *pnp, const struct pnp_device_id *id) { /* REVISIT paranoia argues for a shutdown notifier, since PNP * drivers can't provide shutdown() methods to disable IRQs. * Or better yet, fix PNP to allow those methods... */ if (pnp_port_start(pnp,0) == 0x70 && !pnp_irq_valid(pnp,0)) /* Some machines contain a PNP entry for the RTC, but * don't define the IRQ. It should always be safe to * hardcode it in these cases */ return cmos_do_probe(&pnp->dev, &pnp->res.port_resource[0], 8); else return cmos_do_probe(&pnp->dev, &pnp->res.port_resource[0], pnp->res.irq_resource[0].start); }
static int __devinit cmos_pnp_probe(struct pnp_dev *pnp, const struct pnp_device_id *id) { /* REVISIT paranoia argues for a shutdown notifier, since PNP * drivers can't provide shutdown() methods to disable IRQs. * Or better yet, fix PNP to allow those methods... */ return cmos_do_probe(&pnp->dev, &pnp->res.port_resource[0], pnp->res.irq_resource[0].start); }
static __init void cmos_of_init(struct platform_device *pdev) { struct device_node *node = pdev->dev.of_node; struct rtc_time time; int ret; const __be32 *val; if (!node) return; val = of_get_property(node, "ctrl-reg", NULL); if (val) CMOS_WRITE(be32_to_cpup(val), RTC_CONTROL); val = of_get_property(node, "freq-reg", NULL); if (val) CMOS_WRITE(be32_to_cpup(val), RTC_FREQ_SELECT); get_rtc_time(&time); ret = rtc_valid_tm(&time); if (ret) { struct rtc_time def_time = { .tm_year = 1, .tm_mday = 1, }; set_rtc_time(&def_time); } } #else static inline void cmos_of_init(struct platform_device *pdev) {} #define of_cmos_match NULL #endif /*----------------------------------------------------------------*/ /* Platform setup should have set up an RTC device, when PNP is * unavailable ... this could happen even on (older) PCs. */ static int __init cmos_platform_probe(struct platform_device *pdev) { cmos_of_init(pdev); cmos_wake_setup(&pdev->dev); return cmos_do_probe(&pdev->dev, platform_get_resource(pdev, IORESOURCE_IO, 0), platform_get_irq(pdev, 0)); }