• Serge Semin's avatar
    hwmon: Add Baikal-T1 PVT sensor driver · 87976ce2
    Serge Semin authored
    Baikal-T1 SoC provides an embedded process, voltage and temperature
    sensor to monitor an internal SoC environment (chip temperature, supply
    voltage and process monitor) and on time detect critical situations,
    which may cause the system instability and even damages. The IP-block
    is based on the Analog Bits PVT sensor, but is equipped with a
    dedicated control wrapper, which provides a MMIO registers-based access
    to the sensor core functionality (APB3-bus based) and exposes an
    additional functions like thresholds/data ready interrupts, its status
    and masks, measurements timeout. All of these is used to create a hwmon
    driver being added to the kernel by this commit.
    
    The driver implements support for the hardware monitoring capabilities
    of Baikal-T1 process, voltage and temperature sensors. PVT IP-core
    consists of one temperature and four voltage sensors, each of which is
    implemented as a dedicated hwmon channel config.
    
    The driver can optionally provide the hwmon alarms for each sensor the
    PVT controller supports. The alarms functionality is made compile-time
    configurable due to the hardware interface implementation peculiarity,
    which is connected with an ability to convert data from only one sensor
    at a time. Additional limitation is that the controller performs the
    thresholds checking synchronously with the data conversion procedure.
    Due to these limitations in order to have the hwmon alarms
    automatically detected the driver code must switch from one sensor to
    another, read converted data and manually check the threshold status
    bits. Depending on the measurements timeout settings this design may
    cause additional burden on the system performance. By default if the
    alarms kernel config is disabled the data conversion is performed by
    the driver on demand when read operation is requested via corresponding
    _input-file.
    Co-developed-by: default avatarMaxim Kaurkin <maxim.kaurkin@baikalelectronics.ru>
    Signed-off-by: default avatarMaxim Kaurkin <maxim.kaurkin@baikalelectronics.ru>
    Signed-off-by: default avatarSerge Semin <Sergey.Semin@baikalelectronics.ru>
    Cc: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Rob Herring <robh+dt@kernel.org>
    Cc: linux-mips@vger.kernel.org
    Cc: devicetree@vger.kernel.org
    Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    87976ce2
bt1-pvt.c 29.1 KB