diff --git a/drivers/mmi_info/Kbuild b/drivers/mmi_info/Kbuild index f0d26f830b91..1f6eb75aa7b2 100644 --- a/drivers/mmi_info/Kbuild +++ b/drivers/mmi_info/Kbuild @@ -2,7 +2,6 @@ EXTRA_CFLAGS += -Wall EXTRA_CFLAGS += -I$(TOP)/motorola/kernel/modules/include -mmi_info-objs += mmi_soc_info.o mmi_info-objs += mmi_storage_info.o mmi_info-objs += mmi_ram_info.o mmi_info-objs += mmi_unit_info.o diff --git a/drivers/mmi_info/mmi_info.h b/drivers/mmi_info/mmi_info.h index 0f3651290e85..4cb408335e3f 100644 --- a/drivers/mmi_info/mmi_info.h +++ b/drivers/mmi_info/mmi_info.h @@ -16,8 +16,6 @@ int mmi_storage_info_init(void); void mmi_storage_info_exit(void); -int mmi_soc_info_init(void); -void mmi_soc_info_exit(void); int mmi_ram_info_init(void); void mmi_ram_info_exit(void); int mmi_unit_info_init(void); diff --git a/drivers/mmi_info/mmi_info_main.c b/drivers/mmi_info/mmi_info_main.c index a54e2f0f1338..3890cab26100 100644 --- a/drivers/mmi_info/mmi_info_main.c +++ b/drivers/mmi_info/mmi_info_main.c @@ -92,7 +92,6 @@ static int __init mmi_hw_info_init(void) { mmi_of_populate_setup(); mmi_storage_info_init(); - mmi_soc_info_init(); mmi_ram_info_init(); mmi_unit_info_init(); mmi_boot_info_init(); @@ -102,7 +101,6 @@ static int __init mmi_hw_info_init(void) static void mmi_hw_info_exit(void) { mmi_storage_info_exit(); - mmi_soc_info_exit(); mmi_ram_info_exit(); mmi_unit_info_exit(); mmi_boot_info_exit(); diff --git a/drivers/mmi_info/mmi_ram_info.c b/drivers/mmi_info/mmi_ram_info.c index 30442a7dcfd4..fe11b1b4b55b 100644 --- a/drivers/mmi_info/mmi_ram_info.c +++ b/drivers/mmi_info/mmi_ram_info.c @@ -13,11 +13,20 @@ */ #include -#include +#include #include #include "mmi_info.h" +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) +#include +/* Match to + * vendor/qcom/nonhlos/boot_images/QcomPkg/SDMPkg/Include/smem_type.h + */ +#define SMEM_SDRAM_INFO 135 +#else +#include #define SMEM_SDRAM_INFO SMEM_ID_VENDOR1 +#endif static struct { unsigned int mr5; @@ -133,10 +142,20 @@ int mmi_ram_info_init(void) "Reserved" }; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) + ssize_t ddr_info_size; + smem_ddr_info = qcom_smem_get(QCOM_SMEM_HOST_ANY, + SMEM_SDRAM_INFO, + &ddr_info_size); + + if (smem_ddr_info != NULL && + sizeof(*smem_ddr_info) == ddr_info_size) { +#else smem_ddr_info = smem_alloc(SMEM_SDRAM_INFO, sizeof(*smem_ddr_info), 0, SMEM_ANY_HOST_FLAG); if (smem_ddr_info != NULL) { +#endif /* identify vendor */ vid = smem_ddr_info->mr5 & 0xFF; if (vid < ARRAY_SIZE(vendors)) diff --git a/drivers/mmi_info/mmi_soc_info.c b/drivers/mmi_info/mmi_soc_info.c deleted file mode 100644 index 0720eda4028e..000000000000 --- a/drivers/mmi_info/mmi_soc_info.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2013 - 2015 Motorola Mobility LLC - * Copyright (C) 2018 Motorola Mobility LLC - * - * This software is licensed under the terms of the GNU General Public - * License version 2, as published by the Free Software Foundation, and - * may be copied, distributed, and modified under those terms. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include -#include -#include -#include "mmi_info.h" - -static ssize_t version_show(struct kobject *kobj, - struct kobj_attribute *attr, char *buf) -{ - return snprintf(buf, 32, "%u.%u\n", - SOCINFO_VERSION_MAJOR(socinfo_get_version()), - SOCINFO_VERSION_MINOR(socinfo_get_version())); -} - -SYSFS_SIMPLE_SHOW(id, socinfo_get_id(), "%u", 32) -SYSFS_SIMPLE_SHOW(raw_id, socinfo_get_raw_id(), "%u", 32) -SYSFS_SIMPLE_SHOW(raw_version, socinfo_get_raw_version(), "%u", 32) -SYSFS_SIMPLE_SHOW(platform_type, socinfo_get_platform_type(), "%u", 32) -SYSFS_SIMPLE_SHOW(platform_version, socinfo_get_platform_version(), "%u", 32) -SYSFS_SIMPLE_SHOW(platform_subtype, socinfo_get_platform_subtype(), "%u", 32) - -SYSFS_ATTRIBUTE(version, 0444) -SYSFS_ATTRIBUTE(id, 0444) -SYSFS_ATTRIBUTE(raw_id, 0444) -SYSFS_ATTRIBUTE(raw_version, 0444) -SYSFS_ATTRIBUTE(platform_type, 0444) -SYSFS_ATTRIBUTE(platform_version, 0444) -SYSFS_ATTRIBUTE(platform_subtype, 0444) - -static struct attribute *soc_info_properties_attrs[] = { - &id_attr.attr, - &version_attr.attr, - &raw_id_attr.attr, - &raw_version_attr.attr, - &platform_type_attr.attr, - &platform_version_attr.attr, - &platform_subtype_attr.attr, - NULL -}; - -static struct attribute_group soc_info_properties_attr_group = { - .attrs = soc_info_properties_attrs, -}; - -static struct kobject *soc_info_properties_kobj; - -static void annotate_soc_info(void) -{ - mmi_annotate_persist("socinfo: id=%u, ", socinfo_get_id()); - mmi_annotate_persist("ver=%u.%u, ", - SOCINFO_VERSION_MAJOR(socinfo_get_version()), - SOCINFO_VERSION_MINOR(socinfo_get_version())); - mmi_annotate_persist("raw_id=%u, ", socinfo_get_raw_id()); - mmi_annotate_persist("raw_ver=%u, ", socinfo_get_raw_version()); - mmi_annotate_persist("hw_plat=%u, ", socinfo_get_platform_type()); - mmi_annotate_persist("hw_plat_ver=%u, ", socinfo_get_platform_version()); - mmi_annotate_persist("hw_plat_subtype=%u\n", socinfo_get_platform_subtype()); -} - -int mmi_soc_info_init(void) -{ - int ret = 0; - int status = 0; - - annotate_soc_info(); - - soc_info_properties_kobj = kobject_create_and_add("soc", NULL); - if (soc_info_properties_kobj) - status = sysfs_create_group(soc_info_properties_kobj, - &soc_info_properties_attr_group); - - if (!soc_info_properties_kobj || status) { - pr_err("%s: failed to create /sys/soc\n", __func__); - ret = 1; - goto err; - } - -err: - return ret; -} - -void mmi_soc_info_exit(void) -{ - sysfs_remove_group(soc_info_properties_kobj, - &soc_info_properties_attr_group); - kobject_del(soc_info_properties_kobj); -} diff --git a/drivers/mmi_info/mmi_unit_info.c b/drivers/mmi_info/mmi_unit_info.c index eaddc0a6f59d..fd3e9070df90 100644 --- a/drivers/mmi_info/mmi_unit_info.c +++ b/drivers/mmi_info/mmi_unit_info.c @@ -13,9 +13,9 @@ */ #include +#include #include #include -#include #include #include #include @@ -25,6 +25,16 @@ #include #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) +#include +/* Match to + * vendor/qcom/nonhlos/boot_images/QcomPkg/SDMPkg/Include/smem_type.h + */ +#define SMEM_ID_VENDOR0 134 +#else +#include +#endif + #define SMEM_KERNEL_RESERVE SMEM_ID_VENDOR0 static struct proc_dir_entry *unitinfo_procfs_file; @@ -83,6 +93,9 @@ static int mmi_unit_smem_setup(void) { int ret = 0; struct mmi_unit_info *mui_copy; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) + ssize_t mui_size; +#endif #define SMEM_KERNEL_RESERVE_SIZE 1024 mui_copy = kzalloc(SMEM_KERNEL_RESERVE_SIZE, GFP_KERNEL); @@ -125,10 +138,21 @@ static int mmi_unit_smem_setup(void) mui_copy->baseband, mui_copy->carrier, mui_copy->powerup_reason); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) + if(!qcom_smem_alloc(QCOM_SMEM_HOST_ANY, + SMEM_KERNEL_RESERVE, + SMEM_KERNEL_RESERVE_SIZE)) + mui = qcom_smem_get(QCOM_SMEM_HOST_ANY, + SMEM_KERNEL_RESERVE, + &mui_size); + + if (!mui || mui_size != SMEM_KERNEL_RESERVE_SIZE) { +#else mui = (struct mmi_unit_info *) smem_alloc(SMEM_KERNEL_RESERVE, SMEM_KERNEL_RESERVE_SIZE, 0, SMEM_ANY_HOST_FLAG); if (!mui) { +#endif pr_err("%s: failed to allocate mmi_unit_info in SMEM\n", __func__); ret = 1;