[PATCH 6/7] tegra: add proper timer driver

Sascha Hauer s.hauer at pengutronix.de
Fri Mar 1 12:23:53 EST 2013


On Fri, Mar 01, 2013 at 10:22:52AM +0100, Lucas Stach wrote:
> Replace the ad-hoc clocksource implementation with a proper driver for
> the Tegra 20 timer. This driver is able to do the required hardware
> initialisation itself.
> 
> +
> +static int tegra20_timer_probe(struct device_d *dev)
> +{
> +	struct clk *timer_clk;
> +	unsigned long rate;
> +
> +	/* use only one timer */
> +	if (timer_base)
> +		return -EBUSY;
> +
> +	timer_base = dev_request_mem_region(dev, 0);
> +	if (!timer_base) {
> +		dev_err(dev, "could not get memory region\n");
> +		return -ENODEV;
> +	}
> +
> +	timer_clk = clk_get(dev, NULL);
> +	if (!timer_clk) {
> +		dev_err(dev, "could not get clock\n");
> +		return -ENODEV;
> +	}
> +
> +	clk_enable(timer_clk);
> +
> +	/*
> +	 * calibrate timer to run at 1MHz

We don't need the timer to be running at a certain frequency, you can
just use clocks_calc_mult_shift to calculate the correct values from
whatever frequency.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list