Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751623AbeAPPs1 (ORCPT + 1 other); Tue, 16 Jan 2018 10:48:27 -0500 Received: from outils.crapouillou.net ([89.234.176.41]:59468 "EHLO crapouillou.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751511AbeAPPsW (ORCPT ); Tue, 16 Jan 2018 10:48:22 -0500 From: Paul Cercueil To: Ralf Baechle , James Hogan Cc: Maarten ter Huurne , linux-kernel@vger.kernel.org, linux-mips@linux-mips.org, Paul Cercueil Subject: [PATCH v7 10/14] MIPS: ingenic: Detect machtype from SoC compatible string Date: Tue, 16 Jan 2018 16:48:00 +0100 Message-Id: <20180116154804.21150-11-paul@crapouillou.net> In-Reply-To: <20180116154804.21150-1-paul@crapouillou.net> References: <20180105182513.16248-2-paul@crapouillou.net> <20180116154804.21150-1-paul@crapouillou.net> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: Previously, the mips_machtype variable was always initialized to MACH_INGENIC_JZ4740 even if running on different SoCs. Signed-off-by: Paul Cercueil --- arch/mips/jz4740/prom.c | 1 - arch/mips/jz4740/setup.c | 22 +++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) v2: No change v3: No change v4: No change v5: Use SPDX license identifier v6: Init mips_machtype from DT compatible string instead of using MIPS_MACHINE v7: Fix system name not initialized diff --git a/arch/mips/jz4740/prom.c b/arch/mips/jz4740/prom.c index a62dd8e6ecf9..eb9f2f97bedb 100644 --- a/arch/mips/jz4740/prom.c +++ b/arch/mips/jz4740/prom.c @@ -25,7 +25,6 @@ void __init prom_init(void) { - mips_machtype = MACH_INGENIC_JZ4740; fw_init_cmdline(); } diff --git a/arch/mips/jz4740/setup.c b/arch/mips/jz4740/setup.c index 6d0152321819..afb40f8bce96 100644 --- a/arch/mips/jz4740/setup.c +++ b/arch/mips/jz4740/setup.c @@ -53,6 +53,16 @@ static void __init jz4740_detect_mem(void) add_memory_region(0, size, BOOT_MEM_RAM); } +static unsigned long __init get_board_mach_type(const void *fdt) +{ + if (!fdt_node_check_compatible(fdt, 0, "ingenic,jz4780")) + return MACH_INGENIC_JZ4780; + if (!fdt_node_check_compatible(fdt, 0, "ingenic,jz4770")) + return MACH_INGENIC_JZ4770; + + return MACH_INGENIC_JZ4740; +} + void __init plat_mem_setup(void) { int offset; @@ -63,6 +73,8 @@ void __init plat_mem_setup(void) offset = fdt_path_offset(__dtb_start, "/memory"); if (offset < 0) jz4740_detect_mem(); + + mips_machtype = get_board_mach_type(__dtb_start); } void __init device_tree_init(void) @@ -75,10 +87,14 @@ void __init device_tree_init(void) const char *get_system_type(void) { - if (IS_ENABLED(CONFIG_MACH_JZ4780)) + switch (mips_machtype) { + case MACH_INGENIC_JZ4780: return "JZ4780"; - - return "JZ4740"; + case MACH_INGENIC_JZ4770: + return "JZ4770"; + default: + return "JZ4740"; + } } void __init arch_init_irq(void) -- 2.11.0