1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 3 * Copyright (C) 2009 Lemote Inc. 4 * Author: Wu Zhangjin, wuzhangjin@gmail.com 5 * Xiang Yu, xiangy@lemote.com 6 * Chen Huacai, chenhc@lemote.com 7 */ 8 9 #include <linux/err.h> 10 #include <linux/slab.h> 11 #include <linux/platform_device.h> 12 #include <asm/bootinfo.h> 13 #include <boot_param.h> 14 #include <loongson_hwmon.h> 15 #include <workarounds.h> 16 loongson3_platform_init(void)17static int __init loongson3_platform_init(void) 18 { 19 int i; 20 struct platform_device *pdev; 21 22 if (loongson_sysconf.ecname[0] != '\0') 23 platform_device_register_simple(loongson_sysconf.ecname, -1, NULL, 0); 24 25 for (i = 0; i < loongson_sysconf.nr_sensors; i++) { 26 if (loongson_sysconf.sensors[i].type > SENSOR_FAN) 27 continue; 28 29 pdev = kzalloc(sizeof(struct platform_device), GFP_KERNEL); 30 if (!pdev) 31 return -ENOMEM; 32 33 pdev->name = loongson_sysconf.sensors[i].name; 34 pdev->id = loongson_sysconf.sensors[i].id; 35 pdev->dev.platform_data = &loongson_sysconf.sensors[i]; 36 platform_device_register(pdev); 37 } 38 39 return 0; 40 } 41 42 arch_initcall(loongson3_platform_init); 43