tree:
https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-4.14
head: 675fb47dbd64272a71be02ea9708195573d4f0bf
commit: 4a448c38e67d50a9df8e3bebbbce5e054202acc2 [25/36] BACKPORT: iio: cros_ec: Register
to cros_ec_sensorhub when EC supports FIFO
config: s390-allyesconfig (attached as .config)
compiler: s390-linux-gcc (GCC) 7.5.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 4a448c38e67d50a9df8e3bebbbce5e054202acc2
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-7.5.0 make.cross ARCH=s390
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Note: the chrome-os/chromeos-4.14 HEAD 675fb47dbd64272a71be02ea9708195573d4f0bf builds
fine.
It only hurts bisectibility.
All errors (new ones prefixed by >>):
> drivers/iio/common/cros_ec_sensors/cros_ec_sensors_ring.c:72:8:
error: redefinition of 'struct cros_ec_sensors_ring_sample'
struct
cros_ec_sensors_ring_sample {
^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/iio/common/cros_ec_sensors_core.h:23:0,
from drivers/iio/common/cros_ec_sensors/cros_ec_sensors_ring.c:23:
include/linux/platform_data/cros_ec_sensorhub.h:50:8: note: originally defined here
struct cros_ec_sensors_ring_sample {
^~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/iio/common/cros_ec_sensors/cros_ec_sensors_ring.c:80:8:
error: redefinition of 'struct cros_ec_sensors_ec_overflow_state'
struct
cros_ec_sensors_ec_overflow_state {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/iio/common/cros_ec_sensors_core.h:23:0,
from drivers/iio/common/cros_ec_sensors/cros_ec_sensors_ring.c:23:
include/linux/platform_data/cros_ec_sensorhub.h:58:8: note: originally defined here
struct cros_ec_sensors_ec_overflow_state {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/iio/common/cros_ec_sensors/cros_ec_sensors_ring.c:100:8:
error: redefinition of 'struct cros_ec_sensors_ts_filter_state'
struct
cros_ec_sensors_ts_filter_state {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/iio/common/cros_ec_sensors_core.h:23:0,
from drivers/iio/common/cros_ec_sensors/cros_ec_sensors_ring.c:23:
include/linux/platform_data/cros_ec_sensorhub.h:81:8: note: originally defined here
struct cros_ec_sensors_ts_filter_state {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_ring.c: In function
'cros_ec_ring_probe':
> drivers/iio/common/cros_ec_sensors/cros_ec_sensors_ring.c:1048:8:
error: too few arguments to function 'cros_ec_sensors_core_init'
ret =
cros_ec_sensors_core_init(pdev, indio_dev, false);
^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/iio/common/cros_ec_sensors/cros_ec_sensors_ring.c:23:0:
include/linux/iio/common/cros_ec_sensors_core.h:124:5: note: declared here
int cros_ec_sensors_core_init(struct platform_device *pdev,
^~~~~~~~~~~~~~~~~~~~~~~~~
vim +/cros_ec_sensors_core_init +1048
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_ring.c
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1025
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1026 static int
cros_ec_ring_probe(struct platform_device *pdev)
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1027 {
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1028 struct device *dev =
&pdev->dev;
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1029 struct cros_ec_dev *ec_dev =
dev_get_drvdata(dev->parent);
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1030 struct cros_ec_device
*ec_device;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1031 struct iio_dev *indio_dev;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1032 struct iio_buffer *buffer;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1033 struct cros_ec_sensors_ring_state
*state;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1034 int ret;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1035
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1036 if (!ec_dev ||
!ec_dev->ec_dev) {
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1037 dev_warn(&pdev->dev,
"No CROS EC device found.\n");
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1038 return -EINVAL;
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1039 }
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1040 ec_device = ec_dev->ec_dev;
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1041
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1042 indio_dev =
devm_iio_device_alloc(&pdev->dev, sizeof(*state));
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1043 if (!indio_dev)
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1044 return -ENOMEM;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1045
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1046 platform_set_drvdata(pdev,
indio_dev);
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1047
d882de434433b6 Enric Balletbo i Serra 2017-06-19 @1048 ret =
cros_ec_sensors_core_init(pdev, indio_dev, false);
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1049 if (ret)
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1050 return ret;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1051
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1052 state = iio_priv(indio_dev);
02934176e3952d Gwendal Grignou 2016-11-17 1053 /*
02934176e3952d Gwendal Grignou 2016-11-17 1054 * Disable the ring in case it
was left enabled previously.
02934176e3952d Gwendal Grignou 2016-11-17 1055 */
02934176e3952d Gwendal Grignou 2016-11-17 1056 ret =
cros_ec_ring_fifo_toggle(state, false);
02934176e3952d Gwendal Grignou 2016-11-17 1057 if (ret)
02934176e3952d Gwendal Grignou 2016-11-17 1058 return ret;
02934176e3952d Gwendal Grignou 2016-11-17 1059
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1060 /* Retrieve FIFO information */
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1061 state->core.param.cmd =
MOTIONSENSE_CMD_FIFO_INFO;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1062 /* If it fails, just assume the
FIFO is not supported.
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1063 * For other errors, the other
sensor drivers would have noticed
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1064 * already.
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1065 */
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1066 if
(cros_ec_motion_send_host_cmd(&state->core, 0))
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1067 return -ENODEV;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1068
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1069 /* Allocate the full fifo.
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1070 * We need to copy the whole FIFO
to set timestamps properly *
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1071 */
959537542e9a2b Gwendal Grignou 2017-07-12 1072 state->fifo_size =
state->core.resp->fifo_info.size;
959537542e9a2b Gwendal Grignou 2017-07-12 1073 state->ring =
devm_kcalloc(&pdev->dev, state->fifo_size,
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1074 sizeof(*state->ring),
GFP_KERNEL);
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1075 if (!state->ring)
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1076 return -ENOMEM;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1077
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1078 state->fifo_timestamp[LAST_TS]
= cros_ec_get_time_ns();
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1079
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1080 indio_dev->channels =
cros_ec_ring_channels;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1081 indio_dev->num_channels =
ARRAY_SIZE(cros_ec_ring_channels);
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1082 indio_dev->info =
&ec_sensors_info;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1083 indio_dev->modes =
INDIO_BUFFER_SOFTWARE;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1084
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1085 buffer =
devm_iio_kfifo_allocate(indio_dev->dev.parent);
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1086 if (!buffer)
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1087 return -ENOMEM;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1088
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1089
iio_device_attach_buffer(indio_dev, buffer);
02934176e3952d Gwendal Grignou 2016-11-17 1090 indio_dev->setup_ops =
&cros_ec_ring_buffer_ops;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1091
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1092 ret =
devm_iio_device_register(indio_dev->dev.parent, indio_dev);
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1093 if (ret < 0)
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1094 return ret;
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1095
ec03d15d862b5a Enrico Granata 2018-10-30 1096 state->tight_timestamps =
cros_ec_check_features(ec_dev,
ec03d15d862b5a Enrico Granata 2018-10-30 1097
EC_FEATURE_MOTION_SENSE_TIGHT_TIMESTAMPS);
ec03d15d862b5a Enrico Granata 2018-10-30 1098
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1099 /* register the notifier that
will act as a top half interrupt. */
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1100 state->notifier.notifier_call
= cros_ec_ring_event;
cdd1f48dcb6be8 Enric Balletbo i Serra 2018-01-11 1101 ret =
blocking_notifier_chain_register(&ec_device->event_notifier,
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1102
&state->notifier);
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1103 if (ret < 0) {
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1104 dev_warn(&indio_dev->dev,
"failed to register notifier\n");
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1105 }
02934176e3952d Gwendal Grignou 2016-11-17 1106 return ret;
5a65a63a21f584 Enric Balletbo i Serra 2018-01-11 1107 }
d882de434433b6 Enric Balletbo i Serra 2017-06-19 1108
:::::: The code at line 1048 was first introduced by commit
:::::: d882de434433b67b4570214e3559c6e0db1f0e4c CHROMIUM: iio: cros_ec: add support for
single sensor hub FIFO
:::::: TO: Enric Balletbo i Serra <enric.balletbo(a)collabora.com>
:::::: CC: Guenter Roeck <groeck(a)chromium.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org