From owner-svn-src-all@freebsd.org Thu Nov 23 05:43:46 2017 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3DC82DDD667; Thu, 23 Nov 2017 05:43:46 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 151687CD54; Thu, 23 Nov 2017 05:43:46 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id vAN5hjV3018521; Thu, 23 Nov 2017 05:43:45 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id vAN5hjFJ018519; Thu, 23 Nov 2017 05:43:45 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201711230543.vAN5hjFJ018519@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Thu, 23 Nov 2017 05:43:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r326113 - head/sys/arm/allwinner/clkng X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/sys/arm/allwinner/clkng X-SVN-Commit-Revision: 326113 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Nov 2017 05:43:46 -0000 Author: kevans Date: Thu Nov 23 05:43:44 2017 New Revision: 326113 URL: https://svnweb.freebsd.org/changeset/base/326113 Log: aw_ccung: changes to accommodate upcoming a83t support Add a means to specify mask/value for the prediv condition instead of shift/width/value for clocks that have a more complex mux scenario. Specifically, ahb1 on the a83t has the prediv applied if mux is either b10 or b11. Reviewed by: manu Approved by: emaste (mentor) Differential Revision: https://reviews.freebsd.org/D12851 Modified: head/sys/arm/allwinner/clkng/aw_clk.h head/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c Modified: head/sys/arm/allwinner/clkng/aw_clk.h ============================================================================== --- head/sys/arm/allwinner/clkng/aw_clk.h Thu Nov 23 03:40:51 2017 (r326112) +++ head/sys/arm/allwinner/clkng/aw_clk.h Thu Nov 23 05:43:44 2017 (r326113) @@ -48,6 +48,7 @@ Periph clocks: Clock Source/Divider N/Divider M Clock Source/Divider N/Divider M/2 +Clock Source*N/(Divider M+1)/(Divider P+1) */ @@ -389,6 +390,36 @@ aw_clk_factor_get_value(struct aw_clk_factor *factor, .prediv.flags = _prediv_flags, \ .prediv.cond_shift = _prediv_cond_shift, \ .prediv.cond_width = _prediv_cond_width, \ + .prediv.cond_value = _prediv_cond_value, \ + } + +#define PREDIV_CLK_WITH_MASK(_clkname, _id, _name, _pnames, \ + _offset, \ + _mux_shift, _mux_width, \ + _div_shift, _div_width, _div_value, _div_flags, \ + _prediv_shift, _prediv_width, _prediv_value, _prediv_flags, \ + _prediv_cond_mask, _prediv_cond_value) \ + static struct aw_clk_prediv_mux_def _clkname = { \ + .clkdef = { \ + .id = _id, \ + .name = _name, \ + .parent_names = _pnames, \ + .parent_cnt = nitems(_pnames), \ + }, \ + .offset = _offset, \ + .mux_shift = _mux_shift, \ + .mux_width = _mux_width, \ + .div.shift = _div_shift, \ + .div.width = _div_width, \ + .div.value = _div_value, \ + .div.flags = _div_flags, \ + .prediv.shift = _prediv_shift, \ + .prediv.width = _prediv_width, \ + .prediv.value = _prediv_value, \ + .prediv.flags = _prediv_flags, \ + .prediv.cond_shift = 0, \ + .prediv.cond_width = 0, \ + .prediv.cond_mask = _prediv_cond_mask, \ .prediv.cond_value = _prediv_cond_value, \ } Modified: head/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c ============================================================================== --- head/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c Thu Nov 23 03:40:51 2017 (r326112) +++ head/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c Thu Nov 23 05:43:44 2017 (r326113) @@ -157,7 +157,10 @@ aw_clk_prediv_mux_register(struct clkdom *clkdom, stru sc->prediv.mask = ((1 << clkdef->prediv.width) - 1) << sc->prediv.shift; sc->prediv.value = clkdef->prediv.value; sc->prediv.cond_shift = clkdef->prediv.cond_shift; - sc->prediv.cond_mask = ((1 << clkdef->prediv.cond_width) - 1) << sc->prediv.shift; + if (clkdef->prediv.cond_width != 0) + sc->prediv.cond_mask = ((1 << clkdef->prediv.cond_width) - 1) << sc->prediv.shift; + else + sc->prediv.cond_mask = clkdef->prediv.cond_mask; sc->prediv.cond_value = clkdef->prediv.cond_value; sc->prediv.flags = clkdef->prediv.flags;