cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

of_rtc.c (1384B)


      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
     14static __initdata struct {
     15	const char *compatible;
     16	char *plat_name;
     17} of_rtc_table[] = {
     18	{ "ds1743-nvram", "rtc-ds1742" },
     19};
     20
     21void __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}