[PATCH 1/2] powerpc/powernv: Enable fetching of platform sensor data
Paul Gortmaker
paul.gortmaker at windriver.com
Sat Mar 29 02:26:47 EST 2014
On Fri, Mar 7, 2014 at 12:33 AM, Neelesh Gupta
<neelegup at linux.vnet.ibm.com> wrote:
> This patch enables fetching of various platform sensor data through
> OPAL and expects a sensor handle from the driver to pass to OPAL.
Looks like a missing header, causing build failures on celleb_defconfig
cc1: warnings being treated as errors
In file included from arch/powerpc/platforms/powernv/opal-sensor.c:23:0:
/home/paul/git/linux-head/arch/powerpc/include/asm/opal.h:893:42:
error: 'struct notifier_block' declared inside parameter list
/home/paul/git/linux-head/arch/powerpc/include/asm/opal.h:893:42:
error: its scope is only this definition or declaration, which is
probably not what you want
/home/paul/git/linux-head/arch/powerpc/include/asm/opal.h:895:14:
error: 'struct notifier_block' declared inside parameter list
make[2]: *** [arch/powerpc/platforms/powernv/opal-sensor.o] Error 1
make[1]: *** [arch/powerpc/platforms/powernv] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [arch/powerpc/platforms] Error 2
make: *** Waiting for unfinished jobs....
Bisecting: 0 revisions left to test after this (roughly 0 steps)
[4029cd66545f0a45258eda5313b7559bfeaaaae4] powerpc/powernv: Enable
reading and updating of system parameters
running ./x
#
# configuration written to .config
#
7224adbbb80329d1a3ec5aa98213b50365fcd246 is the first bad commit
commit 7224adbbb80329d1a3ec5aa98213b50365fcd246
Author: Neelesh Gupta <neelegup at linux.vnet.ibm.com>
Date: Fri Mar 7 11:03:27 2014 +0530
powerpc/powernv: Enable fetching of platform sensor data
This patch enables fetching of various platform sensor data through
OPAL and expects a sensor handle from the driver to pass to OPAL.
Signed-off-by: Neelesh Gupta <neelegup at linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
:040000 040000 ee7c8dec121a0da53be09da0e1449d8b885ef8a1
b8c4906de326638be77387c78173f7148369d6ff M arch
bisect run success
http://kisskb.ellerman.id.au/kisskb/buildresult/10844143/
Paul.
---
>
> Signed-off-by: Neelesh Gupta <neelegup at linux.vnet.ibm.com>
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> ---
> arch/powerpc/include/asm/opal.h | 4 ++
> arch/powerpc/platforms/powernv/Makefile | 2 -
> arch/powerpc/platforms/powernv/opal-sensor.c | 64 ++++++++++++++++++++++++
> arch/powerpc/platforms/powernv/opal-wrappers.S | 1
> 4 files changed, 70 insertions(+), 1 deletion(-)
> create mode 100644 arch/powerpc/platforms/powernv/opal-sensor.c
>
> diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h
> index 60b3edc..a1cc4dd 100644
> --- a/arch/powerpc/include/asm/opal.h
> +++ b/arch/powerpc/include/asm/opal.h
> @@ -159,6 +159,7 @@ extern int opal_enter_rtas(struct rtas_args *args,
> #define OPAL_GET_MSG 85
> #define OPAL_CHECK_ASYNC_COMPLETION 86
> #define OPAL_SYNC_HOST_REBOOT 87
> +#define OPAL_SENSOR_READ 88
> #define OPAL_GET_PARAM 89
> #define OPAL_SET_PARAM 90
>
> @@ -847,6 +848,8 @@ int64_t opal_get_param(uint64_t token, uint32_t param_id, uint64_t buffer,
> size_t length);
> int64_t opal_set_param(uint64_t token, uint32_t param_id, uint64_t buffer,
> size_t length);
> +int64_t opal_sensor_read(uint32_t sensor_hndl, int token,
> + uint32_t *sensor_data);
>
> /* Internal functions */
> extern int early_init_dt_scan_opal(unsigned long node, const char *uname, int depth, void *data);
> @@ -875,6 +878,7 @@ extern int opal_async_get_token_interruptible(void);
> extern int __opal_async_release_token(int token);
> extern int opal_async_release_token(int token);
> extern int opal_async_wait_response(uint64_t token, struct opal_msg *msg);
> +extern int opal_get_sensor_data(u32 sensor_hndl, u32 *sensor_data);
>
> extern void hvc_opal_init_early(void);
>
> diff --git a/arch/powerpc/platforms/powernv/Makefile b/arch/powerpc/platforms/powernv/Makefile
> index e6166d3..00ae938 100644
> --- a/arch/powerpc/platforms/powernv/Makefile
> +++ b/arch/powerpc/platforms/powernv/Makefile
> @@ -1,6 +1,6 @@
> obj-y += setup.o opal-takeover.o opal-wrappers.o opal.o opal-async.o
> obj-y += opal-rtc.o opal-nvram.o opal-lpc.o opal-flash.o opal-sysparam.o
> -obj-y += rng.o
> +obj-y += rng.o opal-sensor.o
>
> obj-$(CONFIG_SMP) += smp.o
> obj-$(CONFIG_PCI) += pci.o pci-p5ioc2.o pci-ioda.o
> diff --git a/arch/powerpc/platforms/powernv/opal-sensor.c b/arch/powerpc/platforms/powernv/opal-sensor.c
> new file mode 100644
> index 0000000..663cc9c
> --- /dev/null
> +++ b/arch/powerpc/platforms/powernv/opal-sensor.c
> @@ -0,0 +1,64 @@
> +/*
> + * PowerNV sensor code
> + *
> + * Copyright (C) 2013 IBM
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> + */
> +
> +#include <linux/delay.h>
> +#include <linux/mutex.h>
> +#include <asm/opal.h>
> +
> +static DEFINE_MUTEX(opal_sensor_mutex);
> +
> +/*
> + * This will return sensor information to driver based on the requested sensor
> + * handle. A handle is an opaque id for the powernv, read by the driver from the
> + * device tree..
> + */
> +int opal_get_sensor_data(u32 sensor_hndl, u32 *sensor_data)
> +{
> + int ret, token;
> + struct opal_msg msg;
> +
> + token = opal_async_get_token_interruptible();
> + if (token < 0) {
> + pr_err("%s: Couldn't get the token, returning\n", __func__);
> + ret = token;
> + goto out;
> + }
> +
> + mutex_lock(&opal_sensor_mutex);
> + ret = opal_sensor_read(sensor_hndl, token, sensor_data);
> + if (ret != OPAL_ASYNC_COMPLETION)
> + goto out_token;
> +
> + ret = opal_async_wait_response(token, &msg);
> + if (ret) {
> + pr_err("%s: Failed to wait for the async response, %d\n",
> + __func__, ret);
> + goto out_token;
> + }
> +
> + ret = msg.params[1];
> +
> +out_token:
> + mutex_unlock(&opal_sensor_mutex);
> + opal_async_release_token(token);
> +out:
> + return ret;
> +}
> +EXPORT_SYMBOL_GPL(opal_get_sensor_data);
> diff --git a/arch/powerpc/platforms/powernv/opal-wrappers.S b/arch/powerpc/platforms/powernv/opal-wrappers.S
> index 0afdeca..4279e30 100644
> --- a/arch/powerpc/platforms/powernv/opal-wrappers.S
> +++ b/arch/powerpc/platforms/powernv/opal-wrappers.S
> @@ -129,5 +129,6 @@ OPAL_CALL(opal_update_flash, OPAL_FLASH_UPDATE);
> OPAL_CALL(opal_get_msg, OPAL_GET_MSG);
> OPAL_CALL(opal_check_completion, OPAL_CHECK_ASYNC_COMPLETION);
> OPAL_CALL(opal_sync_host_reboot, OPAL_SYNC_HOST_REBOOT);
> +OPAL_CALL(opal_sensor_read, OPAL_SENSOR_READ);
> OPAL_CALL(opal_get_param, OPAL_GET_PARAM);
> OPAL_CALL(opal_set_param, OPAL_SET_PARAM);
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
More information about the Linuxppc-dev
mailing list