diff options
Diffstat (limited to 'arch/arm/mach-shmobile/timer.c')
| -rw-r--r-- | arch/arm/mach-shmobile/timer.c | 28 | 
1 files changed, 15 insertions, 13 deletions
diff --git a/arch/arm/mach-shmobile/timer.c b/arch/arm/mach-shmobile/timer.c index 87c6be1e79bd..f1d027aa7a81 100644 --- a/arch/arm/mach-shmobile/timer.c +++ b/arch/arm/mach-shmobile/timer.c @@ -12,11 +12,6 @@   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA - *   */  #include <linux/platform_device.h>  #include <linux/clocksource.h> @@ -45,6 +40,7 @@ void __init shmobile_init_delay(void)  	struct device_node *np, *cpus;  	bool is_a7_a8_a9 = false;  	bool is_a15 = false; +	bool has_arch_timer = false;  	u32 max_freq = 0;  	cpus = of_find_node_by_path("/cpus"); @@ -57,12 +53,16 @@ void __init shmobile_init_delay(void)  		if (!of_property_read_u32(np, "clock-frequency", &freq))  			max_freq = max(max_freq, freq); -		if (of_device_is_compatible(np, "arm,cortex-a7") || -		    of_device_is_compatible(np, "arm,cortex-a8") || -		    of_device_is_compatible(np, "arm,cortex-a9")) +		if (of_device_is_compatible(np, "arm,cortex-a8") || +		    of_device_is_compatible(np, "arm,cortex-a9")) {  			is_a7_a8_a9 = true; -		else if (of_device_is_compatible(np, "arm,cortex-a15")) +		} else if (of_device_is_compatible(np, "arm,cortex-a7")) { +			is_a7_a8_a9 = true; +			has_arch_timer = true; +		} else if (of_device_is_compatible(np, "arm,cortex-a15")) {  			is_a15 = true; +			has_arch_timer = true; +		}  	}  	of_node_put(cpus); @@ -70,10 +70,12 @@ void __init shmobile_init_delay(void)  	if (!max_freq)  		return; -	if (is_a7_a8_a9) -		shmobile_setup_delay_hz(max_freq, 1, 3); -	else if (is_a15 && !IS_ENABLED(CONFIG_ARM_ARCH_TIMER)) -		shmobile_setup_delay_hz(max_freq, 2, 4); +	if (!has_arch_timer || !IS_ENABLED(CONFIG_ARM_ARCH_TIMER)) { +		if (is_a7_a8_a9) +			shmobile_setup_delay_hz(max_freq, 1, 3); +		else if (is_a15) +			shmobile_setup_delay_hz(max_freq, 2, 4); +	}  }  static void __init shmobile_late_time_init(void)  | 
