From patchwork Fri Jul 3 18:08:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Krottmayer X-Patchwork-Id: 1322588 X-Patchwork-Delegate: ykai007@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=qzSX26/8; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49z38M5hk2z9sQt for ; Sat, 4 Jul 2020 04:17:05 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 83DF3812EE; Fri, 3 Jul 2020 20:16:58 +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="qzSX26/8"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id E019280E58; Fri, 3 Jul 2020 20:16:56 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com [IPv6:2a00:1450:4864:20::644]) (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 06EF780E58 for ; Fri, 3 Jul 2020 20:16:54 +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=krjdev@gmail.com Received: by mail-ej1-x644.google.com with SMTP id dp18so35177238ejc.8 for ; Fri, 03 Jul 2020 11:16:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BUhzjvU/Ur+lyD8dkiNS822Z/tvYxvEH8cSUZhYBJRE=; b=qzSX26/8pAqZD4UDGzi/3ijssyiArflHV91Fk4x0OyASf7sn1iMRLy8zt6tbfe1vbA gRQnsPNKB8EFsXrFF7H9Lq+xdqu8IxmB9eEUQUhsT7Pw2fBV3pqP6XWQyfszDB9wMfaB yRt0AqDFPOKECghmXdEKEeunGlF4qeRNW0wSkTdLhmlB8sR3+k/9uSOXVAsxc5GJIVFq dW1e6a3JfqwMv7FeLchlzsDhwOukR/QhPiYADn7vuted3ed38KPTaReHwFSBC5GlDUOc GGRRkUisCPEm7K/3mp7Xsz17RR3jzNeuO2Ywd18+f2Je6XKDeyAO8JZIbh0eb4IhG5Yz COtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BUhzjvU/Ur+lyD8dkiNS822Z/tvYxvEH8cSUZhYBJRE=; b=ZvztWdogifHujk+DbHJwUgYbu6zMJisrb25rDb5X1NtLQzaOX9phwB00ggl8xtif0w +H2Dhd/zzGhDuLKPCXH4LSGc2p9fz/jtywQnKwLKM7akgIZCD/AQh7GyrDTuGN0ndJfA NijYrsEcbS0TrGRfN+r6NEa7qCj1x8sYVqxf7qo9K7fVR+YjbbX0qGmfu9FqLbYWsC1+ LlKCYRZNI7Fm6fAt72OAlhfgfuGBpFUYvJ+OjnjQQXrnuFOfH8k480fGm7RVDruyhQOp KfMlyRi1uiAe+jl5XGCgyJjJnDU6kEm504HH98xKFlItZmIAr+p0kt+b7NXk4xetH80j tlLg== X-Gm-Message-State: AOAM530Fbtbry/dv0lrtEPoJlQfYCcVaMcZ9oAtyVwDRl63xyYY2Us5b 6SdTL1ZBGa17wytggmalelAZ1Sr1aUg= X-Google-Smtp-Source: ABdhPJxzqzcI17gjI4mihBi6vYJXTceLZKzYaVLIUXKQS7LQdENztddpa6krD/JDMrR/0wFyScNUcQ== X-Received: by 2002:a17:907:40f5:: with SMTP id no5mr32962091ejb.149.1593800213290; Fri, 03 Jul 2020 11:16:53 -0700 (PDT) Received: from matrix42.krottmayer.com (dynamic-282ssp22m10uowenj5-pd01.res.v6.highway.a1.net. [2001:871:20f:2c0a:22cf:30ff:fe1a:cea1]) by smtp.gmail.com with ESMTPSA id w18sm13503776edv.11.2020.07.03.11.16.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 Jul 2020 11:16:52 -0700 (PDT) From: Johannes Krottmayer To: u-boot@lists.denx.de Cc: kever.yang@rock-chips.com, jagan@amarulasolutions.com, Johannes Krottmayer Subject: [PATCH] rockchip: rk3328: Add SPI support Date: Fri, 3 Jul 2020 20:08:51 +0200 Message-Id: <20200703180849.31993-1-krjdev@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <7edb1643-591d-d581-65b7-58ad1f1ef291@gmail.com> References: <7edb1643-591d-d581-65b7-58ad1f1ef291@gmail.com> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean Add U-Boot SPI support for the RK3328 Signed-off-by: Johannes Krottmayer Cc: Kever Yang Cc: Jagan Teki --- It's a initial SPI support. Not sure if "rk3399_spi_params" is also needed. Probing of the SPI flash devices works. Tested with the PINE64 Rock64 board. Okay? arch/arm/dts/rk3328-u-boot.dtsi | 5 +++++ drivers/clk/rockchip/clk_rk3328.c | 31 +++++++++++++++++++++++++++++++ drivers/spi/rk_spi.c | 2 ++ 3 files changed, 38 insertions(+) diff --git a/arch/arm/dts/rk3328-u-boot.dtsi b/arch/arm/dts/rk3328-u-boot.dtsi index c69e13e11e..c980daae99 100644 --- a/arch/arm/dts/rk3328-u-boot.dtsi +++ b/arch/arm/dts/rk3328-u-boot.dtsi @@ -7,6 +7,7 @@ aliases { mmc0 = &emmc; mmc1 = &sdmmc; + spi0 = &spi0; }; chosen { @@ -66,3 +67,7 @@ &usb20_otg { hnp-srp-disable; }; + +&spi0 { + u-boot,dm-pre-reloc; +}; diff --git a/drivers/clk/rockchip/clk_rk3328.c b/drivers/clk/rockchip/clk_rk3328.c index 02d3b08efa..bd95ab832b 100644 --- a/drivers/clk/rockchip/clk_rk3328.c +++ b/drivers/clk/rockchip/clk_rk3328.c @@ -555,6 +555,31 @@ static ulong rk3328_saradc_set_clk(struct rk3328_cru *cru, uint hz) return rk3328_saradc_get_clk(cru); } +static ulong rk3328_spi_get_clk(struct rk3328_cru *cru) +{ + u32 div, val; + + val = readl(&cru->clksel_con[24]); + div = (val & CLK_SPI_DIV_CON_MASK) >> CLK_SPI_DIV_CON_SHIFT; + + return DIV_TO_RATE(OSC_HZ, div); +} + +static ulong rk3328_spi_set_clk(struct rk3328_cru *cru, uint hz) +{ + u32 src_clk_div; + + src_clk_div = GPLL_HZ / hz; + assert(src_clk_div < 128); + + rk_clrsetreg(&cru->clksel_con[24], + CLK_PWM_PLL_SEL_MASK | CLK_PWM_DIV_CON_MASK, + CLK_PWM_PLL_SEL_GPLL << CLK_PWM_PLL_SEL_SHIFT | + (src_clk_div - 1) << CLK_PWM_DIV_CON_SHIFT); + + return rk3328_spi_get_clk(cru); +} + static ulong rk3328_clk_get_rate(struct clk *clk) { struct rk3328_clk_priv *priv = dev_get_priv(clk->dev); @@ -581,6 +606,9 @@ static ulong rk3328_clk_get_rate(struct clk *clk) case SCLK_SARADC: rate = rk3328_saradc_get_clk(priv->cru); break; + case SCLK_SPI: + rate = rk3328_spi_get_clk(priv->cru); + break; default: return -ENOENT; } @@ -617,6 +645,9 @@ static ulong rk3328_clk_set_rate(struct clk *clk, ulong rate) case SCLK_SARADC: ret = rk3328_saradc_set_clk(priv->cru, rate); break; + case SCLK_SPI: + ret = rk3328_spi_set_clk(priv->cru, rate); + break; case DCLK_LCDC: case SCLK_PDM: case SCLK_RTC32K: diff --git a/drivers/spi/rk_spi.c b/drivers/spi/rk_spi.c index 833cb04922..0495e04945 100644 --- a/drivers/spi/rk_spi.c +++ b/drivers/spi/rk_spi.c @@ -545,7 +545,9 @@ const struct rockchip_spi_params rk3399_spi_params = { }; static const struct udevice_id rockchip_spi_ids[] = { + { .compatible = "rockchip,rk3066-spi" }, { .compatible = "rockchip,rk3288-spi" }, + { .compatible = "rockchip,rk3328-spi" }, { .compatible = "rockchip,rk3368-spi", .data = (ulong)&rk3399_spi_params }, { .compatible = "rockchip,rk3399-spi",