From nobody Sun Feb 20 11:39:02 2022 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C4B5219D15E9; Sun, 20 Feb 2022 11:39:02 +0000 (UTC) (envelope-from git@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4K1k3V4Cptz4hGJ; Sun, 20 Feb 2022 11:39:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1645357142; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WmZ3YIRSDY5Li6Jy9FlRmikwykKEcLIG0J+1Pn1I2Wo=; b=X6QOmHvDhK9ciLamB+KrAUMyL1Qfw90RnjCXLRrsufOfOjxaV7vkojdkElQTayajwBajh2 a+iD3Vcg9hsf8WRvjGflyoWLms7rqBHBu/es4MDTY7hAkRrmPSAG/5kzy4xRhW6zOBPAaG sSSHfsMTRErUOTLrnuWsDvIpOJenM7l5/LzkoVAnqn/RCebZv9vrxOI+Ax+W/AUQRbXFtV GBW4Bj8jrhL0iVKYjPLB3qEwXLX93zXmsvXnn4IqXXiQJC6fXyWI71V1HS5mt6ai6/kwPk SqUKM1JMSVAGUqdXyxyM1cYIqFFLp828Hmv5w2lfhwJkSk2awaQJtQQyjdNghw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6DFD41BC50; Sun, 20 Feb 2022 11:39:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 21KBd23M072925; Sun, 20 Feb 2022 11:39:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 21KBd2Bw072924; Sun, 20 Feb 2022 11:39:02 GMT (envelope-from git) Date: Sun, 20 Feb 2022 11:39:02 GMT Message-Id: <202202201139.21KBd2Bw072924@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michal Meloun Subject: git: a534b50e245d - main - tegra: Improve the detection of the secondary function (RTC) of the MAX77620. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mmel X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a534b50e245d801af887d91b5d48ebcf120aa039 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1645357142; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WmZ3YIRSDY5Li6Jy9FlRmikwykKEcLIG0J+1Pn1I2Wo=; b=yG8zqt6alwm3ooBz6u/UFqC6Wrwofqqx5MflIbnk5OaiZw3D1Lf7rbPtxCpy/9uS3vYdta ItQTvGua4Uckiajsed88Tit2Xez4pVncaBgtDU+P2I+22Vy5QeZiYJtRHpZWu5R3SB69QR SmmcRGklQ86NAGxDgw2pVIVVSYar/cwOZGg28ZMderuNIhL+OtSxmeEgLVPUoT/vZlYLFA 5H8n2n1MQCMMrh75HD7qGIeX7i5A5tr5iFlKQfdbey0SA+UjIGcOP0zRsIMUVEoiLdAzQU hbxDCJvKc7PX8Qtr1oXzi3WbI2DV8h4kH6MtfXOWJFpywlY6OLjrp6kx9Y02vQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1645357142; a=rsa-sha256; cv=none; b=hM5a/HOEKarRZ2BVKtSMQmfW1HSMpGtvJQww7ZvY1owdnSpssbBpbSIAvg9vLcbnbwulss u9NLMMDZYB8M3L3Xlcs/aLMM+tTV61SDkTW8J/GmOOcS4EVSvQIGzE6mzQxZBoOd8ksPDd 8XF+W/JGs4KFsuP/iLo+ZG+uDl2aSjg1wACagDN3YvKWvfhD5HlhWXLbzsT5FgW6PMc8zk 5z9kEMEU+LIWjhhb9U/1aEdGVDTEZgOx/us97j8SwonAa4JZTgEnUkR/TUwrukWOblzPwr lm0j/LszMkFDkPnVclqfg3dW8iA+nhCOTG3bJUydY8dm4/b8kUx/P8np2Gj+Ug== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mmel: URL: https://cgit.FreeBSD.org/src/commit/?id=a534b50e245d801af887d91b5d48ebcf120aa039 commit a534b50e245d801af887d91b5d48ebcf120aa039 Author: Michal Meloun AuthorDate: 2022-02-20 10:18:42 +0000 Commit: Michal Meloun CommitDate: 2022-02-20 11:26:04 +0000 tegra: Improve the detection of the secondary function (RTC) of the MAX77620. Use the new ofw_iicbus_set_devinfo() method to implant an OFW compatibility string for a manually created RTC sub-device. MFC after: 4 weeks Reported by: archimedes.gaviola_at_gmail.com bscott_at_bunyatech.com.au --- sys/arm64/nvidia/tegra210/max77620_rtc.c | 45 ++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/sys/arm64/nvidia/tegra210/max77620_rtc.c b/sys/arm64/nvidia/tegra210/max77620_rtc.c index 09da17ad7d8f..4dace946a891 100644 --- a/sys/arm64/nvidia/tegra210/max77620_rtc.c +++ b/sys/arm64/nvidia/tegra210/max77620_rtc.c @@ -40,9 +40,12 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include "clock_if.h" +#include "ofw_iicbus_if.h" #include "max77620.h" + #define MAX77620_RTC_INT 0x00 #define MAX77620_RTC_INTM 0x01 #define MAX77620_RTC_CONTROLM 0x02 @@ -91,6 +94,8 @@ struct max77620_rtc_softc { int bus_addr; }; +char max77620_rtc_compat[] = "maxim,max77620_rtc"; + /* * Raw register access function. */ @@ -304,12 +309,16 @@ max77620_rtc_settime(device_t dev, struct timespec *ts) static int max77620_rtc_probe(device_t dev) { - struct iicbus_ivar *dinfo; - - dinfo = device_get_ivars(dev); - if (dinfo == NULL) + const char *compat; + + /* + * TODO: + * ofw_bus_is_compatible() should use compat string from devinfo cache + * maximum size of OFW property should be defined in public header + */ + if ((compat = ofw_bus_get_compat(dev)) == NULL) return (ENXIO); - if (dinfo->addr != MAX77620_RTC_I2C_ADDR << 1) + if (strncasecmp(compat, max77620_rtc_compat, 255) != 0) return (ENXIO); device_set_desc(dev, "MAX77620 RTC"); @@ -356,10 +365,6 @@ fail: return (rv); } -/* - * The secondary address of MAX77620 (RTC function) is not in DTB, - * add it manualy - */ static int max77620_rtc_detach(device_t dev) { @@ -371,25 +376,31 @@ max77620_rtc_detach(device_t dev) return (bus_generic_detach(dev)); } +/* + * The secondary address of MAX77620 (RTC function) is not in DT, + * add it manualy as subdevice + */ int max77620_rtc_create(struct max77620_softc *sc, phandle_t node) { device_t parent, child; - struct iicbus_ivar *dinfo; + int rv; parent = device_get_parent(sc->dev); + child = BUS_ADD_CHILD(parent, 0, NULL, -1); - if (child == 0) { - device_printf(sc->dev, "Cannot add MAX77620 RTC device.\n"); + if (child == NULL) { + device_printf(sc->dev, "Cannot create MAX77620 RTC device.\n"); return (ENXIO); } - dinfo = device_get_ivars(child); - if (dinfo == NULL) { - device_printf(sc->dev, - "Cannot set I2Caddress for MAX77620 RTC.\n"); + + rv = OFW_IICBUS_SET_DEVINFO(parent, child, -1, "rtc@68", + max77620_rtc_compat, MAX77620_RTC_I2C_ADDR << 1); + if (rv != 0) { + device_printf(sc->dev, "Cannot setup MAX77620 RTC device.\n"); return (ENXIO); } - dinfo->addr = MAX77620_RTC_I2C_ADDR << 1; + return (0); }