brintos

brintos / linux-shallow public Read only

0
0
Text · 1.1 KiB · b803ada Raw
42 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * lm75.h - Part of lm_sensors, Linux kernel modules for hardware monitoring4 * Copyright (c) 2003 Mark M. Hoffman <mhoffman@lightlink.com>5 */6 7/*8 * This file contains common code for encoding/decoding LM75 type9 * temperature readings, which are emulated by many of the chips10 * we support.  As the user is unlikely to load more than one driver11 * which contains this code, we don't worry about the wasted space.12 */13 14#include <linux/minmax.h>15#include <linux/types.h>16 17/* straight from the datasheet */18#define LM75_TEMP_MIN (-55000)19#define LM75_TEMP_MAX 12500020#define LM75_SHUTDOWN 0x0121 22/*23 * TEMP: 0.001C/bit (-55C to +125C)24 * REG: (0.5C/bit, two's complement) << 725 */26static inline u16 LM75_TEMP_TO_REG(long temp)27{28	int ntemp = clamp_val(temp, LM75_TEMP_MIN, LM75_TEMP_MAX);29 30	ntemp += (ntemp < 0 ? -250 : 250);31	return (u16)((ntemp / 500) << 7);32}33 34static inline int LM75_TEMP_FROM_REG(u16 reg)35{36	/*37	 * use integer division instead of equivalent right shift to38	 * guarantee arithmetic shift and preserve the sign39	 */40	return ((s16)reg / 128) * 500;41}42