From mboxrd@z Thu Jan 1 00:00:00 1970 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 phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C5C22D1625B for ; Mon, 14 Oct 2024 13:12:53 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A615F890CD; Mon, 14 Oct 2024 15:12:22 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=9elements.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; secure) header.d=9elements.com header.i=@9elements.com header.b="FUnyw+MM"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id BF52589048; Mon, 14 Oct 2024 15:12:18 +0200 (CEST) Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id BA9F889069 for ; Mon, 14 Oct 2024 15:12:16 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=9elements.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=patrick.rudolph@9elements.com Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-37d538fe5f2so2325707f8f.2 for ; Mon, 14 Oct 2024 06:12:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1728911533; x=1729516333; darn=lists.denx.de; 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=i9nBxhtPGVmMhSR0ukLqkGhhFmF2hldHtTOvj4rFDYU=; b=FUnyw+MMA3/GpaGL+5/uVukIKWrWcFE3eDSYV4chUU1ZkFU0/BOYV5Ur+gyWkHvztj mDruYbwBmhiI/75hvHJ3ki8Ifz57f69yv6zSHFiWSJRGct70oRg1eCRVlHCkhb/IKmVh qclrmdoZjTPkh2OVPO7b1sjVi7KGmOEKijSujkKUlgdB/qBIMrRE9bBI585Ha4F9TC+c dO0Mf9bOx/UNjMS39QJjhsjte+HrHO5nriv8qY61NvQxJmpaiJHdB19GUi852H7TJ9qA jveE4xR7DwnoCIhM9n885qegg8XZDw07Eg1qBizURrd7xKSAqvYrX11ifXlXnvclPisd zbNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728911533; x=1729516333; 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=i9nBxhtPGVmMhSR0ukLqkGhhFmF2hldHtTOvj4rFDYU=; b=IAfa+e43oxv54a0izyBKzeFxcT4HuTQzCMfEOQOBn8s2X0/lpgrJKHpGY+wpKUYmnO wKveCk0oWx4ghYSvKu8RGYLVsyaUKXglbsGu7grqJPSh+ulZXoFYUQGCJi4CdgW1DBkE YgSdWB1XN2OZAoAx0YsxpDI3uGBoIuuFHO5dGYZvys4xoQ9jNcinTlZRV3D54mrOaA4q jd3mMMFgdTDnjPAcE8DIo8vCn2aD7q46jAaoxEbei4dmS0tlNhjbHalZFoNdOiCwZ8r+ 9iHntN55xnojQSbvc1WSnVIj/9Yk2Xd1t36VpzDBQwdclLXwG7w+tgCncuXJfP1NXgSG BLsw== X-Gm-Message-State: AOJu0YxXDKRmq37YmgKxHBO5HLz9Q1nI9q7dMOpllrBxhzqh241Op99g cTawnU5o7tbXzyg0QJ77AGZmUYGV2zKNkk5G+Xdt1D3tph8UEKr3/uZbvb1CLuNb3otn4F88UY3 R X-Google-Smtp-Source: AGHT+IFwEcYVshPjQn+qfkXBwPklC11MRAHUtEAPyJFLliHjLEtvz58P//EOLFAriOD1vLMOO64Brw== X-Received: by 2002:a5d:4dca:0:b0:37d:4e9d:34d1 with SMTP id ffacd0b85a97d-37d5529ea2dmr7636899f8f.37.1728911532958; Mon, 14 Oct 2024 06:12:12 -0700 (PDT) Received: from fedora.sec.9e.network (ip-037-049-067-221.um09.pools.vodafone-ip.de. [37.49.67.221]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-37d605c197bsm7103718f8f.38.2024.10.14.06.12.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 06:12:12 -0700 (PDT) From: Patrick Rudolph To: u-boot@lists.denx.de, Simon Glass Cc: Maximilian Brune , Tom Rini Subject: [PATCH v8 05/37] serial: serial_pl01x: Implement .getinfo() for PL01 Date: Mon, 14 Oct 2024 15:10:21 +0200 Message-ID: <20241014131152.267405-6-patrick.rudolph@9elements.com> X-Mailer: git-send-email 2.46.2 In-Reply-To: <20241014131152.267405-1-patrick.rudolph@9elements.com> References: <20241014131152.267405-1-patrick.rudolph@9elements.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean From: Maximilian Brune When ACPI is enabled on arm it will use the getinfo function to fill the SPCR ACPI table. Signed-off-by: Maximilian Brune Reviewed-by: Simon Glass Cc: Simon Glass Cc: Tom Rini --- boot/bootflow.c | 8 ++++++-- drivers/serial/serial_pl01x.c | 24 ++++++++++++++++++++++++ include/serial.h | 1 + 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/boot/bootflow.c b/boot/bootflow.c index 59d77d2385..d8807eb109 100644 --- a/boot/bootflow.c +++ b/boot/bootflow.c @@ -936,11 +936,15 @@ int bootflow_cmdline_auto(struct bootflow *bflow, const char *arg) return ret; *buf = '\0'; - if (!strcmp("earlycon", arg)) { + if (!strcmp("earlycon", arg) && info.type == SERIAL_CHIP_16550_COMPATIBLE) { snprintf(buf, sizeof(buf), "uart8250,mmio32,%#lx,%dn8", info.addr, info.baudrate); - } else if (!strcmp("console", arg)) { + } else if (!strcmp("earlycon", arg) && info.type == SERIAL_CHIP_PL01X) { + snprintf(buf, sizeof(buf), + "pl011,mmio32,%#lx,%dn8", info.addr, + info.baudrate); + } else if (!strcmp("console", arg) && info.type == SERIAL_CHIP_16550_COMPATIBLE) { snprintf(buf, sizeof(buf), "ttyS0,%dn8", info.baudrate); } diff --git a/drivers/serial/serial_pl01x.c b/drivers/serial/serial_pl01x.c index 80c35963b8..ab67922d18 100644 --- a/drivers/serial/serial_pl01x.c +++ b/drivers/serial/serial_pl01x.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -272,6 +273,28 @@ __weak struct serial_device *default_serial_console(void) return &pl01x_serial_drv; } #else + +static int pl01x_serial_getinfo(struct udevice *dev, + struct serial_device_info *info) +{ + struct pl01x_serial_plat *plat = dev_get_plat(dev); + + /* save code size */ + if (!spl_in_proper()) + return -ENOSYS; + + info->type = SERIAL_CHIP_PL01X; + info->addr_space = SERIAL_ADDRESS_SPACE_MEMORY; + info->addr = plat->base; + info->size = 0x1000; + info->reg_width = 4; + info->reg_shift = 2; + info->reg_offset = 0; + info->clock = plat->clock; + + return 0; +} + int pl01x_serial_setbrg(struct udevice *dev, int baudrate) { struct pl01x_serial_plat *plat = dev_get_plat(dev); @@ -341,6 +364,7 @@ static const struct dm_serial_ops pl01x_serial_ops = { .pending = pl01x_serial_pending, .getc = pl01x_serial_getc, .setbrg = pl01x_serial_setbrg, + .getinfo = pl01x_serial_getinfo, }; #if CONFIG_IS_ENABLED(OF_REAL) diff --git a/include/serial.h b/include/serial.h index d129dc3253..d7a9a8cfb8 100644 --- a/include/serial.h +++ b/include/serial.h @@ -124,6 +124,7 @@ enum serial_stop { enum serial_chip_type { SERIAL_CHIP_UNKNOWN = -1, SERIAL_CHIP_16550_COMPATIBLE, + SERIAL_CHIP_PL01X, }; enum adr_space_type { -- 2.46.2