From patchwork Tue Jan 16 13:47:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Graf X-Patchwork-Id: 124706 Delivered-To: patch@linaro.org Received: by 10.46.64.148 with SMTP id r20csp1020950lje; Tue, 16 Jan 2018 05:53:33 -0800 (PST) X-Google-Smtp-Source: ACJfBosL/hcSUcxzIOydh27TZZi70k4aBfW4uUDprbTf/ww7nxuB+yjFPMkH/AXPD6B504ewr26i X-Received: by 10.80.174.174 with SMTP id e43mr16668880edd.9.1516110813693; Tue, 16 Jan 2018 05:53:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516110813; cv=none; d=google.com; s=arc-20160816; b=SwDX9qob/1hANn7GqbTWEfPGq6v79QRjrsZwYCQlMQEyV0WQFfDVVkTXfKNwAVI3vX b2/p2+PZ4nP0eCdZ/e+eW1jkjiqmdIsnBPu5OV2IXjJn5Fg88MjvTLAmJhs1mdyWcd3o I3YRMTvUiKGbtg4yjsW3bQnXFSNcv5mtNM0CjZfV2CS4m7LV/d/3AIOc6UChnvLyi5qk 9CZwM7XRrEj7OC73qJpSJ1i9WrPIFTc8Ao5gERMg89HU9RINNTl1Ta8OzqKKaioj7WAT TGhO8/PM3Lt7IVxwDNPdLn4rvK5iPq+tkKrrVoaGDWrEVrFxHrpO6+Sb4ceMp9EY2ywj uc9g== 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:references:in-reply-to:message-id:date :to:from:arc-authentication-results; bh=oOWTcYk0cwWPhl9lfuY/O6r+BPgjR83Y9L9Ah+zqJyM=; b=oOwe4ZexmxH3XXy7wHoVYQ95NZZ0bOSGPQ3eBDqDnDD2vBo0bmaKisOP1Z416EglAK Fa0WstQsETNK/c/7djyUgXLnJylYfYLO1QJz8adpl+rGREs6H0Cz/j47TvmiifsFsXX9 yX8hwJ+l02FHnfQnzCrMeu2HOO9+p9BNSScpK1LnjiCQL+coq+VKVuJvO/pwKPVNVd6d jxv29CxZ9tp+TC3xVSL+jp/2JReihjZjULHjbe3Mcb+mWs2nddnZGY3sMR7IvUisYRhg AmGYxrDLVOGx48D3Qekz1JofLWtQ6BPrTuiTsmxE9ScQ3ZOKeuJIIhEizgEOs62PbL8V 6NeQ== 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 g7si2381999edj.376.2018.01.16.05.53.33; Tue, 16 Jan 2018 05:53:33 -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 41DEBC21E24; Tue, 16 Jan 2018 13:49:54 +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=0.0 required=5.0 tests=none 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 C5CA6C21E3C; Tue, 16 Jan 2018 13:48:50 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 76033C21E1E; Tue, 16 Jan 2018 13:48:11 +0000 (UTC) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by lists.denx.de (Postfix) with ESMTPS id D0C3CC21E30 for ; Tue, 16 Jan 2018 13:47:42 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 77A43AD26; Tue, 16 Jan 2018 13:47:42 +0000 (UTC) From: Alexander Graf To: u-boot@lists.denx.de Date: Tue, 16 Jan 2018 14:47:41 +0100 Message-Id: <20180116134741.4103-8-agraf@suse.de> X-Mailer: git-send-email 2.12.3 In-Reply-To: <20180116134741.4103-1-agraf@suse.de> References: <20180116134741.4103-1-agraf@suse.de> Subject: [U-Boot] [PATCH 7/7] rpi: Force skip_init on serial devices 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 serial devices on the raspberry pi are based on clocks we can't easily read and influence in U-Boot. However, the serial devices are always already properly set up when coming up, so all we need to do is leave them alone. The way to do that is to specify "skip-init" in device tree usually, but if we set CONFIG_OF_BOARD to get the device tree from the RPi firmware, that does not have skip-init properly set. So instead we just force it in board specific code. That way serial devices also work fine when skip-init is not passed explicitly in DT. Signed-off-by: Alexander Graf --- board/raspberrypi/rpi/rpi.c | 7 +++++++ drivers/serial/serial_bcm283x_mu.c | 2 +- drivers/serial/serial_pl01x.c | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c index b0cdad70f7..ce1286a53a 100644 --- a/board/raspberrypi/rpi/rpi.c +++ b/board/raspberrypi/rpi/rpi.c @@ -20,6 +20,7 @@ #include #include #include +#include #ifdef CONFIG_ARM64 #include #endif @@ -472,9 +473,15 @@ int board_check_serial(struct udevice *dev) printf("Checking serial %s\n", dev->name); if (device_is_compatible(dev, "arm,pl011")) { + struct pl01x_serial_platdata *plat = dev_get_platdata(dev); + func = BCM2835_GPIO_ALT0; + plat->skip_init = true; } else if (device_is_compatible(dev, "brcm,bcm2835-aux-uart")) { + struct bcm283x_mu_serial_platdata *plat = dev_get_platdata(dev); + func = BCM2835_GPIO_ALT5; + plat->skip_init = true; } else { return 0; } diff --git a/drivers/serial/serial_bcm283x_mu.c b/drivers/serial/serial_bcm283x_mu.c index 7ce990b9b8..8a7ca75d4a 100644 --- a/drivers/serial/serial_bcm283x_mu.c +++ b/drivers/serial/serial_bcm283x_mu.c @@ -151,7 +151,7 @@ static int bcm283x_mu_serial_ofdata_to_platdata(struct udevice *dev) plat->base = addr; plat->clock = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev), "clock", 1); - plat->skip_init = fdtdec_get_bool(gd->fdt_blob, dev_of_offset(dev), + plat->skip_init |= fdtdec_get_bool(gd->fdt_blob, dev_of_offset(dev), "skip-init"); return 0; } diff --git a/drivers/serial/serial_pl01x.c b/drivers/serial/serial_pl01x.c index 4ec0f29c42..f957eddc07 100644 --- a/drivers/serial/serial_pl01x.c +++ b/drivers/serial/serial_pl01x.c @@ -357,7 +357,7 @@ static int pl01x_serial_ofdata_to_platdata(struct udevice *dev) plat->clock = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev), "clock", 1); plat->type = dev_get_driver_data(dev); - plat->skip_init = fdtdec_get_bool(gd->fdt_blob, dev_of_offset(dev), + plat->skip_init |= fdtdec_get_bool(gd->fdt_blob, dev_of_offset(dev), "skip-init"); return 0; }