From patchwork Mon Oct 31 18:40:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Siarhei Volkau X-Patchwork-Id: 13410 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp2480298wru; Mon, 31 Oct 2022 11:45:25 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5HwixmnZJxkdJrFBXBZDO5Jai3WrwGYSnLurqmMB/P+Ff07a4gXWnvXXKaFo4fAyIPOiUz X-Received: by 2002:a17:903:2308:b0:186:95bd:dc21 with SMTP id d8-20020a170903230800b0018695bddc21mr15638915plh.135.1667241925370; Mon, 31 Oct 2022 11:45:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667241925; cv=none; d=google.com; s=arc-20160816; b=JTZ+K9psmxveuZG/3O1whgFYv82Lhvy6v1FqWEAfFeG57GsFDil5AP27pwj+1MQRm3 MewLU35ra4cuag5d/F5ajOk9lpq/Q/OobSGXMpQvuFPvb4lwNuxLr1bnvS5j/2g8xAJR LZIS4hQinhkDh6lEiYZF6V02bi05r3KsujqwnBEuhliY2XJJfIlZXIE9YJYh4GnD1GJV vyXa6RPXQ4Q8+nFToL+A3v9hhxsM6A5DEubmZm/YbZa2fvUPyh3VJ3fe1aIBIGyJeVYl EPvTvo6JkMAKM/fXQzC1vpq0IwFsPC2KAXklYH7BpkD8c5FGLA3sxsvwmrXRTP3pYSHr 6F5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:to:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:from :dkim-signature; bh=4l/rQiBjU2EDqlLswcve2tJlyY/XQgWJ8y1LR4isvn0=; b=ieDGPlF/zjpQRmCw24ey+oaD6gah0Dl61GF0zwXKAomm39W8uJaV/HfVXVARYTArzx MO8iqcX+Z360eAZayNJmi4LOUnpNECGJ7mcGgrz4ZzOB3lSPby+9GLLjkggMk7QpR3st CnLkEjjEWAHdUxiaHirykXJEL7PUumrEZJ8RmjCm2lO3iMbTWszrXotfc44K1nxShOen yi3+bcohk4PFjbyVqKTqNKjpStvK9y3Avq8tpCV3pfrKgQqYOPV2TnLYRvuUOl3OQC0g ZYR3rCr0hyPTtlMIE/madw9j9WDz9pQRq+bTuzQcYVmfSkNyvUwbpow9PBIsRAUW903W 5USw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20210112 header.b="DjG/2ufk"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h9-20020a170902f54900b001869394a38dsi10066374plf.503.2022.10.31.11.45.12; Mon, 31 Oct 2022 11:45:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20210112 header.b="DjG/2ufk"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229839AbiJaSk6 (ORCPT + 99 others); Mon, 31 Oct 2022 14:40:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38122 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229468AbiJaSkw (ORCPT ); Mon, 31 Oct 2022 14:40:52 -0400 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A107212626; Mon, 31 Oct 2022 11:40:50 -0700 (PDT) Received: by mail-wr1-x42d.google.com with SMTP id o4so17223568wrq.6; Mon, 31 Oct 2022 11:40:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4l/rQiBjU2EDqlLswcve2tJlyY/XQgWJ8y1LR4isvn0=; b=DjG/2ufk+7Y/8//JX+76+6lP62M9TveRoAHeKTQuwNmllazKZR1h4IANy23WyhsSCX 243ph3qCkpilBizc50D21TYy8sBYgHWyDwmwNIzljrqo6AfC1L+gkYnf+3jnhlpRL+ke vbnBVCjvAGtGymBLSk4DP6rx19thJXyDhPPDfjajf/XLtR0NHhEYlgOsJe0MV8T9Ou45 ilM3Z4dbReG5MMTm+3RyLrAT5WVoxSo1i6dDIT52CgM+kM0yV0I0kyaESPVkn+hE8T8p 0w/ZCcgbzVDhmwXnHZD7z8yQWWNSObaFIVK4kqhqTipr0iAPE+hySuc63zBhEJEbGBZe If1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4l/rQiBjU2EDqlLswcve2tJlyY/XQgWJ8y1LR4isvn0=; b=nUph5eV+4/L7Pv56oKEJpVB/UMfUucG3MABFykz2HzVcy3RCdMiBPJ0uyYl7ObqJBE RlHZmfnS/Kq21LCqNbbRALc9bG9FHI9v09GWNN2Mmjq4m53ZF/U7Zbrn7OknSChBqGSu i0ZDoblQu2mO0/VEYIOqWz0giZPF3e0BAJUGpXrvQZKLZww2UK60+oBwYzpzgt6pBSDO z74n8mUTkZ/RgXONLFrAbIyuM2YfdVrURUiCrfwiTCxx57JAPQpvbNxoV47OBaWNv0dx jrm6OyMlhVW/bnMWIHXlASa82sG1u66BZWViqe/hiQ0PXfU/qjlyobElqp1msMPsx4EM pWzA== X-Gm-Message-State: ACrzQf2Zc30bdav0IUXkKjBrGjIwmVf3Wt7SgumDbTk3fciQgoBGAfD6 g3YWeqovGp8COV11QyID9Sk= X-Received: by 2002:a05:6000:a09:b0:236:6b18:6b30 with SMTP id co9-20020a0560000a0900b002366b186b30mr9565291wrb.356.1667241649233; Mon, 31 Oct 2022 11:40:49 -0700 (PDT) Received: from hp-power-15.localdomain (mm-167-8-212-37.vitebsk.dynamic.pppoe.byfly.by. [37.212.8.167]) by smtp.gmail.com with ESMTPSA id k18-20020a05600c081200b003b4935f04a4sm8525887wmp.5.2022.10.31.11.40.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Oct 2022 11:40:48 -0700 (PDT) From: Siarhei Volkau Cc: Siarhei Volkau , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Paul Cercueil , Jiri Slaby , linux-serial@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org Subject: [PATCH v4 2/2] serial: 8250/ingenic: Add support for the JZ4750/JZ4755 Date: Mon, 31 Oct 2022 21:40:40 +0300 Message-Id: <20221031184041.1338129-3-lis8215@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20221031184041.1338129-1-lis8215@gmail.com> References: <20221031184041.1338129-1-lis8215@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1748229869028207204?= X-GMAIL-MSGID: =?utf-8?q?1748229869028207204?= JZ4750/55/60 (but not JZ4760b) have an optional /2 divider between the EXT oscillator and some peripherals including UART, which will be enabled if using a 24 MHz oscillator, and disabled when using a 12 MHz oscillator. This behavior relies on hardware differences: most boards (if not all) with those SoCs have 12 or 24 MHz oscillators but many peripherals want 12Mhz to operate properly (AIC and USB-PHY at least). The 16MHz threshold looks arbitrary but used in vendor's bootloader code for enable the divider. The patch doesn't affect JZ4760's behavior as it is subject for another patchset with re-classification of all supported ingenic UARTs. Link: https://github.com/carlos-wong/uboot_jz4755/blob/master/cpu/mips/jz_serial.c#L158 Signed-off-by: Siarhei Volkau --- drivers/tty/serial/8250/8250_ingenic.c | 32 +++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/8250/8250_ingenic.c b/drivers/tty/serial/8250/8250_ingenic.c index 2b2f5d8d2..617b8ce60 100644 --- a/drivers/tty/serial/8250/8250_ingenic.c +++ b/drivers/tty/serial/8250/8250_ingenic.c @@ -87,7 +87,7 @@ static void __init ingenic_early_console_setup_clock(struct earlycon_device *dev dev->port.uartclk = be32_to_cpup(prop); } -static int __init ingenic_early_console_setup(struct earlycon_device *dev, +static int __init ingenic_earlycon_setup_tail(struct earlycon_device *dev, const char *opt) { struct uart_port *port = &dev->port; @@ -103,8 +103,6 @@ static int __init ingenic_early_console_setup(struct earlycon_device *dev, uart_parse_options(opt, &baud, &parity, &bits, &flow); } - ingenic_early_console_setup_clock(dev); - if (dev->baud) baud = dev->baud; divisor = DIV_ROUND_CLOSEST(port->uartclk, 16 * baud); @@ -129,9 +127,36 @@ static int __init ingenic_early_console_setup(struct earlycon_device *dev, return 0; } +static int __init ingenic_early_console_setup(struct earlycon_device *dev, + const char *opt) +{ + ingenic_early_console_setup_clock(dev); + + return ingenic_earlycon_setup_tail(dev, opt); +} + +static int __init jz4750_early_console_setup(struct earlycon_device *dev, + const char *opt) +{ + /* + * JZ4750/55/60 have an optional /2 divider between the EXT + * oscillator and some peripherals including UART, which will + * be enabled if using a 24 MHz oscillator, and disabled when + * using a 12 MHz oscillator. + */ + ingenic_early_console_setup_clock(dev); + if (dev->port.uartclk >= 16000000) + dev->port.uartclk /= 2; + + return ingenic_earlycon_setup_tail(dev, opt); +} + OF_EARLYCON_DECLARE(jz4740_uart, "ingenic,jz4740-uart", ingenic_early_console_setup); +OF_EARLYCON_DECLARE(jz4750_uart, "ingenic,jz4750-uart", + jz4750_early_console_setup); + OF_EARLYCON_DECLARE(jz4770_uart, "ingenic,jz4770-uart", ingenic_early_console_setup); @@ -328,6 +353,7 @@ static const struct ingenic_uart_config x1000_uart_config = { static const struct of_device_id of_match[] = { { .compatible = "ingenic,jz4740-uart", .data = &jz4740_uart_config }, + { .compatible = "ingenic,jz4750-uart", .data = &jz4760_uart_config }, { .compatible = "ingenic,jz4760-uart", .data = &jz4760_uart_config }, { .compatible = "ingenic,jz4770-uart", .data = &jz4760_uart_config }, { .compatible = "ingenic,jz4775-uart", .data = &jz4760_uart_config },