From owner-svn-src-stable@FreeBSD.ORG Sun May 24 17:57:31 2015 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E69DF330; Sun, 24 May 2015 17:57:30 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D3C1C1ED5; Sun, 24 May 2015 17:57:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHvUgQ035936; Sun, 24 May 2015 17:57:30 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHvUqj035933; Sun, 24 May 2015 17:57:30 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505241757.t4OHvUqj035933@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 17:57:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r283481 - stable/10/sys/dev/uart X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:57:31 -0000 Author: ian Date: Sun May 24 17:57:29 2015 New Revision: 283481 URL: https://svnweb.freebsd.org/changeset/base/283481 Log: MFC r281073, r281074, r281077, r281200: Use OF_getencprop over OF_getprop and fdt32_to_cpu. The latter may give us the wrong data in the failure case if shift was not zero. Remove the extra copy of uart_fdt_get_clock and uart_fdt_get_shift. While here also use OF_getencprop in uart_fdt_get_clock. Move uart_fdt_get_clock and uart_fdt_get_shift to uart_bus_fdt.c, we may not build uart_cpu_fdt.c in all configs. Fix uart_fdt_get_clock. It should have been using the cell variable passed in, not value on the stack. Modified: stable/10/sys/dev/uart/uart_bus_fdt.c stable/10/sys/dev/uart/uart_cpu_fdt.c stable/10/sys/dev/uart/uart_cpu_fdt.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/uart/uart_bus_fdt.c ============================================================================== --- stable/10/sys/dev/uart/uart_bus_fdt.c Sun May 24 17:57:07 2015 (r283480) +++ stable/10/sys/dev/uart/uart_bus_fdt.c Sun May 24 17:57:29 2015 (r283481) @@ -63,37 +63,29 @@ static driver_t uart_fdt_driver = { sizeof(struct uart_softc), }; -static int +int uart_fdt_get_clock(phandle_t node, pcell_t *cell) { - pcell_t clock; - - /* - * clock-frequency is a FreeBSD-specific hack. Make its presence optional. - */ - if ((OF_getprop(node, "clock-frequency", &clock, - sizeof(clock))) <= 0) - clock = 0; - if (clock == 0) + /* clock-frequency is a FreeBSD-only extention. */ + if ((OF_getencprop(node, "clock-frequency", cell, + sizeof(*cell))) <= 0) { /* Try to retrieve parent 'bus-frequency' */ /* XXX this should go to simple-bus fixup or so */ - if ((OF_getprop(OF_parent(node), "bus-frequency", &clock, - sizeof(clock))) <= 0) - clock = 0; + if ((OF_getencprop(OF_parent(node), "bus-frequency", cell, + sizeof(*cell))) <= 0) + *cell = 0; + } - *cell = fdt32_to_cpu(clock); return (0); } -static int +int uart_fdt_get_shift(phandle_t node, pcell_t *cell) { - pcell_t shift; - if ((OF_getprop(node, "reg-shift", &shift, sizeof(shift))) <= 0) - shift = 0; - *cell = fdt32_to_cpu(shift); + if ((OF_getencprop(node, "reg-shift", cell, sizeof(*cell))) <= 0) + *cell = 0; return (0); } Modified: stable/10/sys/dev/uart/uart_cpu_fdt.c ============================================================================== --- stable/10/sys/dev/uart/uart_cpu_fdt.c Sun May 24 17:57:07 2015 (r283480) +++ stable/10/sys/dev/uart/uart_cpu_fdt.c Sun May 24 17:57:29 2015 (r283481) @@ -58,38 +58,6 @@ __FBSDID("$FreeBSD$"); bus_space_tag_t uart_bus_space_io; bus_space_tag_t uart_bus_space_mem; -static int -uart_fdt_get_clock(phandle_t node, pcell_t *cell) -{ - pcell_t clock; - - /* clock-frequency is a FreeBSD-only extention. */ - if ((OF_getprop(node, "clock-frequency", &clock, - sizeof(clock))) <= 0) - clock = 0; - - if (clock == 0) - /* Try to retrieve parent 'bus-frequency' */ - /* XXX this should go to simple-bus fixup or so */ - if ((OF_getprop(OF_parent(node), "bus-frequency", &clock, - sizeof(clock))) <= 0) - clock = 0; - - *cell = fdt32_to_cpu(clock); - return (0); -} - -static int -uart_fdt_get_shift(phandle_t node, pcell_t *cell) -{ - pcell_t shift; - - if ((OF_getprop(node, "reg-shift", &shift, sizeof(shift))) <= 0) - shift = 0; - *cell = fdt32_to_cpu(shift); - return (0); -} - int uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) { Modified: stable/10/sys/dev/uart/uart_cpu_fdt.h ============================================================================== --- stable/10/sys/dev/uart/uart_cpu_fdt.h Sun May 24 17:57:07 2015 (r283480) +++ stable/10/sys/dev/uart/uart_cpu_fdt.h Sun May 24 17:57:29 2015 (r283481) @@ -50,5 +50,7 @@ SET_DECLARE(uart_fdt_class_set, struct o #define UART_FDT_CLASS(data) \ DATA_SET(uart_fdt_class_set, data) +int uart_fdt_get_clock(phandle_t node, pcell_t *cell); +int uart_fdt_get_shift(phandle_t node, pcell_t *cell); #endif /* _DEV_UART_CPU_FDT_H_ */