Hi Peter,

a few quick comments.

On Mon, 19 May 2008, Peter 'p2' De Schrijver wrote:

> +#define SCM_CONTROL_TEMP_SENSOR      (OMAP343X_SCM_BASE + 0x524)

Consider moving this to include/asm-arm/arch-omap/control.h ?

> +#define CM_FCLKEN3_CORE (OMAP3430_CM_BASE + 0x200 + 0x8)

The above define doesn't appear to be used.

> +/* minimum delay for EOCZ rise after SOC rise is
> + * 11 cycles of the 32Khz clock */
> +#define EOCZ_MIN_RISING_DELAY (11 * 31250)

Doesn't the 32k sync timer run at 32KiHz == 32768 cycles/second?  I wonder 
if this might be affecting the temperature values.  

> +             temp_sensor_reg = omap_readl(SCM_CONTROL_TEMP_SENSOR);
> +             temp_sensor_reg |= TEMP_SENSOR_SOC;
> +             omap_writel(temp_sensor_reg, SCM_CONTROL_TEMP_SENSOR);

Consider ctrl_{read,write}_reg() instead.

> +             temp_sensor_reg &= ~TEMP_SENSOR_SOC;
> +             omap_writel(temp_sensor_reg, SCM_CONTROL_TEMP_SENSOR);

Likewise.

> +
> +             expire = ktime_add_ns(ktime_get(), EOCZ_MAX_FALLING_DELAY);
> +             timeout = ns_to_timespec(EOCZ_MIN_FALLING_DELAY);
> +             hrtimer_nanosleep(&timeout, NULL, HRTIMER_MODE_REL,
> +                                     CLOCK_MONOTONIC);
> +
> +             do {
> +                     temp_sensor_reg = omap_readl(SCM_CONTROL_TEMP_SENSOR);
> +                     if (!(temp_sensor_reg & TEMP_SENSOR_EOCZ))
> +                             break;
> +             } while (ktime_us_delta(expire, ktime_get()) > 0);
> +
> +             if (temp_sensor_reg & TEMP_SENSOR_EOCZ)
> +                     goto err;

The code in the above block is duplicated twice with only a few parameter 
changes -- perhaps move this into a function? 

> +static int __devinit omap34xx_temp_probe(void)
> +{
> +     int err;
> +     struct omap34xx_data *data;
> +
> +     err = platform_device_register(&omap34xx_temp_device);
> +     if (err) {
> +             printk(KERN_ERR
> +                     "Unable to register omap34xx temperature device\n");
> +             goto exit;
> +     }

All of the following error paths in this function should call 
platform_device_unregister() also, correct?

> +static void __exit omap34xx_temp_exit(void)
> +{
> +     struct omap34xx_data *data =
> +                     dev_get_drvdata(&omap34xx_temp_device.dev);
> +
> +     clk_put(data->clk_32k);
> +     hwmon_device_unregister(data->hwmon_dev);
> +     device_remove_file(&omap34xx_temp_device.dev,
> +                        &sensor_dev_attr_temp1_input.dev_attr);
> +     device_remove_file(&omap34xx_temp_device.dev, &dev_attr_name);
> +     kfree(data);

Should this also include a platform_device_unregister()?

> +}


- Paul
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to