From owner-svn-src-head@freebsd.org Sat Mar 4 17:34:38 2017 Return-Path: Delivered-To: svn-src-head@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 3128FCF949B; Sat, 4 Mar 2017 17:34:38 +0000 (UTC) (envelope-from gonzo@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 E36DE1DAD; Sat, 4 Mar 2017 17:34:37 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v24HYa6f085888; Sat, 4 Mar 2017 17:34:36 GMT (envelope-from gonzo@FreeBSD.org) Received: (from gonzo@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v24HYabk085887; Sat, 4 Mar 2017 17:34:36 GMT (envelope-from gonzo@FreeBSD.org) Message-Id: <201703041734.v24HYabk085887@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gonzo set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko Date: Sat, 4 Mar 2017 17:34:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r314672 - head/sys/arm/broadcom/bcm2835 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 04 Mar 2017 17:34:38 -0000 Author: gonzo Date: Sat Mar 4 17:34:36 2017 New Revision: 314672 URL: https://svnweb.freebsd.org/changeset/base/314672 Log: [rpi] rpi3 should use the same cpufreq logic as rpi2, not rpi-b RPi3 cpufreq is more like that on RPi2. Setting arm frequency above min (say, "sysctl hw.cpufreq.arm_freq=600000001") turns on turbo mode, and the firmware automatically raises voltage, sets frequency to max 1200MHz, and throttle when overheat, etc. Swap if/else parts and use SOC_BCM2835 def so RPi3 can share the same cpufreq logic as RPi2, instead of falling to that for RPi. Submitted by: Jia-Shiun Li MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D9640 Modified: head/sys/arm/broadcom/bcm2835/bcm2835_cpufreq.c Modified: head/sys/arm/broadcom/bcm2835/bcm2835_cpufreq.c ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2835_cpufreq.c Sat Mar 4 16:59:55 2017 (r314671) +++ head/sys/arm/broadcom/bcm2835/bcm2835_cpufreq.c Sat Mar 4 17:34:36 2017 (r314672) @@ -66,16 +66,16 @@ __FBSDID("$FreeBSD$"); #define HZ2MHZ(freq) ((freq) / (1000 * 1000)) #define MHZ2HZ(freq) ((freq) * (1000 * 1000)) -#ifdef SOC_BCM2836 -#define OFFSET2MVOLT(val) (((val) / 1000)) -#define MVOLT2OFFSET(val) (((val) * 1000)) -#define DEFAULT_ARM_FREQUENCY 600 -#define DEFAULT_LOWEST_FREQ 600 -#else +#ifdef SOC_BCM2835 #define OFFSET2MVOLT(val) (1200 + ((val) * 25)) #define MVOLT2OFFSET(val) (((val) - 1200) / 25) #define DEFAULT_ARM_FREQUENCY 700 #define DEFAULT_LOWEST_FREQ 300 +#else +#define OFFSET2MVOLT(val) (((val) / 1000)) +#define MVOLT2OFFSET(val) (((val) * 1000)) +#define DEFAULT_ARM_FREQUENCY 600 +#define DEFAULT_LOWEST_FREQ 600 #endif #define DEFAULT_CORE_FREQUENCY 250 #define DEFAULT_SDRAM_FREQUENCY 400 @@ -1544,7 +1544,20 @@ bcm2835_cpufreq_make_freq_list(device_t if (min_freq > cpufreq_lowest_freq) min_freq = cpufreq_lowest_freq; -#ifdef SOC_BCM2836 +#ifdef SOC_BCM2835 + /* from freq to min_freq */ + for (idx = 0; idx < *count && freq >= min_freq; idx++) { + if (freq > sc->arm_min_freq) + volts = sc->max_voltage_core; + else + volts = sc->min_voltage_core; + sets[idx].freq = freq; + sets[idx].volts = volts; + sets[idx].lat = TRANSITION_LATENCY; + sets[idx].dev = dev; + freq -= MHZSTEP; + } +#else /* XXX RPi2 have only 900/600MHz */ idx = 0; volts = sc->min_voltage_core; @@ -1560,19 +1573,6 @@ bcm2835_cpufreq_make_freq_list(device_t sets[idx].dev = dev; idx++; } -#else - /* from freq to min_freq */ - for (idx = 0; idx < *count && freq >= min_freq; idx++) { - if (freq > sc->arm_min_freq) - volts = sc->max_voltage_core; - else - volts = sc->min_voltage_core; - sets[idx].freq = freq; - sets[idx].volts = volts; - sets[idx].lat = TRANSITION_LATENCY; - sets[idx].dev = dev; - freq -= MHZSTEP; - } #endif *count = idx;