From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E783CC433EF for ; Wed, 6 Apr 2022 17:05:43 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id F17DC83DE9; Wed, 6 Apr 2022 19:05:40 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="qDgsKcHb"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 0978583DE7; Wed, 6 Apr 2022 19:05:39 +0200 (CEST) Received: from mail-qt1-x836.google.com (mail-qt1-x836.google.com [IPv6:2607:f8b0:4864:20::836]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id EC36083E14 for ; Wed, 6 Apr 2022 19:05:29 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=seanga2@gmail.com Received: by mail-qt1-x836.google.com with SMTP id s11so5418114qtc.3 for ; Wed, 06 Apr 2022 10:05:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=dYVvvCZPyfU/wi8CEBx/+qqx2dSDx+C7dUFji4l2g94=; b=qDgsKcHb5VVMoGOJhiO7UtRYyGlQqMXNSv8skODf+M2HDtVWyKCAiD8mjdVx/ekl8v BgAnVN6HGYxDBm4GlUOvO4NUsHvNbGTPToArxUgoP2JTjYBfGecNdbdj3YRnr7/50dE/ J2qeAJB6er5dCq85MzEO894sV4bvwmf8KR4+BX1bjBtBFJwxs6K/JQnLyztLVkmQkvym Oje0X3CtkBbVDE3FjIZPZF3tdWejWIrA80tnhtKaj1/MGr4myl6Jxc9Axv1QLMUEqbWx OqpTGLcOsnI68cIA3dAmU1ngCgReDHrAVFSI2/FcBr7jcvZtQJ2sULCUrI0mrXPKrez+ g8dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=dYVvvCZPyfU/wi8CEBx/+qqx2dSDx+C7dUFji4l2g94=; b=VcALzchZyqGhe9QMYhWGlH5IJ4NYQfXnjclUDzdKuXn+HVLgX1LhgPCTCsoN3ha91n 0qah+aHfJwuCExxc9HbnwVqv79Uxy+0tQvgDQk9PeYsWTfg1TFN3qNupohg+IedrO1lJ fs1RcT228stEFDbjcZ3VoN+xKLg28tF8cmh+tbLczSxQHW5N12D/Zz9p0DEJDI8ZcXh0 D57nW3BucOpfoX367yaTCEmy9o1ybceAPmQ2Btcoa+EKWpkveYRRCqtpkRH4ckl882s+ 2hv/A0BVxJ1PgBAL1ygmsTUK261yRlTpiLbtZSbTFDw+9R92gOZRSQ1ncgzF+3VOPjEi xc1A== X-Gm-Message-State: AOAM5320idDoRddqc4AhKPa0yOgTu/pfTFUvNRdLdHAWlSz6/JqQKODR 6mdfrePBrQQhrY+2uXHhqNw= X-Google-Smtp-Source: ABdhPJy+u6DHAfWtfrLcIbIDG58GOIRaArfr5UmHtrGFROt1RZvhyDpb5Zr7+ruT4e+dsX61HWmtIg== X-Received: by 2002:ac8:4e45:0:b0:2e2:2da5:24be with SMTP id e5-20020ac84e45000000b002e22da524bemr8389229qtw.57.1649264728439; Wed, 06 Apr 2022 10:05:28 -0700 (PDT) Received: from [192.168.1.201] (pool-108-18-137-133.washdc.fios.verizon.net. [108.18.137.133]) by smtp.googlemail.com with ESMTPSA id u13-20020a05622a010d00b002e1d653c2e1sm13693020qtw.46.2022.04.06.10.05.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 06 Apr 2022 10:05:28 -0700 (PDT) Subject: Re: [RFC PATCH] mips: dts: add initial support for ls1c300 SoC To: "dhu@hodcarrier.org" , u-boot Cc: "weijie.gao" , "jiaxun.yang" , lukma References: <20220329193001.29435-1-dhu@hodcarrier.org> <402204aa-e6ce-84a3-c7df-1d506527423d@gmail.com> <2022040617221660911018@hodcarrier.org> From: Sean Anderson Message-ID: Date: Wed, 6 Apr 2022 13:05:27 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <2022040617221660911018@hodcarrier.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean On 4/6/22 5:22 AM, dhu@hodcarrier.org wrote: > Hi,=C2=A0Sean, > thank=C2=A0you=C2=A0for=C2=A0the=C2=A0comments,=C2=A0I=C2=A0have=C2=A0f= ix=C2=A0most=C2=A0issues=C2=A0and=C2=A0sent=C2=A0a=C2=A0v2=C2=A0patch. >=20 >> =C2=A0>=C2=A0See=C2=A0Techinical=C2=A0Reference=C2=A0Manual=C2=A0for=C2= =A0details:=C2=A0https://www.loongson.cn/ >> =20 >> =C2=A0Can=C2=A0you=C2=A0provide=C2=A0a=C2=A0direct=C2=A0link=C2=A0ple= ase?=C2=A0I=C2=A0looked=C2=A0around=C2=A0a=C2=A0bit=C2=A0but=C2=A0I=C2=A0= don't >> =C2=A0read=C2=A0Chinese=C2=A0and=C2=A0I=C2=A0was=C2=A0unable=C2=A0to=C2= =A0figure=C2=A0out=C2=A0where=C2=A0to=C2=A0find=C2=A0more >> =C2=A0documentation=C2=A0on=C2=A0this=C2=A0CPU. > I=C2=A0can't=C2=A0find=C2=A0direct=C2=A0link=C2=A0too,=C2=A0register=C2= =A0is=C2=A0required=C2=A0to=C2=A0access=C2=A0this=C2=A0documents. That's fine. A link to the CPU repo https://github.com/trivialmips/nontrivial-mips wou= ld be nice. >> =C2=A0How=C2=A0does=C2=A0this=C2=A0boot?=C2=A0JTAG? > use=C2=A0a=C2=A0flash=C2=A0programer=C2=A0and=C2=A0write=C2=A0the=C2=A0= u-boot-with-spl.bin=C2=A0to=C2=A0the=C2=A0spi=C2=A0nor > flash.=C2=A0or=C2=A0load=C2=A0the=C2=A0ELF=C2=A0file=C2=A0`u-boot'=C2=A0= by=C2=A0the=C2=A0shipped=C2=A0bootloader=C2=A0via=C2=A0tftp. Please add a binding for the SPI device at least (since that seems to be = what you are using). >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+/*=C2=A0PLL=C2=A0*/ >> =C2=A0>=C2=A0+#define=C2=A0NAND_BASE 0xbfe78000 >> =C2=A0>=C2=A0+#define=C2=A0START_FREQ 0xbfe78030 >> =C2=A0>=C2=A0+#define=C2=A0CLK_DIV_PARAM 0xbfe78034 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+/*=C2=A0SPI=C2=A0*/ >> =C2=A0>=C2=A0+#define=C2=A0SPI0_BASE 0xbfe80000 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+/*=C2=A0SDRAM=C2=A0*/ >> =C2=A0>=C2=A0+#define SD_CONFIG 0xbfd00000 >> =C2=A0>=C2=A0+#define SD_CONFIGL 0xbfd00410 >> =C2=A0>=C2=A0+#define SD_CONFIGH 0xbfd00414 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ .set=C2=A0noreorder >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+/* PLL:=C2=A0264MHz CPU:=C2=A0132MHz SDRAM:=C2=A066MHz = */ >> =C2=A0>=C2=A0+LEAF(ls1c300_pll_init) >> =C2=A0>=C2=A0+#ifndef=C2=A0CONFIG_SKIP_LOWLEVEL_INIT >> =C2=A0>=C2=A0+ li t0,=C2=A0NAND_BASE >> =C2=A0>=C2=A0+ li t2,=C2=A0555844098 >> =C2=A0>=C2=A0+ sw t2,=C2=A00x34=C2=A0(t0) >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ li t1,=C2=A02147494924 >> =C2=A0>=C2=A0+ sw t1,=C2=A00x30=C2=A0(t0) >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ ori t2,=C2=A01 >> =C2=A0>=C2=A0+ sw t2,=C2=A00x34=C2=A0(t0) >> =C2=A0>=C2=A0+#endif >> =C2=A0>=C2=A0+/*=C2=A0TODO:=C2=A0recalc=C2=A0rate=C2=A0to=C2=A0v0=C2=A0= */ >> =C2=A0>=C2=A0+ li v0,=C2=A0132000000 >> =C2=A0>=C2=A0+ jr ra >> =C2=A0>=C2=A0+ =C2=A0=C2=A0nop >> =C2=A0>=C2=A0+END(ls1c300_pll_init) >> =20 >> =C2=A0Why=C2=A0does=C2=A0this=C2=A0need=C2=A0to=C2=A0be=C2=A0done=C2=A0= in=C2=A0assembly?=C2=A0Ditto=C2=A0for=C2=A0the=C2=A0rest. > this=C2=A0SoC=C2=A0don't=C2=A0have=C2=A0onchip=C2=A0sram=C2=A0to=C2=A0u= se=C2=A0for=C2=A0initial=C2=A0stack.=C2=A0assembly=C2=A0code > prepare=C2=A0a=C2=A0working=C2=A0ram=C2=A0for=C2=A0C=C2=A0stack=C2=A0an= d=C2=A0heap=C2=A0use. > stack=C2=A0is=C2=A0needed=C2=A0in=C2=A0C=C2=A0nested=C2=A0call=C2=A0and= =C2=A0the=C2=A0heap=C2=A0is=C2=A0needed=C2=A0in=C2=A0lzma > decompress. > the=C2=A0spi=C2=A0runs=C2=A0at=C2=A0clock=C2=A0about=C2=A00.75MHz=C2=A0= on=C2=A0reset,=C2=A0this=C2=A0is=C2=A0very=C2=A0slow, > I=C2=A0tweat=C2=A0it=C2=A0to=C2=A033MHz. Can you put this in a comment or in the commit message? >> =20 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+/*=C2=A0SPI:=C2=A0Dual=C2=A0IO@33MHz=C2=A0*/ >> =C2=A0>=C2=A0+LEAF(ls1c300_spi_init) >> =C2=A0>=C2=A0+#ifndef=C2=A0CONFIG_SKIP_LOWLEVEL_INIT >> =C2=A0>=C2=A0+ li t0,=C2=A0SPI0_BASE >> =C2=A0>=C2=A0+ li t1,=C2=A00x07 >> =C2=A0>=C2=A0+ li t2,=C2=A00x05 >> =C2=A0>=C2=A0+ sb t1,=C2=A00x4(t0) >> =C2=A0>=C2=A0+ sb t1,=C2=A00x6(t0) >> =C2=A0>=C2=A0+#endif >> =C2=A0>=C2=A0+ jr ra >> =C2=A0>=C2=A0+ =C2=A0=C2=A0nop >> =C2=A0>=C2=A0+END(ls1c300_spi_init) >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+/*=C2=A0SDRAM:=C2=A066MHz=C2=A0*/ >> =C2=A0>=C2=A0+//=C2=A08M=C2=A0x=C2=A016Bit=C2=A0x=C2=A04=C2=A0Banks=C2= =A0*/ >> =C2=A0>=C2=A0+//=C2=A0Organization=C2=A0|=C2=A0Row=C2=A0Address=C2=A0= |=C2=A0Column=C2=A0Address >> =C2=A0>=C2=A0+//=C2=A032Mx16=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= |=C2=A0A0~A12=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0A0-A9 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+//=C2=A0128Mx4=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= |=C2=A0A0~A12=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0A0-A9,=C2=A0A11,=C2= =A0A12 >> =C2=A0>=C2=A0+//=C2=A064Mx8=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0|=C2=A0A0~A12=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0A0-A9,=C2=A0= A11 >> =C2=A0>=C2=A0+//=C2=A032Mx16=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= |=C2=A0A0~A12=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0A0-A9 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+LEAF(ls1c300_sdram_init) >> =C2=A0>=C2=A0+#ifndef=C2=A0CONFIG_SKIP_LOWLEVEL_INIT >> =C2=A0>=C2=A0+ li t0,=C2=A0SD_CONFIG >> =C2=A0>=C2=A0+ li t1,=C2=A00x028A924A >> =C2=A0>=C2=A0+ li t2,=C2=A00x00000028 Can you add some comments on which fields you have initialized here? This= is an area where other people may need to modify (because e.g. they have a different sdram config). >> =C2=A0>=C2=A0+sdram_cfg: >> =C2=A0>=C2=A0+ sw t1,=C2=A00x410(t0) >> =C2=A0>=C2=A0+ sw t2,=C2=A00x414(t0) >> =C2=A0>=C2=A0+ nop >> =C2=A0>=C2=A0+ sw t1,=C2=A00x410(t0) >> =C2=A0>=C2=A0+ sw t2,=C2=A00x414(t0) >> =C2=A0>=C2=A0+ ori t2,=C2=A00x200 >> =C2=A0>=C2=A0+ sw t1,=C2=A00x410(t0) >> =C2=A0>=C2=A0+ sw t2,=C2=A00x414(t0) >> =C2=A0>=C2=A0+#endif=C2=A0/*=C2=A0CONFIG_SKIP_LOWLEVEL_INIT=C2=A0*/ >> =C2=A0>=C2=A0+ li v0,=C2=A0SZ_64M >> =C2=A0>=C2=A0+ jr ra >> =C2=A0>=C2=A0+ =C2=A0nop >> =C2=A0>=C2=A0+END(ls1c300_sdram_init) >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+/* >> =C2=A0>=C2=A0+=C2=A0* SDRAM@132MHz,=C2=A0CPU@297MHz,=C2=A0SPI@33MHz >> =C2=A0>=C2=A0+=C2=A0* SDRAM@100MHz,=C2=A0CPU@300MHz,=C2=A0SPI@50MHz >> =C2=A0>=C2=A0+=C2=A0* SDRAM@66MHz,=C2=A0CPU@132MHz,=C2=A0SPI@33MHz=C2= =A0=C2=A0<-- >> =C2=A0>=C2=A0+=C2=A0*/ >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+NESTED(lowlevel_init,=C2=A00,=C2=A0ra) >> =C2=A0>=C2=A0+ /*=C2=A0Save=C2=A0ra=C2=A0and=C2=A0do=C2=A0real=C2=A0l= owlevel=C2=A0initialization=C2=A0*/ >> =C2=A0>=C2=A0+ move s0,=C2=A0ra >> =C2=A0>=C2=A0+ /*=C2=A0Setup=C2=A0PLL=C2=A0@264MHz=C2=A0*/ >> =C2=A0>=C2=A0+ PTR_LA t9,=C2=A0ls1c300_pll_init >> =C2=A0>=C2=A0+ jalr t9 >> =C2=A0>=C2=A0+ =C2=A0=C2=A0nop >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ /*=C2=A0Setup=C2=A0SPI=C2=A0Dual=C2=A0IO@33MHz=C2=A0*/= >> =C2=A0>=C2=A0+ PTR_LA t9,=C2=A0ls1c300_spi_init >> =C2=A0>=C2=A0+ jalr t9 >> =C2=A0>=C2=A0+ =C2=A0=C2=A0nop >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ /*=C2=A0Setup=C2=A0external=C2=A0SDRAM=C2=A0@66MHz=C2=A0= */ >> =C2=A0>=C2=A0+ PTR_LA t9,=C2=A0ls1c300_sdram_init >> =C2=A0>=C2=A0+ jalr t9 >> =C2=A0>=C2=A0+ =C2=A0=C2=A0nop >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ move ra,=C2=A0s0 >> =C2=A0>=C2=A0+ jr ra >> =C2=A0>=C2=A0+ =C2=A0nop >> =C2=A0>=C2=A0+END(lowlevel_init) >=20 >=20 >> =C2=A0>=C2=A0diff=C2=A0--git=C2=A0a/arch/mips/mach-lsmips/ls1c300/ser= ial.c=C2=A0b/arch/mips/mach-lsmips/ls1c300/serial.c >> =C2=A0>=C2=A0new=C2=A0file=C2=A0mode=C2=A0100644 >> =C2=A0>=C2=A0index=C2=A00000000000..88bc18ef85 >> =C2=A0>=C2=A0---=C2=A0/dev/null >> =C2=A0>=C2=A0+++=C2=A0b/arch/mips/mach-lsmips/ls1c300/serial.c >> =C2=A0>=C2=A0@@=C2=A0-0,0=C2=A0+1,112=C2=A0@@ >> =C2=A0>=C2=A0+//=C2=A0SPDX-License-Identifier:=C2=A0GPL-2.0 >> =C2=A0>=C2=A0+/* >> =C2=A0>=C2=A0+=C2=A0*=C2=A0Copyright=C2=A0(C)=C2=A02020=C2=A0MediaTek= =C2=A0Inc. >> =C2=A0>=C2=A0+=C2=A0* >> =C2=A0>=C2=A0+=C2=A0*=C2=A0Author:=C2=A0=C2=A0Gao=C2=A0Weijie=C2=A0 >> =C2=A0>=C2=A0+=C2=A0* >> =C2=A0>=C2=A0+=C2=A0*=C2=A0Copyright=C2=A0(C)=C2=A02020-2022=C2=A0Du=C2= =A0Huanpeng=C2=A0 >> =C2=A0>=C2=A0+=C2=A0*/ >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0"ls1c300.h" >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+struct=C2=A0uart_pin_config=C2=A0{ >> =C2=A0>=C2=A0+ char=C2=A0port; >> =C2=A0>=C2=A0+ char=C2=A0af; >> =C2=A0>=C2=A0+ char=C2=A0rx; >> =C2=A0>=C2=A0+ char=C2=A0tx; >> =C2=A0>=C2=A0+}; >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+struct=C2=A0uart_pin_config=C2=A0con[]=C2=A0=3D=C2=A0{ >> =C2=A0>=C2=A0+#if=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A00 >> =C2=A0>=C2=A0+{=C2=A00,=C2=A02,=C2=A074,=C2=A075=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A00,=C2=A03,=C2=A023,=C2=A024=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A00,=C2=A03,=C2=A099,=C2=A0100=C2=A0}, >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#elif=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A01 >> =C2=A0>=C2=A0+{=C2=A01,=C2=A01,=C2=A017,=C2=A018=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A01,=C2=A01,=C2=A0101,=C2=A0102=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A01,=C2=A02,=C2=A040,=C2=A041=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A01,=C2=A04,=C2=A02,=C2=A03=C2=A0}, >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#elif=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A02 >> =C2=A0>=C2=A0+{=C2=A02,=C2=A02,=C2=A036,=C2=A037=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A02,=C2=A02,=C2=A042,=C2=A043=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A02,=C2=A03,=C2=A027,=C2=A028=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A02,=C2=A03,=C2=A0103,=C2=A0104=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A02,=C2=A04,=C2=A04,=C2=A05=C2=A0}, >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#elif=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A03 >> =C2=A0>=C2=A0+{=C2=A03,=C2=A02,=C2=A017,=C2=A018=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A03,=C2=A02,=C2=A033,=C2=A034=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A03,=C2=A02,=C2=A044,=C2=A045=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A03,=C2=A04,=C2=A00,=C2=A01=C2=A0}, >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#elif=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A04 >> =C2=A0>=C2=A0+{=C2=A04,=C2=A05,=C2=A023,=C2=A024=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A04,=C2=A05,=C2=A058,=C2=A059=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A04,=C2=A05,=C2=A080,=C2=A079=C2=A0}, >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#elif=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A05 >> =C2=A0>=C2=A0+{=C2=A05,=C2=A05,=C2=A025,=C2=A026=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A05,=C2=A05,=C2=A060,=C2=A061=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A05,=C2=A05,=C2=A081,=C2=A078=C2=A0}, >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#elif=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A06 >> =C2=A0>=C2=A0+{=C2=A06,=C2=A05,=C2=A027,=C2=A046=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A06,=C2=A05,=C2=A062,=C2=A063=C2=A0}, >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#elif=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A07 >> =C2=A0>=C2=A0+{=C2=A07,=C2=A05,=C2=A057,=C2=A056=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A07,=C2=A05,=C2=A064,=C2=A065=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A07,=C2=A05,=C2=A087,=C2=A088=C2=A0}, >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#elif=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A08 >> =C2=A0>=C2=A0+{=C2=A08,=C2=A05,=C2=A055,=C2=A054=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A08,=C2=A05,=C2=A066,=C2=A067=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A08,=C2=A05,=C2=A089,=C2=A090=C2=A0}, >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#elif=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A09 >> =C2=A0>=C2=A0+{=C2=A09,=C2=A05,=C2=A053,=C2=A052=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A09,=C2=A05,=C2=A068,=C2=A069=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A09,=C2=A05,=C2=A085,=C2=A086=C2=A0}, >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#elif=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A010 >> =C2=A0>=C2=A0+{=C2=A010,=C2=A05,=C2=A051,=C2=A050=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A010,=C2=A05,=C2=A070,=C2=A071=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A010,=C2=A05,=C2=A084,=C2=A082=C2=A0}, >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#elif=C2=A0CONFIG_CONS_INDEX=C2=A0=3D=3D=C2=A011 >> =C2=A0>=C2=A0+{=C2=A011,=C2=A05,=C2=A049,=C2=A048=C2=A0}, >> =C2=A0>=C2=A0+{=C2=A011,=C2=A05,=C2=A072,=C2=A073=C2=A0}, >> =C2=A0>=C2=A0+#endif=C2=A0/*=C2=A0CONFIG_CONS_INDEX=C2=A0*/ >> =C2=A0>=C2=A0+}; >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#define=C2=A0UART2_RX 36 >> =C2=A0>=C2=A0+#define=C2=A0UART2_TX 37 >> =C2=A0>=C2=A0+#define=C2=A0AFUNC 2 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+void=C2=A0lsmips_spl_serial_init(void) >> =C2=A0>=C2=A0+{ >> =C2=A0>=C2=A0+#ifdef=C2=A0CONFIG_SPL_SERIAL >> =C2=A0>=C2=A0+ int=C2=A0pin_rx,=C2=A0pin_tx; >> =C2=A0>=C2=A0+ int=C2=A0afunc; >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ if=C2=A0(CONFIG_CONS_PIN_SELECT=C2=A0<=C2=A0ARRAY_SIZE= (con))=C2=A0{ >> =C2=A0>=C2=A0+ pin_rx=C2=A0=3D=C2=A0con[CONFIG_CONS_PIN_SELECT].rx; >> =C2=A0>=C2=A0+ pin_tx=C2=A0=3D=C2=A0con[CONFIG_CONS_PIN_SELECT].tx; >> =C2=A0>=C2=A0+ afunc=C2=A0=3D=C2=A0con[CONFIG_CONS_PIN_SELECT].af; >> =C2=A0>=C2=A0+ }=C2=A0else=C2=A0{ >> =C2=A0>=C2=A0+ pin_rx=C2=A0=3D=C2=A0UART2_RX; >> =C2=A0>=C2=A0+ pin_tx=C2=A0=3D=C2=A0UART2_TX; >> =C2=A0>=C2=A0+ afunc=C2=A0=3D=C2=A0AFUNC; >> =C2=A0>=C2=A0+ } >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ gpio_set_alternate(pin_rx,=C2=A0afunc); >> =C2=A0>=C2=A0+ gpio_set_alternate(pin_tx,=C2=A0afunc); >> =C2=A0>=C2=A0+#endif=C2=A0/*=C2=A0CONFIG_SPL_SERIAL=C2=A0*/ >> =C2=A0>=C2=A0+ return=C2=A0; >> =C2=A0>=C2=A0+} >> =20 >> =C2=A0Please=C2=A0use=C2=A0a=C2=A0pinctrl=C2=A0driver=C2=A0for=C2=A0t= his.=C2=A0In=C2=A0particular,=C2=A0you=C2=A0may=C2=A0be=C2=A0able=C2=A0to= =C2=A0use >> =C2=A0pinctrl-simple,=C2=A0which=C2=A0can=C2=A0be=C2=A0configured=C2=A0= through=C2=A0the=C2=A0device=C2=A0tree. > this=C2=A0muxing=C2=A0is=C2=A0used=C2=A0in=C2=A0SPL=C2=A0at=C2=A0the=C2= =A0very=C2=A0beginning.=C2=A0DM=C2=A0is=C2=A0not=C2=A0avaiable. You can use DM in SPL. How much space do you have in your flash? More tha= n 64-128k is enough to use SPL_DM. More than 512k is enough to skip SPL entirely. P= resumably since you are using the combined SPL/U-Boot image you have enough space t= o skip it. >> =20 >> =C2=A0>=C2=A0diff=C2=A0--git=C2=A0a/arch/mips/mach-lsmips/spl.c=C2=A0= b/arch/mips/mach-lsmips/spl.c >> =C2=A0>=C2=A0new=C2=A0file=C2=A0mode=C2=A0100644 >> =C2=A0>=C2=A0index=C2=A00000000000..c7c28989f2 >> =C2=A0>=C2=A0---=C2=A0/dev/null >> =C2=A0>=C2=A0+++=C2=A0b/arch/mips/mach-lsmips/spl.c >> =C2=A0>=C2=A0@@=C2=A0-0,0=C2=A0+1,47=C2=A0@@ >> =C2=A0>=C2=A0+//=C2=A0SPDX-License-Identifier:=C2=A0GPL-2.0 >> =C2=A0>=C2=A0+/* >> =C2=A0>=C2=A0+=C2=A0*=C2=A0Copyright=C2=A0(C)=C2=A02020=C2=A0MediaTek= =C2=A0Inc.=C2=A0All=C2=A0Rights=C2=A0Reserved. >> =C2=A0>=C2=A0+=C2=A0* >> =C2=A0>=C2=A0+=C2=A0*=C2=A0Author:=C2=A0Gao=C2=A0Weijie=C2=A0 >> =C2=A0>=C2=A0+=C2=A0* >> =C2=A0>=C2=A0+=C2=A0*=C2=A0Copyright=C2=A0(C)=C2=A02022=C2=A0Du=C2=A0= Huanpeng=C2=A0 >> =C2=A0>=C2=A0+=C2=A0*/ >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+void=C2=A0__noreturn=C2=A0board_init_f(ulong=C2=A0dummy= ) >> =C2=A0>=C2=A0+{ >> =C2=A0>=C2=A0+ spl_init(); >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#ifdef=C2=A0CONFIG_SPL_SERIAL >> =C2=A0>=C2=A0+ /* >> =C2=A0>=C2=A0+ =C2=A0*=C2=A0lsmips_spl_serial_init()=C2=A0is=C2=A0use= ful=C2=A0if=C2=A0debug=C2=A0uart=C2=A0is=C2=A0enabled, >> =C2=A0>=C2=A0+ =C2=A0*=C2=A0or=C2=A0DM=C2=A0based=C2=A0serial=C2=A0is= =C2=A0not=C2=A0enabled. >> =C2=A0>=C2=A0+ =C2=A0*/ >> =C2=A0>=C2=A0+ lsmips_spl_serial_init(); >> =C2=A0>=C2=A0+ preloader_console_init(); >> =C2=A0>=C2=A0+#endif >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ board_init_r(NULL,=C2=A00); >> =C2=A0>=C2=A0+} >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+void=C2=A0board_boot_order(u32=C2=A0*spl_boot_list) >> =C2=A0>=C2=A0+{ >> =C2=A0>=C2=A0+ spl_boot_list[0]=C2=A0=3D=C2=A0BOOT_DEVICE_NOR; >> =C2=A0>=C2=A0+} >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+unsigned=C2=A0long=C2=A0spl_nor_get_uboot_base(void) >> =C2=A0>=C2=A0+{ >> =C2=A0>=C2=A0+ void=C2=A0*uboot_base=C2=A0=3D=C2=A0__image_copy_end; >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ if=C2=A0(fdt_magic(uboot_base)=C2=A0=3D=3D=C2=A0FDT_MA= GIC) >> =C2=A0>=C2=A0+ return=C2=A0(unsigned=C2=A0long)uboot_base=C2=A0+=C2=A0= fdt_totalsize(uboot_base); >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ return=C2=A0(unsigned=C2=A0long)uboot_base; >> =C2=A0>=C2=A0+} >> =C2=A0>=C2=A0diff=C2=A0--git=C2=A0a/board/loongson/ls1c300-eval/Kconf= ig=C2=A0b/board/loongson/ls1c300-eval/Kconfig >> =C2=A0>=C2=A0new=C2=A0file=C2=A0mode=C2=A0100644 >> =C2=A0>=C2=A0index=C2=A00000000000..e427570a83 >> =C2=A0>=C2=A0---=C2=A0/dev/null >> =C2=A0>=C2=A0+++=C2=A0b/board/loongson/ls1c300-eval/Kconfig >> =C2=A0>=C2=A0@@=C2=A0-0,0=C2=A0+1,12=C2=A0@@ >> =C2=A0>=C2=A0+if=C2=A0BOARD_LS1C300 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+config=C2=A0SYS_BOARD >> =C2=A0>=C2=A0+ default=C2=A0"ls1c300-eval" >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+config=C2=A0SYS_VENDOR >> =C2=A0>=C2=A0+ default=C2=A0"loongson" >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+config=C2=A0SYS_CONFIG_NAME >> =C2=A0>=C2=A0+ default=C2=A0"ls1c300" >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+endif >> =C2=A0>=C2=A0diff=C2=A0--git=C2=A0a/board/loongson/ls1c300-eval/MAINT= AINERS=C2=A0b/board/loongson/ls1c300-eval/MAINTAINERS >> =C2=A0>=C2=A0new=C2=A0file=C2=A0mode=C2=A0100644 >> =C2=A0>=C2=A0index=C2=A00000000000..5420198dab >> =C2=A0>=C2=A0---=C2=A0/dev/null >> =C2=A0>=C2=A0+++=C2=A0b/board/loongson/ls1c300-eval/MAINTAINERS >> =C2=A0>=C2=A0@@=C2=A0-0,0=C2=A0+1,7=C2=A0@@ >> =C2=A0>=C2=A0+LS1C300_EVAL=C2=A0BOARD >> =C2=A0>=C2=A0+M: Du=C2=A0Huanpeng >> =C2=A0>=C2=A0+S: Maintained >> =C2=A0>=C2=A0+F: board/loongson/ls1c300-eval >> =C2=A0>=C2=A0+F: include/configs/ls1c300.h >> =C2=A0>=C2=A0+F: configs/ls1c300_defconfig >> =C2=A0>=C2=A0+F: arch/mips/dts/ls1c300-eval.dts >> =C2=A0>=C2=A0diff=C2=A0--git=C2=A0a/board/loongson/ls1c300-eval/Makef= ile=C2=A0b/board/loongson/ls1c300-eval/Makefile >> =C2=A0>=C2=A0new=C2=A0file=C2=A0mode=C2=A0100644 >> =C2=A0>=C2=A0index=C2=A00000000000..db129c5aba >> =C2=A0>=C2=A0---=C2=A0/dev/null >> =C2=A0>=C2=A0+++=C2=A0b/board/loongson/ls1c300-eval/Makefile >> =C2=A0>=C2=A0@@=C2=A0-0,0=C2=A0+1,3=C2=A0@@ >> =C2=A0>=C2=A0+#=C2=A0SPDX-License-Identifier:=C2=A0GPL-2.0 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+obj-y=C2=A0+=3D=C2=A0board.o >> =C2=A0>=C2=A0diff=C2=A0--git=C2=A0a/board/loongson/ls1c300-eval/board= =2Ec=C2=A0b/board/loongson/ls1c300-eval/board.c >> =C2=A0>=C2=A0new=C2=A0file=C2=A0mode=C2=A0100644 >> =C2=A0>=C2=A0index=C2=A00000000000..2f588a0dcb >> =C2=A0>=C2=A0---=C2=A0/dev/null >> =C2=A0>=C2=A0+++=C2=A0b/board/loongson/ls1c300-eval/board.c >> =C2=A0>=C2=A0@@=C2=A0-0,0=C2=A0+1,20=C2=A0@@ >> =C2=A0>=C2=A0+//=C2=A0SPDX-License-Identifier:=C2=A0GPL-2.0 >> =C2=A0>=C2=A0+/* >> =C2=A0>=C2=A0+=C2=A0*=C2=A0Copyright=C2=A0(C)=C2=A02020-2022=C2=A0Du=C2= =A0Huanpeng=C2=A0 >> =C2=A0>=C2=A0+=C2=A0*/ >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+#include=C2=A0 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#ifdef=C2=A0CONFIG_DEBUG_UART_BOARD_INIT >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#define=C2=A0UART2_RX 36 >> =C2=A0>=C2=A0+#define=C2=A0UART2_TX 37 >> =C2=A0>=C2=A0+#define=C2=A0AFUNC 2 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+void=C2=A0board_debug_uart_init(void) >> =C2=A0>=C2=A0+{ >> =C2=A0>=C2=A0+ gpio_set_alternate(UART2_TX,=C2=A0AFUNC); >> =C2=A0>=C2=A0+ gpio_set_alternate(UART2_RX,=C2=A0AFUNC); >> =C2=A0>=C2=A0+} >> =C2=A0>=C2=A0+#endif >> =C2=A0>=C2=A0diff=C2=A0--git=C2=A0a/configs/ls1c300_defconfig=C2=A0b/= configs/ls1c300_defconfig >> =C2=A0>=C2=A0new=C2=A0file=C2=A0mode=C2=A0100644 >> =C2=A0>=C2=A0index=C2=A00000000000..c47fe5b98f >> =C2=A0>=C2=A0---=C2=A0/dev/null >> =C2=A0>=C2=A0+++=C2=A0b/configs/ls1c300_defconfig >> =C2=A0>=C2=A0@@=C2=A0-0,0=C2=A0+1,65=C2=A0@@ >> =C2=A0>=C2=A0+CONFIG_MIPS=3Dy >> =C2=A0>=C2=A0+CONFIG_SYS_MALLOC_F_LEN=3D0x40000 >> =C2=A0>=C2=A0+CONFIG_SPL_LIBCOMMON_SUPPORT=3Dy >> =C2=A0>=C2=A0+CONFIG_SPL_LIBGENERIC_SUPPORT=3Dy >> =C2=A0>=C2=A0+CONFIG_NR_DRAM_BANKS=3D1 >> =C2=A0>=C2=A0+CONFIG_ENV_SIZE=3D0x1000 >> =C2=A0>=C2=A0+CONFIG_ENV_OFFSET=3D0x30000 >> =C2=A0>=C2=A0+CONFIG_ENV_SECT_SIZE=3D0x10000 >> =C2=A0>=C2=A0+CONFIG_DEFAULT_DEVICE_TREE=3D"ls1c300-eval" >> =C2=A0>=C2=A0+CONFIG_SPL_SERIAL=3Dy >> =C2=A0>=C2=A0+CONFIG_SPL_SIZE_LIMIT=3D0x100000 >> =C2=A0>=C2=A0+CONFIG_SPL=3Dy >> =C2=A0>=C2=A0+CONFIG_DEBUG_UART_BOARD_INIT=3Dy >> =C2=A0>=C2=A0+CONFIG_DEBUG_UART_BASE=3D0xbfe48000 >> =C2=A0>=C2=A0+CONFIG_DEBUG_UART_CLOCK=3D66000000 >> =20 >> =C2=A0Do=C2=A0you=C2=A0have=C2=A0normal=C2=A0uart=C2=A0working? > the=C2=A0normal=C2=A0uart=C2=A0works=C2=A0with=C2=A0=C2=A0ns16550=C2=A0= uart=C2=A0driver.=C2=A0so=C2=A0no=C2=A0extra=C2=A0serial=C2=A0driver=C2=A0= for=C2=A0this=C2=A0SoC. Typically the debug uart should be disabled in the defconfig. Just docume= nt the parameters. >> =20 >> =C2=A0>=C2=A0+CONFIG_ARCH_LSMIPS=3Dy >> =C2=A0>=C2=A0+CONFIG_SPL_PAYLOAD=3D"u-boot.img" >> =C2=A0>=C2=A0+#=C2=A0CONFIG_MIPS_CACHE_SETUP=C2=A0is=C2=A0not=C2=A0se= t >> =C2=A0>=C2=A0+#=C2=A0CONFIG_MIPS_CACHE_DISABLE=C2=A0is=C2=A0not=C2=A0= set >> =C2=A0>=C2=A0+CONFIG_RESTORE_EXCEPTION_VECTOR_BASE=3Dy >> =C2=A0>=C2=A0+CONFIG_MIPS_BOOT_FDT=3Dy >> =C2=A0>=C2=A0+CONFIG_DEBUG_UART=3Dy >> =C2=A0>=C2=A0+CONFIG_SYS_LOAD_ADDR=3D0x80010000 >> =C2=A0>=C2=A0+CONFIG_FIT=3Dy >> =C2=A0>=C2=A0+#=C2=A0CONFIG_ARCH_FIXUP_FDT_MEMORY=C2=A0is=C2=A0not=C2= =A0set >> =C2=A0>=C2=A0+CONFIG_LOGLEVEL=3D9 >> =C2=A0>=C2=A0+CONFIG_DISPLAY_BOARDINFO_LATE=3Dy >> =C2=A0>=C2=A0+CONFIG_SPL_LEGACY_IMAGE_CRC_CHECK=3Dy >> =C2=A0>=C2=A0+CONFIG_SPL_SYS_MALLOC_SIMPLE=3Dy >> =C2=A0>=C2=A0+CONFIG_SPL_NOR_SUPPORT=3Dy >> =C2=A0>=C2=A0+#=C2=A0CONFIG_CMD_ELF=C2=A0is=C2=A0not=C2=A0set >> =C2=A0>=C2=A0+#=C2=A0CONFIG_CMD_XIMG=C2=A0is=C2=A0not=C2=A0set >> =C2=A0>=C2=A0+#=C2=A0CONFIG_CMD_CRC32=C2=A0is=C2=A0not=C2=A0set >> =C2=A0>=C2=A0+CONFIG_CMD_CLK=3Dy >> =C2=A0>=C2=A0+#=C2=A0CONFIG_CMD_DM=C2=A0is=C2=A0not=C2=A0set >> =C2=A0>=C2=A0+CONFIG_CMD_GPIO=3Dy >> =C2=A0>=C2=A0+#=C2=A0CONFIG_CMD_LOADS=C2=A0is=C2=A0not=C2=A0set >> =C2=A0>=C2=A0+CONFIG_CMD_SPI=3Dy >> =C2=A0>=C2=A0+CONFIG_CMD_WDT=3Dy >> =C2=A0>=C2=A0+#=C2=A0CONFIG_PARTITIONS=C2=A0is=C2=A0not=C2=A0set >> =C2=A0>=C2=A0+CONFIG_OF_EMBED=3Dy >> =C2=A0>=C2=A0+CONFIG_ENV_IS_IN_SPI_FLASH=3Dy >> =20 >> =C2=A0Where=C2=A0is=C2=A0the=C2=A0spi=C2=A0flash=C2=A0driver? > TODO=C2=A0:). >=20 >> =C2=A0>=C2=A0+static=C2=A0int=C2=A0lsmips_wdt_start(struct=C2=A0udevi= ce=C2=A0*dev,=C2=A0u64=C2=A0timeout_ms,=C2=A0ulong=C2=A0flags) >> =C2=A0>=C2=A0+{ >> =C2=A0>=C2=A0+ struct=C2=A0lsmips_wdt_priv=C2=A0*priv=C2=A0=3D=C2=A0d= ev_get_priv(dev); >> =C2=A0>=C2=A0+ unsigned=C2=A0int=C2=A0timeout; >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ timeout=C2=A0=3D=C2=A0U32_MAX=C2=A0/=C2=A0(priv->clock= =C2=A0/=C2=A01000); >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+ if=C2=A0(timeout=C2=A0<=C2=A0timeout_ms) >> =C2=A0>=C2=A0+ timeout=C2=A0=3D=C2=A0U32_MAX; >> =C2=A0>=C2=A0+ else >> =C2=A0>=C2=A0+ timeout=C2=A0=3D=C2=A0timeout_ms=C2=A0*=C2=A0(priv->c= lock=C2=A0/=C2=A01000); >> =20 >> =C2=A0why=C2=A0not=C2=A0start=C2=A0with=C2=A0this? >> =20 >> =C2=A0Also,=C2=A0please=C2=A0multiply=C2=A0first=C2=A0for=C2=A0better= =C2=A0precision.=C2=A0And=C2=A0use=C2=A0MSEC_PER_SEC=C2=A0instead=C2=A0of= =C2=A01000. > I=C2=A0want=C2=A0to=C2=A0avoid=C2=A0overflow=C2=A0first,=C2=A0so=C2=A0I= =C2=A0do=C2=A0the=C2=A0division=C2=A0first. > the=C2=A0macro=C2=A0MSEC_PER_SEC=C2=A0seems=C2=A0not=C2=A0defined=C2=A0= in=C2=A0public=C2=A0header,=C2=A0I=C2=A0find=C2=A0it=C2=A0is > private=C2=A0defined=C2=A0in=C2=A0multiple=C2=A0place,=C2=A0so=C2=A0I=C2= =A0don't=C2=A0want=C2=A0to=C2=A0use=C2=A0this=C2=A0macro > this=C2=A0time. Define it. Make the code better. >> =C2=A0>=C2=A0+#ifndef=C2=A0__DT_BINDINGS_LS1C300_CLK_H__ >> =C2=A0>=C2=A0+#define=C2=A0__DT_BINDINGS_LS1C300_CLK_H__ >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+/*=C2=A0Base=C2=A0clocks=C2=A0*/ >> =C2=A0>=C2=A0+#define=C2=A0CLK_XTAL 0 >> =C2=A0>=C2=A0+#define=C2=A0CLK_PLL 1 >> =C2=A0>=C2=A0+#define=C2=A0CLK_CPU 2 >> =C2=A0>=C2=A0+#define=C2=A0CLK_CPU_THROT 7 >> =C2=A0>=C2=A0+#define=C2=A0CLK_SDRAM 3 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#define=C2=A0CLK_CAMERA 4 >> =C2=A0>=C2=A0+#define=C2=A0CLK_DC 5 >> =C2=A0>=C2=A0+#define=C2=A0CLK_PIX 5 >> =C2=A0>=C2=A0+#define=C2=A0CLK_AXIMUX 6 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+/*=C2=A0Peripheral=C2=A0clocks=C2=A0*/ >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART0 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART1 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART2 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART3 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART4 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART5 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART6 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART7 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART8 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART9 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART10 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_UART11 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_CAN0 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_CAN1 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_I2C0 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_PWM 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_I2S 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_RTC 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_I2C1 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_SDIO 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_I2C2 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_ADC 3 >> =C2=A0>=C2=A0+#define=C2=A0CLK_NAND 3 >> =C2=A0>=C2=A0+ >> =C2=A0>=C2=A0+#define=C2=A0CLK_WDT 3 >> =20 >> =C2=A0So=C2=A0are=C2=A0these=C2=A0different=C2=A0clocks?=C2=A0Why=C2=A0= do=C2=A0they=C2=A0all=C2=A0have=C2=A0the=C2=A0same=C2=A0id? > they=C2=A0are=C2=A0all=C2=A0the=C2=A0same=C2=A0clock,=C2=A0the=C2=A0apb= =C2=A0bus=C2=A0clock. OK, then just define CLK_APB to 3. Adding a prefix like LS1C300_CLK_APB would be nice. --Sean