* [PATCH v2 1/5] dt-bindings: proximity: vl53l0x: Document optional supply and GPIO properties
2022-05-11 21:47 [PATCH v2 0/5] Add support for ToF sensor on Yoshino platform Markuss Broks
@ 2022-05-11 21:47 ` Markuss Broks
2022-05-13 8:16 ` Krzysztof Kozlowski
2022-05-11 21:47 ` [PATCH v2 2/5] proximity: vl53l0x: Prefer already initialized interrupt flags Markuss Broks
` (3 subsequent siblings)
4 siblings, 1 reply; 8+ messages in thread
From: Markuss Broks @ 2022-05-11 21:47 UTC (permalink / raw)
To: linux-kernel
Cc: ~postmarketos/upstreaming, phone-devel, Markuss Broks,
Konrad Dybcio, Marijn Suijten, AngeloGioacchino Del Regno,
Song Qiang, Jonathan Cameron, Lars-Peter Clausen, Rob Herring,
Krzysztof Kozlowski, Andy Gross, Bjorn Andersson, Liam Girdwood,
Mark Brown, linux-iio, devicetree, linux-arm-msm
This patch adds the optional properties for the VL53L0X ToF sensor to the
device-tree binding.
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
.../devicetree/bindings/iio/proximity/st,vl53l0x.yaml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yaml b/Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yaml
index 656460d9d8c8..322befc41de6 100644
--- a/Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yaml
+++ b/Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yaml
@@ -19,6 +19,11 @@ properties:
interrupts:
maxItems: 1
+ reset-gpios:
+ maxItems: 1
+
+ vdd-supply: true
+
required:
- compatible
- reg
--
2.36.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/5] dt-bindings: proximity: vl53l0x: Document optional supply and GPIO properties
2022-05-11 21:47 ` [PATCH v2 1/5] dt-bindings: proximity: vl53l0x: Document optional supply and GPIO properties Markuss Broks
@ 2022-05-13 8:16 ` Krzysztof Kozlowski
0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2022-05-13 8:16 UTC (permalink / raw)
To: Markuss Broks, linux-kernel
Cc: ~postmarketos/upstreaming, phone-devel, Konrad Dybcio,
Marijn Suijten, AngeloGioacchino Del Regno, Song Qiang,
Jonathan Cameron, Lars-Peter Clausen, Rob Herring,
Krzysztof Kozlowski, Andy Gross, Bjorn Andersson, Liam Girdwood,
Mark Brown, linux-iio, devicetree, linux-arm-msm
On 11/05/2022 23:47, Markuss Broks wrote:
> This patch adds the optional properties for the VL53L0X ToF sensor to the
> device-tree binding.
No "this patch":
https://elixir.bootlin.com/linux/v5.17.1/source/Documentation/process/submitting-patches.rst#L95
>
> Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
> ---
> .../devicetree/bindings/iio/proximity/st,vl53l0x.yaml | 5 +++++
> 1 file changed, 5 insertions(+)
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/5] proximity: vl53l0x: Prefer already initialized interrupt flags
2022-05-11 21:47 [PATCH v2 0/5] Add support for ToF sensor on Yoshino platform Markuss Broks
2022-05-11 21:47 ` [PATCH v2 1/5] dt-bindings: proximity: vl53l0x: Document optional supply and GPIO properties Markuss Broks
@ 2022-05-11 21:47 ` Markuss Broks
2022-05-12 10:32 ` kernel test robot
2022-05-11 21:47 ` [PATCH v2 3/5] proximity: vl53l0x: Handle the VDD regulator Markuss Broks
` (2 subsequent siblings)
4 siblings, 1 reply; 8+ messages in thread
From: Markuss Broks @ 2022-05-11 21:47 UTC (permalink / raw)
To: linux-kernel
Cc: ~postmarketos/upstreaming, phone-devel, Markuss Broks,
Konrad Dybcio, Marijn Suijten, AngeloGioacchino Del Regno,
Song Qiang, Jonathan Cameron, Lars-Peter Clausen, Rob Herring,
Krzysztof Kozlowski, Andy Gross, Bjorn Andersson, Liam Girdwood,
Mark Brown, linux-iio, devicetree, linux-arm-msm
On some boards interrupt type might be different than falling edge,
like hardcoded in driver. Leave interrupt flags as they were pre-configured
from the device-tree. If they're not provided, default to falling edge
interrupts.
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
drivers/iio/proximity/vl53l0x-i2c.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/iio/proximity/vl53l0x-i2c.c b/drivers/iio/proximity/vl53l0x-i2c.c
index 661a79ea200d..ef2c063dfa1c 100644
--- a/drivers/iio/proximity/vl53l0x-i2c.c
+++ b/drivers/iio/proximity/vl53l0x-i2c.c
@@ -57,11 +57,15 @@ static irqreturn_t vl53l0x_handle_irq(int irq, void *priv)
static int vl53l0x_configure_irq(struct i2c_client *client,
struct iio_dev *indio_dev)
{
+ int irq_flags = irq_get_trigger_type(client->irq);
struct vl53l0x_data *data = iio_priv(indio_dev);
int ret;
+ if (!irq_flags)
+ irq_flags = IRQF_TRIGGER_FALLING;
+
ret = devm_request_irq(&client->dev, client->irq, vl53l0x_handle_irq,
- IRQF_TRIGGER_FALLING, indio_dev->name, indio_dev);
+ irq_flags, indio_dev->name, indio_dev);
if (ret) {
dev_err(&client->dev, "devm_request_irq error: %d\n", ret);
return ret;
--
2.36.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/5] proximity: vl53l0x: Prefer already initialized interrupt flags
2022-05-11 21:47 ` [PATCH v2 2/5] proximity: vl53l0x: Prefer already initialized interrupt flags Markuss Broks
@ 2022-05-12 10:32 ` kernel test robot
0 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2022-05-12 10:32 UTC (permalink / raw)
To: Markuss Broks, linux-kernel
Cc: llvm, kbuild-all, ~postmarketos/upstreaming, phone-devel,
Markuss Broks, Konrad Dybcio, Marijn Suijten,
AngeloGioacchino Del Regno, Song Qiang, Jonathan Cameron,
Lars-Peter Clausen, Rob Herring, Krzysztof Kozlowski, Andy Gross,
Bjorn Andersson, Liam Girdwood, Mark Brown, linux-iio,
devicetree, linux-arm-msm
Hi Markuss,
I love your patch! Yet something to improve:
[auto build test ERROR on jic23-iio/togreg]
[also build test ERROR on robh/for-next linux/master linus/master v5.18-rc6 next-20220511]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/intel-lab-lkp/linux/commits/Markuss-Broks/Add-support-for-ToF-sensor-on-Yoshino-platform/20220512-054917
base: https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg
config: s390-randconfig-r032-20220509 (https://download.01.org/0day-ci/archive/20220512/202205121820.qRBa5PNP-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 18dd123c56754edf62c7042dcf23185c3727610f)
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
# install s390 cross compiling tool for clang build
# apt-get install binutils-s390x-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/b4103f031e2c0265ae4f15f107341bcfc83008f0
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Markuss-Broks/Add-support-for-ToF-sensor-on-Yoshino-platform/20220512-054917
git checkout b4103f031e2c0265ae4f15f107341bcfc83008f0
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash drivers/iio/proximity/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/iio/proximity/vl53l0x-i2c.c:60:18: error: call to undeclared function 'irq_get_trigger_type'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
int irq_flags = irq_get_trigger_type(client->irq);
^
1 error generated.
vim +/irq_get_trigger_type +60 drivers/iio/proximity/vl53l0x-i2c.c
56
57 static int vl53l0x_configure_irq(struct i2c_client *client,
58 struct iio_dev *indio_dev)
59 {
> 60 int irq_flags = irq_get_trigger_type(client->irq);
61 struct vl53l0x_data *data = iio_priv(indio_dev);
62 int ret;
63
64 if (!irq_flags)
65 irq_flags = IRQF_TRIGGER_FALLING;
66
67 ret = devm_request_irq(&client->dev, client->irq, vl53l0x_handle_irq,
68 irq_flags, indio_dev->name, indio_dev);
69 if (ret) {
70 dev_err(&client->dev, "devm_request_irq error: %d\n", ret);
71 return ret;
72 }
73
74 ret = i2c_smbus_write_byte_data(data->client,
75 VL_REG_SYSTEM_INTERRUPT_CONFIG_GPIO,
76 VL_REG_SYSTEM_INTERRUPT_GPIO_NEW_SAMPLE_READY);
77 if (ret < 0)
78 dev_err(&client->dev, "failed to configure IRQ: %d\n", ret);
79
80 return ret;
81 }
82
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 3/5] proximity: vl53l0x: Handle the VDD regulator
2022-05-11 21:47 [PATCH v2 0/5] Add support for ToF sensor on Yoshino platform Markuss Broks
2022-05-11 21:47 ` [PATCH v2 1/5] dt-bindings: proximity: vl53l0x: Document optional supply and GPIO properties Markuss Broks
2022-05-11 21:47 ` [PATCH v2 2/5] proximity: vl53l0x: Prefer already initialized interrupt flags Markuss Broks
@ 2022-05-11 21:47 ` Markuss Broks
2022-05-11 21:47 ` [PATCH v2 4/5] proximity: vl53l0x: Handle the reset GPIO Markuss Broks
2022-05-11 21:47 ` [PATCH v2 5/5] arm64: dts: qcom: msm8998-xperia: Introduce ToF sensor support Markuss Broks
4 siblings, 0 replies; 8+ messages in thread
From: Markuss Broks @ 2022-05-11 21:47 UTC (permalink / raw)
To: linux-kernel
Cc: ~postmarketos/upstreaming, phone-devel, Markuss Broks,
Konrad Dybcio, Marijn Suijten, AngeloGioacchino Del Regno,
Song Qiang, Jonathan Cameron, Lars-Peter Clausen, Rob Herring,
Krzysztof Kozlowski, Andy Gross, Bjorn Andersson, Liam Girdwood,
Mark Brown, linux-iio, devicetree, linux-arm-msm
Handle the regulator supplying the VDD pin of VL53L0X.
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
drivers/iio/proximity/vl53l0x-i2c.c | 37 +++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/drivers/iio/proximity/vl53l0x-i2c.c b/drivers/iio/proximity/vl53l0x-i2c.c
index ef2c063dfa1c..e65c4fcd32d6 100644
--- a/drivers/iio/proximity/vl53l0x-i2c.c
+++ b/drivers/iio/proximity/vl53l0x-i2c.c
@@ -42,6 +42,7 @@
struct vl53l0x_data {
struct i2c_client *client;
struct completion completion;
+ struct regulator *vdd_supply;
};
static irqreturn_t vl53l0x_handle_irq(int irq, void *priv)
@@ -191,10 +192,31 @@ static const struct iio_info vl53l0x_info = {
.read_raw = vl53l0x_read_raw,
};
+static void vl53l0x_power_off(void *_data)
+{
+ struct vl53l0x_data *data = _data;
+
+ regulator_disable(data->vdd_supply);
+}
+
+static int vl53l0x_power_on(struct vl53l0x_data *data)
+{
+ int ret;
+
+ ret = regulator_enable(data->vdd_supply);
+ if (ret)
+ return ret;
+
+ usleep_range(3200, 5000);
+
+ return 0;
+}
+
static int vl53l0x_probe(struct i2c_client *client)
{
struct vl53l0x_data *data;
struct iio_dev *indio_dev;
+ int error;
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
if (!indio_dev)
@@ -209,6 +231,21 @@ static int vl53l0x_probe(struct i2c_client *client)
I2C_FUNC_SMBUS_BYTE_DATA))
return -EOPNOTSUPP;
+ data->vdd_supply = devm_regulator_get_optional(&client->dev, "vdd");
+ if (IS_ERR(data->vdd_supply))
+ return dev_err_probe(&client->dev, PTR_ERR(data->vdd_supply),
+ "Unable to get VDD regulator\n");
+
+ error = devm_add_action_or_reset(&client->dev, vl53l0x_power_off, data);
+ if (error)
+ return dev_err_probe(&client->dev, error,
+ "Failed to install poweroff action\n");
+
+ error = vl53l0x_power_on(data);
+ if (error)
+ return dev_err_probe(&client->dev, error,
+ "Failed to power on the chip\n");
+
indio_dev->name = "vl53l0x";
indio_dev->info = &vl53l0x_info;
indio_dev->channels = vl53l0x_channels;
--
2.36.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 4/5] proximity: vl53l0x: Handle the reset GPIO
2022-05-11 21:47 [PATCH v2 0/5] Add support for ToF sensor on Yoshino platform Markuss Broks
` (2 preceding siblings ...)
2022-05-11 21:47 ` [PATCH v2 3/5] proximity: vl53l0x: Handle the VDD regulator Markuss Broks
@ 2022-05-11 21:47 ` Markuss Broks
2022-05-11 21:47 ` [PATCH v2 5/5] arm64: dts: qcom: msm8998-xperia: Introduce ToF sensor support Markuss Broks
4 siblings, 0 replies; 8+ messages in thread
From: Markuss Broks @ 2022-05-11 21:47 UTC (permalink / raw)
To: linux-kernel
Cc: ~postmarketos/upstreaming, phone-devel, Markuss Broks,
Konrad Dybcio, Marijn Suijten, AngeloGioacchino Del Regno,
Song Qiang, Jonathan Cameron, Lars-Peter Clausen, Rob Herring,
Krzysztof Kozlowski, Andy Gross, Bjorn Andersson, Liam Girdwood,
Mark Brown, linux-iio, devicetree, linux-arm-msm
Handle the GPIO connected to the XSHUT/RST_N pin of VL53L0X.
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
drivers/iio/proximity/vl53l0x-i2c.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/iio/proximity/vl53l0x-i2c.c b/drivers/iio/proximity/vl53l0x-i2c.c
index e65c4fcd32d6..7aa9c1e95006 100644
--- a/drivers/iio/proximity/vl53l0x-i2c.c
+++ b/drivers/iio/proximity/vl53l0x-i2c.c
@@ -15,6 +15,7 @@
*/
#include <linux/delay.h>
+#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/module.h>
@@ -43,6 +44,7 @@ struct vl53l0x_data {
struct i2c_client *client;
struct completion completion;
struct regulator *vdd_supply;
+ struct gpio_desc *reset_gpio;
};
static irqreturn_t vl53l0x_handle_irq(int irq, void *priv)
@@ -196,6 +198,8 @@ static void vl53l0x_power_off(void *_data)
{
struct vl53l0x_data *data = _data;
+ gpiod_set_value_cansleep(data->reset_gpio, 1);
+
regulator_disable(data->vdd_supply);
}
@@ -207,6 +211,8 @@ static int vl53l0x_power_on(struct vl53l0x_data *data)
if (ret)
return ret;
+ gpiod_set_value_cansleep(data->reset_gpio, 0);
+
usleep_range(3200, 5000);
return 0;
@@ -236,6 +242,11 @@ static int vl53l0x_probe(struct i2c_client *client)
return dev_err_probe(&client->dev, PTR_ERR(data->vdd_supply),
"Unable to get VDD regulator\n");
+ data->reset_gpio = devm_gpiod_get_optional(&client->dev, "reset", GPIOD_OUT_HIGH);
+ if (IS_ERR(data->reset_gpio))
+ return dev_err_probe(&client->dev, PTR_ERR(data->reset_gpio),
+ "Cannot get reset GPIO\n");
+
error = devm_add_action_or_reset(&client->dev, vl53l0x_power_off, data);
if (error)
return dev_err_probe(&client->dev, error,
--
2.36.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 5/5] arm64: dts: qcom: msm8998-xperia: Introduce ToF sensor support
2022-05-11 21:47 [PATCH v2 0/5] Add support for ToF sensor on Yoshino platform Markuss Broks
` (3 preceding siblings ...)
2022-05-11 21:47 ` [PATCH v2 4/5] proximity: vl53l0x: Handle the reset GPIO Markuss Broks
@ 2022-05-11 21:47 ` Markuss Broks
4 siblings, 0 replies; 8+ messages in thread
From: Markuss Broks @ 2022-05-11 21:47 UTC (permalink / raw)
To: linux-kernel
Cc: ~postmarketos/upstreaming, phone-devel, Markuss Broks,
Konrad Dybcio, Marijn Suijten, AngeloGioacchino Del Regno,
Song Qiang, Jonathan Cameron, Lars-Peter Clausen, Rob Herring,
Krzysztof Kozlowski, Andy Gross, Bjorn Andersson, Liam Girdwood,
Mark Brown, linux-iio, devicetree, linux-arm-msm
This patch adds device tree support for the VL53L0X ToF sensor
found on all Yoshino devices.
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
.../dts/qcom/msm8998-sony-xperia-yoshino.dtsi | 33 +++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino.dtsi b/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino.dtsi
index 47488a1aecae..a95fa29aa18b 100644
--- a/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino.dtsi
@@ -245,6 +245,24 @@ &blsp2_uart1 {
status = "okay";
};
+&blsp2_i2c2 {
+ status = "okay";
+
+ proximity@29 {
+ compatible = "st,vl53l0x";
+ reg = <0x29>;
+
+ interrupt-parent = <&tlmm>;
+ interrupts = <22 IRQ_TYPE_EDGE_FALLING>;
+
+ reset-gpios = <&tlmm 27 GPIO_ACTIVE_LOW>;
+ vdd-supply = <&cam_vio_vreg>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&tof_int &tof_reset>;
+ };
+};
+
&ibb {
regulator-min-microamp = <800000>;
regulator-max-microamp = <800000>;
@@ -621,6 +639,21 @@ hall_sensor0_default: acc-cover-open {
input-enable;
};
+ tof_int: tof-int {
+ pins = "gpio22";
+ function = "gpio";
+ bias-pull-up;
+ drive-strength = <2>;
+ input-enable;
+ };
+
+ tof_reset: tof-reset {
+ pins = "gpio27";
+ function = "gpio";
+ bias-disable;
+ drive-strength = <2>;
+ };
+
ts_int_n: ts-int-n {
pins = "gpio125";
function = "gpio";
--
2.36.1
^ permalink raw reply related [flat|nested] 8+ messages in thread