From nobody Thu Aug 11 08:28:59 2022 X-Original-To: dev-commits-src-all@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 4M3Khq5S8lz4YRQJ; Thu, 11 Aug 2022 08:28:59 +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 4M3Khq4z4tz3YZP; Thu, 11 Aug 2022 08:28:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1660206539; 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=cnwEthjDhEG9Gtq7XAcBzes0BwvEUNzUjMzXusfHShM=; b=BvkfYS/HFc3/Nzc9PB9tg3b8icwYcsdzrmHPWdYAwWh3c4ClqoC2HNn00YPtZurVdcLiyt vlwlDvFt7CWCS7nLQwjhVscCA2PCCLj4b4ZA4ZpAEp/pzG26cIYEGs458nHJXvvSUhh2V0 ODWd/L5w8724CJiwJGjZ3Fb94xZL6TFe08Cq8uECz10yTv3sECuEdvM9IOImQeZvbVvgI+ n8KyjgrW7zX7RUpuBQJWygnU2PYDsA+0PFyVGx/o9oLKv11ViHA64ZRzWlWpMRPmgBZ2ke jcLmTS0ZHzsByGyKel8KYXw0kUwIOM7scrQe2AM1M/oMt+YyZ5eAPs/byYqhRQ== 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 4M3Khq3YlrzlC3; Thu, 11 Aug 2022 08:28:59 +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 27B8SxJ6003740; Thu, 11 Aug 2022 08:28:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 27B8Sxd3003739; Thu, 11 Aug 2022 08:28:59 GMT (envelope-from git) Date: Thu, 11 Aug 2022 08:28:59 GMT Message-Id: <202208110828.27B8Sxd3003739@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ganbold Tsagaankhuu Subject: git: 0b6d133c08fc - main - Add RockChip RK356X support to existing RockChip thermal driver. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ganbold X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0b6d133c08fcc3ae63228f32429581d5764e6fe5 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1660206539; 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=cnwEthjDhEG9Gtq7XAcBzes0BwvEUNzUjMzXusfHShM=; b=GVX0PaqqgIatP5dLWhsUZW2/84PE/IlXGMVvpfKoCIWNaY49UIsLavwPG97HUoUd7QqP0R /9DR+Gb02CP+3UMAGskadwY4Pyh/FLQfB/hOIt73RSIBmkhSAAV4HKuig0ZTH0A5c7zI7s aFwnhOouYK9y9x6iz2mrpGBms02s2+1GbC8CqcXVRJTwyqDVS0JNWzBG/KzfBI2f4RK8yA ExMj2xUBLt3RVEWDS+LCxP2c1KNEU/+Nq+autYcxbuTwuBCRdQoPgpzC1V2c3ACfgMCNTe 02YdmZTJRKVPNyAD/Lg1iG4JWuh2pegR+ECDbSaIl5P+ijTO1k544EXgqDIeEA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1660206539; a=rsa-sha256; cv=none; b=hMer6y3h5qPwiYMROIexeMuG0R5BJpL9buU5FXF4iFTeG7V/B/hEOzdCUVxVIvhE0rGfJ2 RsTSm4ZuLdzv+o4yzCBa3i8PZEC/wkNYc1/YydlEfxcGQpWntpibt51R7BOnA+M9V85CEO c3L1KWUCRdxC2ddkrlcmPs8Jxp3d1J9WIW4qe08uT9zZmZR7GKoJh33Tzmw3889eNsTjtG dSwDPNMkKMh7YHsYd9xI4sPC7TB97nT3qzrqQTvwCZFh7hz+U1OwK/KBwNicbSnsDJD4RA vnpqDCLITMQykmtYSfwJWTQOX7AyN1Y0QF27ZrV9uavBmkUxo/s+5P0N0kVtpg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by ganbold: URL: https://cgit.FreeBSD.org/src/commit/?id=0b6d133c08fcc3ae63228f32429581d5764e6fe5 commit 0b6d133c08fcc3ae63228f32429581d5764e6fe5 Author: Søren Schmidt AuthorDate: 2022-08-11 08:26:39 +0000 Commit: Ganbold Tsagaankhuu CommitDate: 2022-08-11 08:26:39 +0000 Add RockChip RK356X support to existing RockChip thermal driver. --- sys/arm64/rockchip/rk_tsadc.c | 118 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 104 insertions(+), 14 deletions(-) diff --git a/sys/arm64/rockchip/rk_tsadc.c b/sys/arm64/rockchip/rk_tsadc.c index 9d5d887e27fb..2fdf13a87d79 100644 --- a/sys/arm64/rockchip/rk_tsadc.c +++ b/sys/arm64/rockchip/rk_tsadc.c @@ -55,6 +55,11 @@ __FBSDID("$FreeBSD$"); #include "syscon_if.h" #include "rk_tsadc_if.h" +/* Version of HW */ +#define TSADC_V2 1 +#define TSADC_V3 2 +#define TSADC_V7 3 + /* Global registers */ #define TSADC_USER_CON 0x000 #define TSADC_AUTO_CON 0x004 @@ -78,7 +83,7 @@ __FBSDID("$FreeBSD$"); #define TSADC_COMP0_LOW_INT 0x080 /* V3 only */ #define TSADC_COMP1_LOW_INT 0x084 /* V3 only */ -/* GFR Bits */ +/* V3 GFR registers */ #define GRF_SARADC_TESTBIT 0x0e644 #define GRF_SARADC_TESTBIT_ON (0x10001 << 2) #define GRF_TSADC_TESTBIT_L 0x0e648 @@ -87,6 +92,13 @@ __FBSDID("$FreeBSD$"); #define GRF_TSADC_VCM_EN_H (0x10001 << 7) #define GRF_TSADC_TESTBIT_H_ON (0x10001 << 2) +/* V7 GRF register */ +#define GRF_TSADC_CON 0x0600 +#define GRF_TSADC_ANA_REG0 (0x10001 << 0) +#define GRF_TSADC_ANA_REG1 (0x10001 << 1) +#define GRF_TSADC_ANA_REG2 (0x10001 << 2) +#define GRF_TSADC_TSEN (0x10001 << 8) + #define WR4(_sc, _r, _v) bus_write_4((_sc)->mem_res, (_r), (_v)) #define RD4(_sc, _r) bus_read_4((_sc)->mem_res, (_r)) @@ -109,7 +121,7 @@ struct tsadc_calib_info { }; struct tsadc_conf { - int use_syscon; + int version; int q_sel_ntc; int shutdown_temp; int shutdown_mode; @@ -183,7 +195,7 @@ struct tsensor rk3288_tsensors[] = { }; struct tsadc_conf rk3288_tsadc_conf = { - .use_syscon = 0, + .version = TSADC_V2, .q_sel_ntc = 0, .shutdown_temp = 95000, .shutdown_mode = 1, /* GPIO */ @@ -237,7 +249,7 @@ static struct tsensor rk3328_tsensors[] = { }; static struct tsadc_conf rk3328_tsadc_conf = { - .use_syscon = 0, + .version = TSADC_V2, .q_sel_ntc = 1, .shutdown_temp = 95000, .shutdown_mode = 0, /* CRU */ @@ -293,7 +305,7 @@ static struct tsensor rk3399_tsensors[] = { }; static struct tsadc_conf rk3399_tsadc_conf = { - .use_syscon = 1, + .version = TSADC_V3, .q_sel_ntc = 1, .shutdown_temp = 95000, .shutdown_mode = 1, /* GPIO */ @@ -306,10 +318,68 @@ static struct tsadc_conf rk3399_tsadc_conf = { } }; +static struct rk_calib_entry rk3568_calib_data[] = { + {0, -40000}, + {1584, -40000}, + {1620, -35000}, + {1652, -30000}, + {1688, -25000}, + {1720, -20000}, + {1756, -15000}, + {1788, -10000}, + {1824, -5000}, + {1856, 0}, + {1892, 5000}, + {1924, 10000}, + {1956, 15000}, + {1992, 20000}, + {2024, 25000}, + {2060, 30000}, + {2092, 35000}, + {2128, 40000}, + {2160, 45000}, + {2196, 50000}, + {2228, 55000}, + {2264, 60000}, + {2300, 65000}, + {2332, 70000}, + {2368, 75000}, + {2400, 80000}, + {2436, 85000}, + {2468, 90000}, + {2500, 95000}, + {2536, 100000}, + {2572, 105000}, + {2604, 110000}, + {2636, 115000}, + {2672, 120000}, + {2704, 125000}, +}; + +static struct tsensor rk3568_tsensors[] = { + { .channel = 0, .id = 0, .name = "CPU"}, + { .channel = 1, .id = 1, .name = "GPU"}, +}; + +static struct tsadc_conf rk3568_tsadc_conf = { + .version = TSADC_V7, + .q_sel_ntc = 1, + .shutdown_temp = 95000, + .shutdown_mode = 1, /* GPIO */ + .shutdown_pol = 0, /* Low */ + .tsensors = rk3568_tsensors, + .ntsensors = nitems(rk3568_tsensors), + .calib_info = { + .table = rk3568_calib_data, + .nentries = nitems(rk3568_calib_data), + } +}; + static struct ofw_compat_data compat_data[] = { {"rockchip,rk3288-tsadc", (uintptr_t)&rk3288_tsadc_conf}, {"rockchip,rk3328-tsadc", (uintptr_t)&rk3328_tsadc_conf}, {"rockchip,rk3399-tsadc", (uintptr_t)&rk3399_tsadc_conf}, + {"rockchip,rk3568-tsadc", (uintptr_t)&rk3568_tsadc_conf}, {NULL, 0} }; @@ -445,13 +515,15 @@ tsadc_init(struct tsadc_softc *sc) val |= TSADC_AUTO_Q_SEL; WR4(sc, TSADC_AUTO_CON, val); - if (!sc->conf->use_syscon) { + switch (sc->conf->version) { + case TSADC_V2: /* V2 init */ WR4(sc, TSADC_AUTO_PERIOD, 250); /* 250 ms */ WR4(sc, TSADC_AUTO_PERIOD_HT, 50); /* 50 ms */ WR4(sc, TSADC_HIGHT_INT_DEBOUNCE, 4); WR4(sc, TSADC_HIGHT_TSHUT_DEBOUNCE, 4); - } else { + break; + case TSADC_V3: /* V3 init */ if (sc->grf == NULL) { /* Errata: adjust interleave to working value */ @@ -473,6 +545,26 @@ tsadc_init(struct tsadc_softc *sc) WR4(sc, TSADC_AUTO_PERIOD_HT, 1875); /* 2.5 ms */ WR4(sc, TSADC_HIGHT_INT_DEBOUNCE, 4); WR4(sc, TSADC_HIGHT_TSHUT_DEBOUNCE, 4); + break; + case TSADC_V7: + /* V7 init */ + WR4(sc, TSADC_USER_CON, 0xfc0); /* 97us, at least 90us */ + WR4(sc, TSADC_AUTO_PERIOD, 1622); /* 2.5ms */ + WR4(sc, TSADC_HIGHT_INT_DEBOUNCE, 4); + WR4(sc, TSADC_AUTO_PERIOD_HT, 1622); /* 2.5ms */ + WR4(sc, TSADC_HIGHT_TSHUT_DEBOUNCE, 4); + if (sc->grf) { + SYSCON_WRITE_4(sc->grf, GRF_TSADC_CON, GRF_TSADC_TSEN); + DELAY(15); /* 10 usec min */ + SYSCON_WRITE_4(sc->grf, GRF_TSADC_CON, + GRF_TSADC_ANA_REG0); + SYSCON_WRITE_4(sc->grf, GRF_TSADC_CON, + GRF_TSADC_ANA_REG1); + SYSCON_WRITE_4(sc->grf, GRF_TSADC_CON, + GRF_TSADC_ANA_REG2); + DELAY(100); /* 90 usec min */ + } + break; } } @@ -485,13 +577,11 @@ tsadc_read_temp(struct tsadc_softc *sc, struct tsensor *sensor, int *temp) *temp = tsadc_raw_to_temp(sc, val); #ifdef DEBUG - printf("%s: Sensor(id: %d, ch: %d), temp: %d\n", __func__, - sensor->id, sensor->channel, *temp); - printf(" status: 0x%08X, 0x%08X\n", - RD4(sc, TSADC_USER_CON), - RD4(sc, TSADC_AUTO_CON)); - printf(" Data: 0x%08X, 0x%08X, 0x%08X\n", - RD4(sc, TSADC_DATA(sensor->channel)), + device_printf(sc->dev, "%s: Sensor(id: %d, ch: %d), val: %d temp: %d\n", + __func__, sensor->id, sensor->channel, val, *temp); + device_printf(sc->dev, "%s: user_con=0x%08x auto_con=0x%08x " + "comp_int=0x%08x comp_shut=0x%08x\n", + __func__, RD4(sc, TSADC_USER_CON), RD4(sc, TSADC_AUTO_CON), RD4(sc, TSADC_COMP_INT(sensor->channel)), RD4(sc, TSADC_COMP_SHUT(sensor->channel))); #endif