1*54fd6939SJiyong Park /* 2*54fd6939SJiyong Park * Copyright (C) 2018 Marvell International Ltd. 3*54fd6939SJiyong Park * 4*54fd6939SJiyong Park * SPDX-License-Identifier: BSD-3-Clause 5*54fd6939SJiyong Park * https://spdx.org/licenses 6*54fd6939SJiyong Park */ 7*54fd6939SJiyong Park 8*54fd6939SJiyong Park /* Driver for thermal unit located in Marvell ARMADA 8K and compatible SoCs */ 9*54fd6939SJiyong Park 10*54fd6939SJiyong Park #include <common/debug.h> 11*54fd6939SJiyong Park #include <drivers/marvell/thermal.h> 12*54fd6939SJiyong Park marvell_thermal_init(struct tsen_config * tsen_cfg)13*54fd6939SJiyong Parkint marvell_thermal_init(struct tsen_config *tsen_cfg) 14*54fd6939SJiyong Park { 15*54fd6939SJiyong Park if (tsen_cfg->tsen_ready == 1) { 16*54fd6939SJiyong Park INFO("thermal sensor is already initialized\n"); 17*54fd6939SJiyong Park return 0; 18*54fd6939SJiyong Park } 19*54fd6939SJiyong Park 20*54fd6939SJiyong Park if (tsen_cfg->ptr_tsen_probe == NULL) { 21*54fd6939SJiyong Park ERROR("initial thermal sensor configuration is missing\n"); 22*54fd6939SJiyong Park return -1; 23*54fd6939SJiyong Park } 24*54fd6939SJiyong Park 25*54fd6939SJiyong Park if (tsen_cfg->ptr_tsen_probe(tsen_cfg)) { 26*54fd6939SJiyong Park ERROR("thermal sensor initialization failed\n"); 27*54fd6939SJiyong Park return -1; 28*54fd6939SJiyong Park } 29*54fd6939SJiyong Park 30*54fd6939SJiyong Park VERBOSE("thermal sensor was initialized\n"); 31*54fd6939SJiyong Park 32*54fd6939SJiyong Park return 0; 33*54fd6939SJiyong Park } 34*54fd6939SJiyong Park marvell_thermal_read(struct tsen_config * tsen_cfg,int * temp)35*54fd6939SJiyong Parkint marvell_thermal_read(struct tsen_config *tsen_cfg, int *temp) 36*54fd6939SJiyong Park { 37*54fd6939SJiyong Park if (temp == NULL) { 38*54fd6939SJiyong Park ERROR("NULL pointer for temperature read\n"); 39*54fd6939SJiyong Park return -1; 40*54fd6939SJiyong Park } 41*54fd6939SJiyong Park 42*54fd6939SJiyong Park if (tsen_cfg->ptr_tsen_read == NULL || 43*54fd6939SJiyong Park tsen_cfg->tsen_ready == 0) { 44*54fd6939SJiyong Park ERROR("thermal sensor was not initialized\n"); 45*54fd6939SJiyong Park return -1; 46*54fd6939SJiyong Park } 47*54fd6939SJiyong Park 48*54fd6939SJiyong Park if (tsen_cfg->ptr_tsen_read(tsen_cfg, temp)) { 49*54fd6939SJiyong Park ERROR("temperature read failed\n"); 50*54fd6939SJiyong Park return -1; 51*54fd6939SJiyong Park } 52*54fd6939SJiyong Park 53*54fd6939SJiyong Park return 0; 54*54fd6939SJiyong Park } 55