From owner-svn-src-all@freebsd.org Mon Feb 24 10:40:36 2020 Return-Path: Delivered-To: svn-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8E31C2587E4; Mon, 24 Feb 2020 10:40:36 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 48Qz9c23Hxz42HH; Mon, 24 Feb 2020 10:40:36 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 277B723EF1; Mon, 24 Feb 2020 10:40:36 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 01OAea0a010510; Mon, 24 Feb 2020 10:40:36 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 01OAeaYr010509; Mon, 24 Feb 2020 10:40:36 GMT (envelope-from manu@FreeBSD.org) Message-Id: <202002241040.01OAeaYr010509@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 24 Feb 2020 10:40:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r358279 - head/sys/arm64/rockchip X-SVN-Group: head X-SVN-Commit-Author: manu X-SVN-Commit-Paths: head/sys/arm64/rockchip X-SVN-Commit-Revision: 358279 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Feb 2020 10:40:36 -0000 Author: manu Date: Mon Feb 24 10:40:35 2020 New Revision: 358279 URL: https://svnweb.freebsd.org/changeset/base/358279 Log: arm64: rockchip: rk808: Only init regulator not enabled If a regulator is already enabled, do not set its value to the minimum supported on the board. This fixes booting on rock64 where we set some regulator to the minimal value while the IPs needs more based on what the bootloader configured. MFC after: 1 week Modified: head/sys/arm64/rockchip/rk805.c Modified: head/sys/arm64/rockchip/rk805.c ============================================================================== --- head/sys/arm64/rockchip/rk805.c Mon Feb 24 10:38:38 2020 (r358278) +++ head/sys/arm64/rockchip/rk805.c Mon Feb 24 10:40:35 2020 (r358279) @@ -97,6 +97,7 @@ struct rk805_softc { int nregs; }; +static int rk805_regnode_status(struct regnode *regnode, int *status); static int rk805_regnode_set_voltage(struct regnode *regnode, int min_uvolt, int max_uvolt, int *udelay); @@ -351,6 +352,7 @@ rk805_read(device_t dev, uint8_t reg, uint8_t *data, u static int rk805_write(device_t dev, uint8_t reg, uint8_t data) { + return (iicdev_writeto(dev, reg, &data, 1, IIC_INTRWAIT)); } @@ -359,7 +361,7 @@ rk805_regnode_init(struct regnode *regnode) { struct rk805_reg_sc *sc; struct regnode_std_param *param; - int rv, udelay; + int rv, udelay, status; sc = regnode_get_softc(regnode); param = regnode_get_stdparam(regnode); @@ -367,13 +369,17 @@ rk805_regnode_init(struct regnode *regnode) return (0); /* - * Set the regulator at the correct voltage + * Set the regulator at the correct voltage if it is not enabled. * Do not enable it, this is will be done either by a * consumer or by regnode_set_constraint if boot_on is true */ + rv = rk805_regnode_status(regnode, &status); + if (rv != 0 || status == REGULATOR_STATUS_ENABLED) + return (rv); + rv = rk805_regnode_set_voltage(regnode, param->min_uvolt, param->max_uvolt, &udelay); - if (rv != 0) + if (udelay != 0) DELAY(udelay); return (rv);