From nobody Sun Jun 21 10:06:47 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 18B73C433EF for ; Wed, 30 Mar 2022 19:09:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350688AbiC3TLO (ORCPT ); Wed, 30 Mar 2022 15:11:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58616 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350584AbiC3TK4 (ORCPT ); Wed, 30 Mar 2022 15:10:56 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 57CF52AE3B; Wed, 30 Mar 2022 12:09:06 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id DD56461469; Wed, 30 Mar 2022 19:09:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21167C34114; Wed, 30 Mar 2022 19:09:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1648667345; bh=IMGRYL4762RuYiDXn6s/1D+8F+g1tetqqyWpwo+gfbk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=O9twGcLsm9cZmNGNFmP/AU/sES2pORGckjk0YHsHiSkLME17uayzqMKrWDdg6OmvP xCQ6C91sh+i7/W5hp8PwCSAW3yttC3mPYEQI+Il0ho+SXTnLEeY26jPF7ICctp8Pkv LRP0Y9B/ixzv4yYPtwA8pfStwRS2nmVe2x8tKCH9KuVHt7HX4zMMsnFbHkHA0qjeMb V5Wu0URZfqtTWEBPFKQtanAf3tUl1EFTt9AzTYJrBg5q8t3OrYSUKYCEANYeYo0qk1 NHhSUiLVcfdfrRjaSIzQnP44ikUoJD1wRWWjAdPIefSOvZ6PfTSr6SHLdF5mdhAwxv bZfxApeaRBcfw== Received: by wens.tw (Postfix, from userid 1000) id 187C95F899; Thu, 31 Mar 2022 03:09:02 +0800 (CST) From: Chen-Yu Tsai To: Javier Martinez Canillas , Maxime Ripard , Rob Herring , Krzysztof Kozlowski , David Airlie , Daniel Vetter Cc: Chen-Yu Tsai , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/4] dt-bindings: vendor-prefixes: Add prefix for SINO WEALTH Eletronics Ltd. Date: Thu, 31 Mar 2022 03:08:43 +0800 Message-Id: <20220330190846.13997-2-wens@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220330190846.13997-1-wens@kernel.org> References: <20220330190846.13997-1-wens@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Chen-Yu Tsai Add a vendor prefix entry for SINO WEALTH Eletronics Ltd. (http://www.sinowealth.com). Signed-off-by: Chen-Yu Tsai Reviewed-by: Javier Martinez Canillas --- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Docum= entation/devicetree/bindings/vendor-prefixes.yaml index 01430973ecec..bb4ae59a3c89 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -1128,6 +1128,8 @@ patternProperties: description: Cypress Semiconductor Corporation (Simtek Corporation) "^sinlinx,.*": description: Sinlinx Electronics Technology Co., LTD + "^sinowealth,.*": + description: SINO WEALTH Electronic Ltd. "^sinovoip,.*": description: SinoVoip Co., Ltd "^sipeed,.*": --=20 2.34.1 From nobody Sun Jun 21 10:06:47 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3EE2FC433EF for ; Wed, 30 Mar 2022 19:09:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350675AbiC3TLE (ORCPT ); Wed, 30 Mar 2022 15:11:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57908 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350614AbiC3TKz (ORCPT ); Wed, 30 Mar 2022 15:10:55 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04ABF2FE5F; Wed, 30 Mar 2022 12:09:08 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 9E761B81DA6; Wed, 30 Mar 2022 19:09:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1EA65C36AE5; Wed, 30 Mar 2022 19:09:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1648667345; bh=8q5C1g4P8gw7/AKnUUnvd1mR2xSIma9c2c2WnS5gV5Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hDuecAEv1wA9+HkDAa/jaSghorJ4i0iwtKQajK/syzW3Jkw9YXzv9+fiQ9dUi+G9R lH3ZJnco5SLU72OGjPXr2ML+3/8T48kOodA8DcdFiURkVISSrPtYpa5P2bdUdNtnh9 wa+Q36kJmFhwZrKc/UJsavR1qJRsdJKfX0AfrcFr81VAZdTfD8lXZkFV300UKsxGze qMGcEoI2W2soXAtqvOIxQo9ahM8pWvGWR7rD8ABT90qwToqEYKa1cPz4qXWmHcEjBf YhUTGdpKbx9MLcgMknwm0e5v3z/ZvzuVB7JFCCItHX6tRhOOcFB3574rZhxu1uSyD4 PU3Ahc2M2LU5g== Received: by wens.tw (Postfix, from userid 1000) id 428045FBF9; Thu, 31 Mar 2022 03:09:02 +0800 (CST) From: Chen-Yu Tsai To: Javier Martinez Canillas , Maxime Ripard , Rob Herring , Krzysztof Kozlowski , David Airlie , Daniel Vetter Cc: Chen-Yu Tsai , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/4] dt-bindings: display: ssd1307fb: Add entry for SINO WEALTH SH1106 Date: Thu, 31 Mar 2022 03:08:44 +0800 Message-Id: <20220330190846.13997-3-wens@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220330190846.13997-1-wens@kernel.org> References: <20220330190846.13997-1-wens@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Chen-Yu Tsai The SINO WEALTH SH1106 is an OLED display driver that is somewhat compatible with the SSD1306. It supports a slightly wider display, at 132 instead of 128 pixels. The basic commands are the same, but the SH1106 doesn't support the horizontal or vertical address modes. Add a compatible string for it. Signed-off-by: Chen-Yu Tsai Reviewed-by: Javier Martinez Canillas --- Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.ya= ml b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml index 9baafd0c42dd..1ac016a2d847 100644 --- a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml +++ b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml @@ -13,6 +13,7 @@ maintainers: properties: compatible: enum: + - sinowealth,sh1106-i2c - solomon,ssd1305fb-i2c - solomon,ssd1306fb-i2c - solomon,ssd1307fb-i2c --=20 2.34.1 From nobody Sun Jun 21 10:06:47 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B33D7C433F5 for ; Wed, 30 Mar 2022 19:09:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350592AbiC3TLR (ORCPT ); Wed, 30 Mar 2022 15:11:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58082 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350623AbiC3TK4 (ORCPT ); Wed, 30 Mar 2022 15:10:56 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EDEB42F390; Wed, 30 Mar 2022 12:09:07 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 78690B81E28; Wed, 30 Mar 2022 19:09:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A6E0C340F0; Wed, 30 Mar 2022 19:09:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1648667345; bh=1L+9DBe2kir+EVNigI3BdqqXM81kBYgbIhIJB304CSA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NR4uXmqaP8m/xPFS/kwMVrQVjDg3GeY3yjyYEOG9drHDq3cEOwwFbKcQjT33RBlml tBhtIbrpDZazvtumb6YFQfdZpFj5djNp9UocaqmDA6wsAGULpjcbv4m2HsodlALGJP KFhN91/LPFVyCJPQ4o/scYCvz6XxrSn0ML5XQ7oxkAO1AfYGGyCoJ4Q11QCcZ4va8w aTKSxp6mbjxeqxO/4mnaVaqao/tFVMVHy5TMf9m1SvotV/vbNnu/gONB+BVsQT8o73 5iL43rVyAlDG6XrEC7Dpe0TEhA8D8uNAbGlpyb/k4N4XMn+53FYBC5dY/Dy00dZT/I ddx/RLdQFp3kQ== Received: by wens.tw (Postfix, from userid 1000) id 557E75FD11; Thu, 31 Mar 2022 03:09:02 +0800 (CST) From: Chen-Yu Tsai To: Javier Martinez Canillas , Maxime Ripard , Rob Herring , Krzysztof Kozlowski , David Airlie , Daniel Vetter Cc: Chen-Yu Tsai , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/4] drm: ssd130x: Support page addressing mode Date: Thu, 31 Mar 2022 03:08:45 +0800 Message-Id: <20220330190846.13997-4-wens@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220330190846.13997-1-wens@kernel.org> References: <20220330190846.13997-1-wens@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Chen-Yu Tsai On the SINO WEALTH SH1106, which is mostly compatible with the SSD1306, only the basic page addressing mode is supported. This addressing mode is not as easy to use compared to the currently supported horizontal addressing mode, as the page address has to be set prior to writing out each page, and each page must be written out separately as a result. Also, there is no way to force the column address to wrap around early, thus the column address must also be reset for each page to be accurate. Add support for this addressing mode, with a flag to choose it. This flag is designed to be set from the device info data structure, but can be extended to be explicitly forced on through a device tree property if such a need arises. Signed-off-by: Chen-Yu Tsai Reviewed-by: Javier Martinez Canillas --- drivers/gpu/drm/solomon/ssd130x.c | 72 ++++++++++++++++++++++++++++--- drivers/gpu/drm/solomon/ssd130x.h | 2 + 2 files changed, 67 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ss= d130x.c index d08d86ef07bc..21040d8bf9d1 100644 --- a/drivers/gpu/drm/solomon/ssd130x.c +++ b/drivers/gpu/drm/solomon/ssd130x.c @@ -42,6 +42,8 @@ #define SSD130X_DATA 0x40 #define SSD130X_COMMAND 0x80 =20 +#define SSD130X_PAGE_COL_START_LOW 0x00 +#define SSD130X_PAGE_COL_START_HIGH 0x10 #define SSD130X_SET_ADDRESS_MODE 0x20 #define SSD130X_SET_COL_RANGE 0x21 #define SSD130X_SET_PAGE_RANGE 0x22 @@ -61,6 +63,10 @@ #define SSD130X_SET_COM_PINS_CONFIG 0xda #define SSD130X_SET_VCOMH 0xdb =20 +#define SSD130X_PAGE_COL_START_MASK GENMASK(3, 0) +#define SSD130X_PAGE_COL_START_SET(val) FIELD_PREP(SSD130X_PAGE_COL_START= _MASK, (val)) +#define SSD130X_START_PAGE_ADDRESS_MASK GENMASK(2, 0) +#define SSD130X_START_PAGE_ADDRESS_SET(val) FIELD_PREP(SSD130X_START_PAGE_= ADDRESS_MASK, (val)) #define SSD130X_SET_SEG_REMAP_MASK GENMASK(0, 0) #define SSD130X_SET_SEG_REMAP_SET(val) FIELD_PREP(SSD130X_SET_SEG_REMAP_M= ASK, (val)) #define SSD130X_SET_COM_SCAN_DIR_MASK GENMASK(3, 3) @@ -130,6 +136,7 @@ static int ssd130x_write_cmd(struct ssd130x_device *ssd= 130x, int count, return ret; } =20 +/* Set address range for horizontal/vertical addressing modes */ static int ssd130x_set_col_range(struct ssd130x_device *ssd130x, u8 col_start, u8 cols) { @@ -166,6 +173,26 @@ static int ssd130x_set_page_range(struct ssd130x_devic= e *ssd130x, return 0; } =20 +/* Set page and column start address for page addressing mode */ +static int ssd130x_set_page_pos(struct ssd130x_device *ssd130x, + u8 page_start, u8 col_start) +{ + int ret; + u32 page, col_low, col_high; + + page =3D SSD130X_START_PAGE_ADDRESS | + SSD130X_START_PAGE_ADDRESS_SET(page_start); + col_low =3D SSD130X_PAGE_COL_START_LOW | + SSD130X_PAGE_COL_START_SET(col_start & 0xf); + col_high =3D SSD130X_PAGE_COL_START_HIGH | + SSD130X_PAGE_COL_START_SET((col_start >> 4) & 0xf); + ret =3D ssd130x_write_cmd(ssd130x, 3, page, col_low, col_high); + if (ret < 0) + return ret; + + return 0; +} + static int ssd130x_pwm_enable(struct ssd130x_device *ssd130x) { struct device *dev =3D ssd130x->dev; @@ -342,6 +369,11 @@ static int ssd130x_init(struct ssd130x_device *ssd130x) } } =20 + /* Switch to page addressing mode */ + if (ssd130x->page_address_mode) + return ssd130x_write_cmd(ssd130x, 2, SSD130X_SET_ADDRESS_MODE, + SSD130X_SET_ADDRESS_MODE_PAGE); + /* Switch to horizontal addressing mode */ return ssd130x_write_cmd(ssd130x, 2, SSD130X_SET_ADDRESS_MODE, SSD130X_SET_ADDRESS_MODE_HORIZONTAL); @@ -393,13 +425,16 @@ static int ssd130x_update_rect(struct ssd130x_device = *ssd130x, u8 *buf, * (5) A4 B4 C4 D4 E4 F4 G4 H4 */ =20 - ret =3D ssd130x_set_col_range(ssd130x, ssd130x->col_offset + x, width); - if (ret < 0) - goto out_free; + if (!ssd130x->page_address_mode) { + /* Set address range for horizontal addressing mode */ + ret =3D ssd130x_set_col_range(ssd130x, ssd130x->col_offset + x, width); + if (ret < 0) + goto out_free; =20 - ret =3D ssd130x_set_page_range(ssd130x, ssd130x->page_offset + y / 8, pag= es); - if (ret < 0) - goto out_free; + ret =3D ssd130x_set_page_range(ssd130x, ssd130x->page_offset + y / 8, pa= ges); + if (ret < 0) + goto out_free; + } =20 for (i =3D y / 8; i < y / 8 + pages; i++) { int m =3D 8; @@ -418,9 +453,29 @@ static int ssd130x_update_rect(struct ssd130x_device *= ssd130x, u8 *buf, } data_array[array_idx++] =3D data; } + + /* + * In page addressing mode, the start address needs to be reset, + * and each page then needs to be written out separately. + */ + if (ssd130x->page_address_mode) { + ret =3D ssd130x_set_page_pos(ssd130x, + ssd130x->page_offset + i, + ssd130x->col_offset + x); + if (ret < 0) + goto out_free; + + ret =3D ssd130x_write_data(ssd130x, data_array, width); + if (ret < 0) + goto out_free; + + array_idx =3D 0; + } } =20 - ret =3D ssd130x_write_data(ssd130x, data_array, width * pages); + /* Write out update in one go if we aren't using page addressing mode */ + if (!ssd130x->page_address_mode) + ret =3D ssd130x_write_data(ssd130x, data_array, width * pages); =20 out_free: kfree(data_array); @@ -796,6 +851,9 @@ struct ssd130x_device *ssd130x_probe(struct device *dev= , struct regmap *regmap) ssd130x->regmap =3D regmap; ssd130x->device_info =3D device_get_match_data(dev); =20 + if (ssd130x->device_info->page_mode_only) + ssd130x->page_address_mode =3D 1; + ssd130x_parse_properties(ssd130x); =20 ret =3D ssd130x_get_resources(ssd130x); diff --git a/drivers/gpu/drm/solomon/ssd130x.h b/drivers/gpu/drm/solomon/ss= d130x.h index cd21cdccb566..f5b062576fdf 100644 --- a/drivers/gpu/drm/solomon/ssd130x.h +++ b/drivers/gpu/drm/solomon/ssd130x.h @@ -24,6 +24,7 @@ struct ssd130x_deviceinfo { u32 default_dclk_frq; int need_pwm; int need_chargepump; + bool page_mode_only; }; =20 struct ssd130x_device { @@ -38,6 +39,7 @@ struct ssd130x_device { =20 const struct ssd130x_deviceinfo *device_info; =20 + unsigned page_address_mode : 1; unsigned area_color_enable : 1; unsigned com_invdir : 1; unsigned com_lrremap : 1; --=20 2.34.1 From nobody Sun Jun 21 10:06:47 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B0489C4332F for ; Wed, 30 Mar 2022 19:09:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350023AbiC3TK7 (ORCPT ); Wed, 30 Mar 2022 15:10:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58522 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350608AbiC3TKz (ORCPT ); Wed, 30 Mar 2022 15:10:55 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5826E2B182; Wed, 30 Mar 2022 12:09:06 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id E8F9A6147F; Wed, 30 Mar 2022 19:09:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2419DC34115; Wed, 30 Mar 2022 19:09:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1648667345; bh=aBj7vr8bHTtNxb7+1bJTixHNBVug0LavLYi8m0fmKZg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IXO513sxXiSOPY3Ln6Kuo2udw34ocaGJuKoiFX6Voh61t/6oF9UpY+7GB/7wNOApT x8ElOEeHmQ4jJSJ8b/Oy2Thxnx3lNN8sk/gOo3UVdSsUgnbNnmPffv+bzkIR0lMUs7 ILjcq6cHYwB0GmYTorb+YIqOq+FBNXVVFOm4uTeL/cauWffMJCKX5UhI3tOb5rdLNC /dzpzt7CWMgrYCrD/h+qS7WgdmPlk8qForPL1XC8OzZnkkoGqKsMGBlzn5Lsmjxyt/ 5jM8HEp14miHZi0M+utd/Tw7FBMFdatRoFpkUUGHriifeLQNg7aXxo057s9iwUrY8F HXzhcyGjFaizg== Received: by wens.tw (Postfix, from userid 1000) id 62BD75FD20; Thu, 31 Mar 2022 03:09:02 +0800 (CST) From: Chen-Yu Tsai To: Javier Martinez Canillas , Maxime Ripard , Rob Herring , Krzysztof Kozlowski , David Airlie , Daniel Vetter Cc: Chen-Yu Tsai , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/4] drm: ssd130x: Add support for SINO WEALTH SH1106 Date: Thu, 31 Mar 2022 03:08:46 +0800 Message-Id: <20220330190846.13997-5-wens@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220330190846.13997-1-wens@kernel.org> References: <20220330190846.13997-1-wens@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Chen-Yu Tsai The SINO WEALTH SH1106 is an OLED display driver that is somewhat compatible with the SSD1306. It supports a slightly wider display, at 132 instead of 128 pixels. The basic commands are the same, but the SH1106 doesn't support the horizontal or vertical address modes. Add support for this display driver. The default values for some of the hardware settings are taken from the datasheet. Signed-off-by: Chen-Yu Tsai Reviewed-by: Javier Martinez Canillas --- drivers/gpu/drm/solomon/ssd130x-i2c.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/gpu/drm/solomon/ssd130x-i2c.c b/drivers/gpu/drm/solomo= n/ssd130x-i2c.c index 3126aeda4ced..d099b241dd3f 100644 --- a/drivers/gpu/drm/solomon/ssd130x-i2c.c +++ b/drivers/gpu/drm/solomon/ssd130x-i2c.c @@ -53,6 +53,13 @@ static void ssd130x_i2c_shutdown(struct i2c_client *clie= nt) ssd130x_shutdown(ssd130x); } =20 +static struct ssd130x_deviceinfo ssd130x_sh1106_deviceinfo =3D { + .default_vcomh =3D 0x40, + .default_dclk_div =3D 1, + .default_dclk_frq =3D 5, + .page_mode_only =3D 1, +}; + static struct ssd130x_deviceinfo ssd130x_ssd1305_deviceinfo =3D { .default_vcomh =3D 0x34, .default_dclk_div =3D 1, @@ -80,6 +87,10 @@ static struct ssd130x_deviceinfo ssd130x_ssd1309_devicei= nfo =3D { }; =20 static const struct of_device_id ssd130x_of_match[] =3D { + { + .compatible =3D "sinowealth,sh1106-i2c", + .data =3D &ssd130x_sh1106_deviceinfo, + }, { .compatible =3D "solomon,ssd1305fb-i2c", .data =3D &ssd130x_ssd1305_deviceinfo, --=20 2.34.1