From nobody Fri Jun 19 07:15:13 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 ED01FC4167E for ; Wed, 6 Apr 2022 19:52:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233251AbiDFTyk (ORCPT ); Wed, 6 Apr 2022 15:54:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45518 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235471AbiDFTxa (ORCPT ); Wed, 6 Apr 2022 15:53:30 -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 CCDF22EC4FF; Wed, 6 Apr 2022 10:30:16 -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 85555B803F7; Wed, 6 Apr 2022 17:30:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 10F5BC385A1; Wed, 6 Apr 2022 17:30:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1649266214; bh=TzTlpFZtH0J+36S9N9L4ND/H/yCs90y6P3aB8Lln2MI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CDIGt5bbay39GvswOhiiR9x75f4CZ8870l7rpiON7ocOR7Me8MM0zEhEwZm/0UnWZ xb0eOyjBo1tE5/yrUkFFzNGfXk0IMQqFaXgvgQmgnx6t7Q/ieFGMllaRCJ0+/hmhAa OVI2CLkcS36qkpexDIETUelaifR4eghO4GfP5Ywwe29lEOvaVO1fe6+lhP3kUGCEun M9CkpTS01zPwawvH3vfQYBHxYkZOtnXmEJfzGPJaZAf5UF7vkoe77u2dcRQ06Zi/h+ Lzf7r9aeghgL7ZPdLdOoLFa9eIAk2MUQfK6SeqnSay9Tbwd0nJRipOO2YEoIAW1THs 3pqmcTIqow9Sg== Received: by wens.tw (Postfix, from userid 1000) id 4A61B5F8E8; Thu, 7 Apr 2022 01:30:11 +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 v2 1/4] dt-bindings: vendor-prefixes: Add prefix for SINO WEALTH Eletronics Ltd. Date: Thu, 7 Apr 2022 01:29:53 +0800 Message-Id: <20220406172956.3953-2-wens@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220406172956.3953-1-wens@kernel.org> References: <20220406172956.3953-1-wens@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chen-Yu Tsai Add a vendor prefix entry for SINO WEALTH Eletronics Ltd. (http://www.sinowealth.com). Signed-off-by: Chen-Yu Tsai Acked-by for most of the patches in v1 already? But it seems you 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..79b72e370ade 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -1130,6 +1130,8 @@ patternProperties: description: Sinlinx Electronics Technology Co., LTD "^sinovoip,.*": description: SinoVoip Co., Ltd + "^sinowealth,.*": + description: SINO WEALTH Electronic Ltd. "^sipeed,.*": description: Shenzhen=C2=A0Sipeed=C2=A0Technology=C2=A0Co.,=C2=A0Ltd. "^sirf,.*": --=20 2.34.1 From nobody Fri Jun 19 07:15:13 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 9332FC433EF for ; Wed, 6 Apr 2022 19:59:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233426AbiDFUBQ (ORCPT ); Wed, 6 Apr 2022 16:01:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233572AbiDFUAH (ORCPT ); Wed, 6 Apr 2022 16:00:07 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 530B82EC4E7; Wed, 6 Apr 2022 10:30:15 -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 D8E7361A3D; Wed, 6 Apr 2022 17:30:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 14B09C385A5; Wed, 6 Apr 2022 17:30:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1649266214; bh=oonR2xgCOkK+2ZsJXKQdEiC5WZelRESZAkoTfAw8t7E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GmdCAI1PEXG/SQMmze443jy4k7raOrxY7mJu/mbfL29JTMs50hFJYyDQEZIXIFS6U 6sIt9Gyo4XfjAEvTOCVYI2gpS88mTOwYESjW/FCz0EETOzglUdsDI/KHVwyd6/Ozfv cJXLy+/BtoY6/bMusBJ2tgSVE0SE57A2bTAyWge2Tnc4AZPCxoMdboLTbXic/+75zx JC4gWgIQknHrk7LLGTOyEhafG8bLwHPqZmHlIPOFSVkl7apatB4e9/Tmx/80VZzLaT U8yKUPY8ThKVhJzACG6taKj8KWR/vfJlYFsVHP9C7TmSNcTEDN5Onpp3JfQ8vg0L7c 6uXazcIawcA6g== Received: by wens.tw (Postfix, from userid 1000) id 527CF5FD20; Thu, 7 Apr 2022 01:30:11 +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 v2 2/4] dt-bindings: display: ssd1307fb: Add entry for SINO WEALTH SH1106 Date: Thu, 7 Apr 2022 01:29:54 +0800 Message-Id: <20220406172956.3953-3-wens@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220406172956.3953-1-wens@kernel.org> References: <20220406172956.3953-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 Acked-by for most of the patches in v1 already? But it seems you Reviewed-by: Javier Martinez Canillas --- .../bindings/display/solomon,ssd1307fb.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.ya= ml b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml index 9baafd0c42dd..ade61d502edd 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 @@ -131,6 +132,18 @@ required: - reg =20 allOf: + - if: + properties: + compatible: + contains: + const: sinowealth,sh1106-i2c + then: + properties: + solomon,dclk-div: + default: 1 + solomon,dclk-frq: + default: 5 + - if: properties: compatible: --=20 2.34.1 From nobody Fri Jun 19 07:15:13 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 A8707C433F5 for ; Wed, 6 Apr 2022 19:49:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232919AbiDFTvs (ORCPT ); Wed, 6 Apr 2022 15:51:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46144 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232785AbiDFTvU (ORCPT ); Wed, 6 Apr 2022 15:51:20 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C3E32EC4E9; Wed, 6 Apr 2022 10:30:15 -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 EBF8D61A97; Wed, 6 Apr 2022 17:30:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 208BDC385A6; Wed, 6 Apr 2022 17:30:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1649266214; bh=kx10uHVY26ckRcwECa6MjiojP3WVqmzi3kWJLSQqtFM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kxMu4PutC4dDwqhZ7SdiV574Mh98fdV2T7xjh1ZMn2asjOlRuzgcxrKM5sa7MyZ0t 6Ryd5qnGeLctycurtIWYVw4syI44r7/LvstlLMyLFcuqnK/RgdvPckSoWqICwv6C1i MurZ2xprNeX1erhNowmi/F2GlbWYDNycdSutRMK7a2rj5LtWIi2Au6P+PXwrNRu8Ns +sQANeuu6FHNROn/HWmXfTI8NdXtQg/sf95W8tNjnNuKcVeYhrEmoMVGDds+2bf4Ey CLQRgUoI0JwoQ9KuL7tM/j1CAG02pXcT8ZEb08F5tVgymxAgwjYl4SagarEde3MvYe x+W9vuCaxmYFA== Received: by wens.tw (Postfix, from userid 1000) id 58CDF5FD30; Thu, 7 Apr 2022 01:30:11 +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 v2 3/4] drm/ssd130x: Support page addressing mode Date: Thu, 7 Apr 2022 01:29:55 +0800 Message-Id: <20220406172956.3953-4-wens@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220406172956.3953-1-wens@kernel.org> References: <20220406172956.3953-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 Acked-by for most of the patches in v1 already? But it seems you --- drivers/gpu/drm/solomon/ssd130x.c | 73 ++++++++++++++++++++++++++++--- drivers/gpu/drm/solomon/ssd130x.h | 2 + 2 files changed, 68 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ss= d130x.c index 38b6c2c14f53..a7e784518c69 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,11 @@ #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_HIGH_SET(val) FIELD_PREP(SSD130X_PAGE_COL_S= TART_MASK, (val) >> 4) +#define SSD130X_PAGE_COL_START_LOW_SET(val) FIELD_PREP(SSD130X_PAGE_COL_ST= ART_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 +137,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 +174,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_LOW_SET(col_start); + col_high =3D SSD130X_PAGE_COL_START_HIGH | + SSD130X_PAGE_COL_START_HIGH_SET(col_start); + 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 +370,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); @@ -396,13 +429,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 0; i < pages; i++) { int m =3D 8; @@ -421,9 +457,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); @@ -806,6 +862,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 Fri Jun 19 07:15:13 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 1FD48C433EF for ; Wed, 6 Apr 2022 19:53:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232774AbiDFTzG (ORCPT ); Wed, 6 Apr 2022 15:55:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57026 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235315AbiDFTx2 (ORCPT ); Wed, 6 Apr 2022 15:53:28 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1D21F2EC515; Wed, 6 Apr 2022 10:30:17 -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 8F256B824ED; Wed, 6 Apr 2022 17:30:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1B8CCC385A9; Wed, 6 Apr 2022 17:30:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1649266214; bh=qYRpRNZs3OEzs4LYnyrIl0pJ6/CiB0ubdZRFp4cKc2E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=K1GIxYa4XJqhh4t5X+qk8bnEhCoqrZCT3Hy+2nyY/58JCBw2nD6ELZAT1epDOzNIO TKuPQTJB/UMb1eyIDK9YON0FZzb+6rKmE0u7hm33p20E7b8QjNDTlBQhJujIIZh/Ob Oheaq9a6AcXhtQWuPL2UDHVkmCuCBYa59SfHC2+NOpS5mkS0S1SQDI7Slt0K+ChJLV XyeEPlRa6ipfRqycaWIj+vrBGy/iCXorIySwHi6GaBtx71PX7Zl96dgA692lqWcu7y ExRez1k+0K7hjt54f20KLFC8V16e3IpifHyW1WJhM9MX3bY5sPwAWyrU8b27Y61Rgq 6SDMFMXz2gyXA== Received: by wens.tw (Postfix, from userid 1000) id 633365FD3C; Thu, 7 Apr 2022 01:30:11 +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 v2 4/4] drm/ssd130x: Add support for SINO WEALTH SH1106 Date: Thu, 7 Apr 2022 01:29:56 +0800 Message-Id: <20220406172956.3953-5-wens@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220406172956.3953-1-wens@kernel.org> References: <20220406172956.3953-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 Acked-by for most of the patches in v1 already? But it seems you Reviewed-by: Javier Martinez Canillas --- drivers/gpu/drm/solomon/Kconfig | 9 +++++---- drivers/gpu/drm/solomon/ssd130x-i2c.c | 11 +++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/solomon/Kconfig b/drivers/gpu/drm/solomon/Kcon= fig index 6230369505c9..8c0a0c788385 100644 --- a/drivers/gpu/drm/solomon/Kconfig +++ b/drivers/gpu/drm/solomon/Kconfig @@ -5,9 +5,9 @@ config DRM_SSD130X select DRM_GEM_SHMEM_HELPER select DRM_KMS_HELPER help - DRM driver for the SSD1305, SSD1306, SSD1307 and SSD1309 Solomon - OLED controllers. This is only for the core driver, a driver for - the appropriate bus transport in your chip also must be selected. + DRM driver for the SSD130x Solomon and SINO WEALTH SH110x OLED + controllers. This is only for the core driver, a driver for the + appropriate bus transport in your chip also must be selected. =20 If M is selected the module will be called ssd130x. =20 @@ -16,6 +16,7 @@ config DRM_SSD130X_I2C depends on DRM_SSD130X && I2C select REGMAP_I2C help - Say Y here if the SSD130x OLED display is connected via I2C bus. + Say Y here if the SSD130x or SH110x OLED display is connected via + I2C bus. =20 If M is selected the module will be called ssd130x-i2c. 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