root/arch/powerpc/sysdev/of_rtc.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. of_instantiate_rtc

   1 // SPDX-License-Identifier: GPL-2.0-or-later
   2 /*
   3  * Instantiate mmio-mapped RTC chips based on device tree information
   4  *
   5  * Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation.
   6  */
   7 #include <linux/kernel.h>
   8 #include <linux/of.h>
   9 #include <linux/init.h>
  10 #include <linux/of_address.h>
  11 #include <linux/of_platform.h>
  12 #include <linux/slab.h>
  13 
  14 static __initdata struct {
  15         const char *compatible;
  16         char *plat_name;
  17 } of_rtc_table[] = {
  18         { "ds1743-nvram", "rtc-ds1742" },
  19 };
  20 
  21 void __init of_instantiate_rtc(void)
  22 {
  23         struct device_node *node;
  24         int err;
  25         int i;
  26 
  27         for (i = 0; i < ARRAY_SIZE(of_rtc_table); i++) {
  28                 char *plat_name = of_rtc_table[i].plat_name;
  29 
  30                 for_each_compatible_node(node, NULL,
  31                                          of_rtc_table[i].compatible) {
  32                         struct resource *res;
  33 
  34                         res = kmalloc(sizeof(*res), GFP_KERNEL);
  35                         if (!res) {
  36                                 printk(KERN_ERR "OF RTC: Out of memory "
  37                                        "allocating resource structure for %pOF\n",
  38                                        node);
  39                                 continue;
  40                         }
  41 
  42                         err = of_address_to_resource(node, 0, res);
  43                         if (err) {
  44                                 printk(KERN_ERR "OF RTC: Error "
  45                                        "translating resources for %pOF\n",
  46                                        node);
  47                                 continue;
  48                         }
  49 
  50                         printk(KERN_INFO "OF_RTC: %pOF is a %s @ 0x%llx-0x%llx\n",
  51                                node, plat_name,
  52                                (unsigned long long)res->start,
  53                                (unsigned long long)res->end);
  54                         platform_device_register_simple(plat_name, -1, res, 1);
  55                 }
  56         }
  57 }

/* [<][>][^][v][top][bottom][index][help] */