Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a4296d19 authored by Pavel Machek's avatar Pavel Machek Committed by Eduardo Valentin
Browse files

ti-soc-thermal: implement eocz bit to make driver useful on omap3



For omap3, proper implementation of eocz bit is needed. It was
actually a TODO in the driver.

Signed-off-by: default avatarPavel Machek <pavel@ucw.cz>
Signed-off-by: default avatarEduardo Valentin <edubezval@gmail.com>
parent e34238bf
Loading
Loading
Loading
Loading
+18 −6
Original line number Diff line number Diff line
@@ -894,7 +894,8 @@ void *ti_bandgap_get_sensor_data(struct ti_bandgap *bgp, int id)
static int
ti_bandgap_force_single_read(struct ti_bandgap *bgp, int id)
{
	u32 temp = 0, counter = 1000;
	u32 counter = 1000;
	struct temp_sensor_registers *tsr;

	/* Select single conversion mode */
	if (TI_BANDGAP_HAS(bgp, MODE_CONFIG))
@@ -902,16 +903,27 @@ ti_bandgap_force_single_read(struct ti_bandgap *bgp, int id)

	/* Start of Conversion = 1 */
	RMW_BITS(bgp, id, temp_sensor_ctrl, bgap_soc_mask, 1);
	/* Wait until DTEMP is updated */
	temp = ti_bandgap_read_temp(bgp, id);

	while ((temp == 0) && --counter)
		temp = ti_bandgap_read_temp(bgp, id);
	/* REVISIT: Check correct condition for end of conversion */
	/* Wait for EOCZ going up */
	tsr = bgp->conf->sensors[id].registers;

	while (--counter) {
		if (ti_bandgap_readl(bgp, tsr->temp_sensor_ctrl) &
		    tsr->bgap_eocz_mask)
			break;
	}

	/* Start of Conversion = 0 */
	RMW_BITS(bgp, id, temp_sensor_ctrl, bgap_soc_mask, 0);

	/* Wait for EOCZ going down */
	counter = 1000;
	while (--counter) {
		if (!(ti_bandgap_readl(bgp, tsr->temp_sensor_ctrl) &
		      tsr->bgap_eocz_mask))
			break;
	}

	return 0;
}