From patchwork Thu Jan 25 11:05:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Graf X-Patchwork-Id: 125820 Delivered-To: patch@linaro.org Received: by 10.46.66.141 with SMTP id h13csp1043324ljf; Thu, 25 Jan 2018 03:23:24 -0800 (PST) X-Google-Smtp-Source: AH8x227Q25LMS0mpbv95jeLW5fftw6lHjDNMX9+B/9/4QWGZuRAkNb4LxdtfMTvtl8MZk0Ew4MAY X-Received: by 10.80.244.23 with SMTP id r23mr28029468edm.2.1516879404401; Thu, 25 Jan 2018 03:23:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516879404; cv=none; d=google.com; s=arc-20160816; b=ULi5sdN14MA4L4izEzp7ge/EooveIhoDJcTOEVmWwFEsGkaH2srKc4wBxSrLStNPs8 mkK2S/tnl+qmpcwyU1+BBBYvyulNeS2s/S6tknTXjWVOUx/dieDA+U9J+vdPc8ex4H3U IuxR0htyhOId/e2/ZxMJugeANBeORmlgko3hvC7IW+pzzJwv8HUSOvtlA9Rtm7XrAWiN 5Eem1Mw55Mm1HnA4YqSHjEuG1IEeHfQYBuaDC5pYQ7CiVaYY7bYbX9ygZg+pIYZNl8ze S5I5g0EoU7oBiMpUFZkF5cvI/oz6H6Y6bvTBWx3Mosi/y8fW3HqDHio+pzMwAI2petnn ROUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:cc:references:in-reply-to:message-id :date:to:from:arc-authentication-results; bh=hpvrIb5gE+PRkF5V3DKzF3Spn/TmQjUhmjxpTdKsoB8=; b=d447u6AiHMuQ74VLbzFo0VGHkZBmIMc28l4hMwOKRI7+Rxl/Ax1lKf+Vg9Qc2KZtt1 jJx6igN77UFWA+GcaHEqqwj4/pM9Iib4r4oK0wF8YgB5w0nN+3adeQiONIFzMXrezUV5 o8BCp+2lDjc8/NpFd9AarFmdIqOow++rFYIysxSO52aVMGVk8xzrQ/eVtl2hGRU0I5FF 4DtV3diRvsGznH0PuQyk8f4CkP47LKr9ZhOXi2Yq3+i58kBP+Zlv3RK4OdcxUBZA6PZf +g8Qfbm/39gUv4o37S+TRTAT/7CuHcOrbvYFtfsssl7EjFsc2tv25WFhXm0FPzuPoHLE dPFQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de Return-Path: Received: from lists.denx.de (dione.denx.de. [81.169.180.215]) by mx.google.com with ESMTP id h89si1964745edd.471.2018.01.25.03.23.23; Thu, 25 Jan 2018 03:23:24 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) client-ip=81.169.180.215; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by lists.denx.de (Postfix, from userid 105) id A7798C22454; Thu, 25 Jan 2018 11:18:12 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=RCVD_IN_DNSWL_MED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id A57C0C22421; Thu, 25 Jan 2018 11:13:52 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 314A8C2241B; Thu, 25 Jan 2018 11:05:58 +0000 (UTC) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by lists.denx.de (Postfix) with ESMTPS id 103D3C223ED for ; Thu, 25 Jan 2018 11:05:58 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 72656ADE9; Thu, 25 Jan 2018 11:05:57 +0000 (UTC) From: Alexander Graf To: u-boot@lists.denx.de Date: Thu, 25 Jan 2018 12:05:48 +0100 Message-Id: <20180125110556.76352-8-agraf@suse.de> X-Mailer: git-send-email 2.12.3 In-Reply-To: <20180125110556.76352-1-agraf@suse.de> References: <20180125110556.76352-1-agraf@suse.de> Cc: Tom Rini Subject: [U-Boot] [PATCH v3 07/15] serial_bcm283x_mu: Fail loading if not muxed X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" The bcm283x mini-uart is only really usable as U-Boot serial output when it is muxed to the UART pins of the RPi pin header. So fail probing in case it is not muxed correctly, as in that case firmware did not initialize it properly either. Signed-off-by: Alexander Graf --- drivers/serial/serial_bcm283x_mu.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/serial/serial_bcm283x_mu.c b/drivers/serial/serial_bcm283x_mu.c index c6132b4463..40029fadbc 100644 --- a/drivers/serial/serial_bcm283x_mu.c +++ b/drivers/serial/serial_bcm283x_mu.c @@ -19,9 +19,11 @@ #include #include #include +#include #include #include #include +#include #include struct bcm283x_mu_regs { @@ -136,11 +138,37 @@ static const struct udevice_id bcm283x_mu_serial_id[] = { {} }; +/* + * Check if this serial device is muxed + * + * The serial device will only work properly if it has been muxed to the serial + * pins by firmware. Check whether that happened here. + * + * @return true if serial device is muxed, false if not + */ +static bool bcm283x_is_serial_muxed(void) +{ + int serial_gpio = 15; + struct udevice *dev; + + if (uclass_first_device(UCLASS_PINCTRL, &dev) || !dev) + return false; + + if (pinctrl_get_gpio_mux(dev, 0, serial_gpio) != BCM2835_GPIO_ALT5) + return false; + + return true; +} + static int bcm283x_mu_serial_ofdata_to_platdata(struct udevice *dev) { struct bcm283x_mu_serial_platdata *plat = dev_get_platdata(dev); fdt_addr_t addr; + /* Don't spawn the device if it's not muxed */ + if (!bcm283x_is_serial_muxed()) + return -ENODEV; + addr = devfdt_get_addr(dev); if (addr == FDT_ADDR_T_NONE) return -EINVAL;