* [PATCH v5 36/37] ARM: dts: qcom: ipq8064: drop qcom, prefix from SSBI node name
From: Dmitry Baryshkov @ 2023-08-27 13:25 UTC (permalink / raw)
To: devicetree, Lee Jones, Rob Herring, Krzysztof Kozlowski
Cc: Andy Gross, Bjorn Andersson, Konrad Dybcio, linux-arm-msm,
Jonathan Cameron, Lars-Peter Clausen, linux-iio, Dmitry Torokhov,
linux-input, Pavel Machek, linux-leds
In-Reply-To: <20230827132525.951475-1-dmitry.baryshkov@linaro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi b/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi
index 6198f42f6a9c..c3677440b786 100644
--- a/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi
+++ b/arch/arm/boot/dts/qcom/qcom-ipq8064.dtsi
@@ -366,7 +366,7 @@ rpmcc: clock-controller {
};
};
- qcom,ssbi@500000 {
+ ssbi@500000 {
compatible = "qcom,ssbi";
reg = <0x00500000 0x1000>;
qcom,controller-type = "pmic-arbiter";
--
2.39.2
^ permalink raw reply related
* [PATCH v5 37/37] ARM: dts: qcom: mdm9615: drop qcom, prefix from SSBI node name
From: Dmitry Baryshkov @ 2023-08-27 13:25 UTC (permalink / raw)
To: devicetree, Lee Jones, Rob Herring, Krzysztof Kozlowski
Cc: Andy Gross, Bjorn Andersson, Konrad Dybcio, linux-arm-msm,
Jonathan Cameron, Lars-Peter Clausen, linux-iio, Dmitry Torokhov,
linux-input, Pavel Machek, linux-leds
In-Reply-To: <20230827132525.951475-1-dmitry.baryshkov@linaro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
arch/arm/boot/dts/qcom/qcom-mdm9615.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/qcom/qcom-mdm9615.dtsi b/arch/arm/boot/dts/qcom/qcom-mdm9615.dtsi
index 07e712e890f6..b02336bd8370 100644
--- a/arch/arm/boot/dts/qcom/qcom-mdm9615.dtsi
+++ b/arch/arm/boot/dts/qcom/qcom-mdm9615.dtsi
@@ -258,7 +258,7 @@ gsbi5_serial: serial@16440000 {
};
};
- ssbi: qcom,ssbi@500000 {
+ ssbi: ssbi@500000 {
compatible = "qcom,ssbi";
reg = <0x500000 0x1000>;
qcom,controller-type = "pmic-arbiter";
--
2.39.2
^ permalink raw reply related
* Re: [PATCH 1/2] xpad: XTYPE_XBOX: Report analog buttons
From: Max Staudt @ 2023-08-27 15:07 UTC (permalink / raw)
To: Rahul Rameshbabu
Cc: Dmitry Torokhov, Jiri Kosina, Benjamin Tissoires, Vicki Pfau,
Pavel Rojtberg, Roderick Colenbrander, linux-input, linux-kernel
In-Reply-To: <87fs45u4o2.fsf@protonmail.com>
On 8/27/23 01:52, Rahul Rameshbabu wrote:
> You will want to update the commit message subject to use the prefix
> "Input: xpad -" instead of "xpad:".
Thanks, will do!
>> +/* used for analog face buttons mapped to axes */
>> +static const signed short xpad_abs_analog_face_buttons[] = {
>> + ABS_MISC + 0, ABS_MISC + 1, /* A, B */
>> + ABS_MISC + 3, ABS_MISC + 4, /* X, Y */
>> + ABS_MISC + 2, ABS_MISC + 5, /* C, Z */
>> + -1
>> +};
>
> Would it make more sense to use an enum for this?
> Something like the below enum.
>
> enum xpad_abs_analog_face_btn {
> XPAD_ABS_ANALOG_FACE_BTN_A = ABS_MISC,
> XPAD_ABS_ANALOG_FACE_BTN_B,
> XPAD_ABS_ANALOG_FACE_BTN_C,
> XPAD_ABS_ANALOG_FACE_BTN_X,
> XPAD_ABS_ANALOG_FACE_BTN_Y,
> XPAD_ABS_ANALOG_FACE_BTN_Z,
> XPAD_ABS_ANALOG_FACE_BTN_END, /* Must remain as the last element */
> };
>
> This would clean up both xpad_process_packet and xpad_set_up_abs a bit
> in my opinion. Your loop for xpad_set_up_abs would look like the
> following.
>
> enum xpad_abs_analog_face_btn btn;
>
> ...
>
> for (btn = XPAD_ABS_ANALOG_FACE_BTN_A; btn != XPAD_ABS_ANALOG_FACE_BTN_END; ++btn)
> xpad_set_up_abs(input_dev, btn);
I agree, that looks cleaner.
Since it's a step closer to standardising a mapping for those analog buttons, I'd like to wait and see whether there is a consensus across drivers and maintainers. Maybe we can include something like this enum in input-event-codes.h and have a really clean solution.
Thanks!
Max
^ permalink raw reply
* Re: atkbd input regression
From: José Ramón Muñoz Pekkarinen @ 2023-08-27 15:59 UTC (permalink / raw)
To: Raul Rangel; +Cc: linux-input, dmitry.torokhov, gregkh, Linux Regressions
In-Reply-To: <CANWZPgLcHa2x-Rdy6Hma39p-6E6_5UGUamjPZkKYqz_q0yKJ2g@mail.gmail.com>
On Sun, 27 Aug 2023 at 07:20, José Ramón Muñoz Pekkarinen
<koalinux@gmail.com> wrote:
>
> On Tue, 8 Aug 2023 at 18:01, Raul Rangel <rrangel@chromium.org> wrote:
> > From your 6.4 logs, it looks like your keyboard is enumerating correctly:
> > > i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU]
> > > at 0x60,0x64 irq 1,12
> > > serio: i8042 KBD port at 0x60,0x64 irq 1
> > > serio: i8042 AUX port at 0x60,0x64 irq 12
> > > input: AT Translated Set 2 keyboard as
> > > /devices/platform/i8042/serio0/input/input0
> >
> > You also said that evtest works correctly. I would try diffing your
> > plasma logs between kernel versions to see if that sheds any light.
> >
> > Raul
>
> Excuse the long wait, I've been investigating with the kde community
> and reading the code of libinput, systemd and the like, and I managed to
> find a difference that I'm not quite sure it is relevant to narrow the issue.
> While the keyboard is populated in the udev database as this:
>
> $ udevadm info -e
> P: /devices/platform/i8042/serio0/input/input0
> M: input0
> R: 0
> U: input
> E: DEVPATH=/devices/platform/i8042/serio0/input/input0
> E: SUBSYSTEM=input
> E: PRODUCT=11/1/1/ab54
> E: NAME="AT Translated Set 2 keyboard"
> E: PHYS="isa0060/serio0/input0"
> E: PROP=0
> E: EV=120013
> E: KEY=402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe
> E: MSC=10
> E: LED=7
> E: MODALIAS=input:b0011v0001p0001eAB54-e0,1,4,11,14,k71,72,73,74,75,76,77,79,7A,7B,7C,7D,7E,7F,80,8C,8E,8F,9B,9C,9D,9E,9F,A3,A4,A5,A6,AC,AD,B7,B8,B9,D9,E2,ram4,l0,1,2,sfw
>
> There is no longer a corresponding entry under /run/udev/data,
> the following is the output of the ls -la /run/udev/data on 6.4.12:
>
> total 116
> -rw-r--r--. 1 root root 129 Aug 27 08:53 +backlight:amdgpu_bl1
> -rw-r--r--. 1 root root 737 Aug 27 08:54 +input:input10
> -rw-r--r--. 1 root root 715 Aug 27 08:54 +input:input11
> -rw-r--r--. 1 root root 715 Aug 27 08:54 +input:input12
> -rw-r--r--. 1 root root 776 Aug 27 08:54 +input:input13
> -rw-r--r--. 1 root root 166 Aug 27 08:54 +leds:input10::capslock
> -rw-r--r--. 1 root root 166 Aug 27 08:54 +leds:input10::numlock
> -rw-r--r--. 1 root root 166 Aug 27 08:54 +leds:input10::scrolllock
> -rw-r--r--. 1 root root 107 Aug 27 08:54 +usb:2-2.1:1.0
> -rw-r--r--. 1 root root 107 Aug 27 08:54 +usb:2-2.1:1.1
> -rw-r--r--. 1 root root 88 Aug 27 08:54 +usb:2-2.3:1.0
> -rw-r--r--. 1 root root 171 Aug 27 08:54 +usb:2-2:1.0
> -rw-r--r--. 1 root root 148 Aug 27 08:53 +usb:3-0:1.0
> -rw-r--r--. 1 root root 56 Aug 27 09:07 +usb:4-2:1.0
> -rw-r--r--. 1 root root 56 Aug 27 09:07 +usb:4-2:1.1
> -rw-r--r--. 1 root root 56 Aug 27 09:07 +usb:4-2:1.2
> -rw-r--r--. 1 root root 148 Aug 27 08:53 +usb:5-0:1.0
> drwxr-xr-x. 2 root root 1360 Aug 27 09:07 .
> drwxr-xr-x. 5 root root 100 Aug 27 09:07 ..
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c10:229
> -rw-r--r--. 1 root root 36 Aug 27 08:54 c116:1
> -rw-r--r--. 1 root root 36 Aug 27 08:54 c116:33
> -rw-r--r--. 1 root root 815 Aug 27 08:54 c13:34
> -rw-r--r--. 1 root root 856 Aug 27 08:54 c13:73
> -rw-r--r--. 1 root root 831 Aug 27 08:54 c13:74
> -rw-r--r--. 1 root root 831 Aug 27 08:54 c13:75
> -rw-r--r--. 1 root root 881 Aug 27 08:54 c13:76
> -rw-r--r--. 1 root root 663 Aug 27 08:54 c189:129
> -rw-r--r--. 1 root root 681 Aug 27 08:54 c189:130
> -rw-r--r--. 1 root root 721 Aug 27 08:54 c189:131
> -rw-r--r--. 1 root root 783 Aug 27 09:07 c189:387
> -rw-r--r--. 1 root root 0 Aug 27 08:54 c247:0
> -rw-r--r--. 1 root root 0 Aug 27 08:54 c247:1
> -rw-r--r--. 1 root root 0 Aug 27 08:54 c247:2
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:10
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:11
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:12
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:130
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:131
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:132
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:133
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:134
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:135
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:136
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:137
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:138
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:139
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:140
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:2
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:3
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:4
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:5
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:6
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:66
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:67
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:68
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:69
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:7
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:70
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:71
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:72
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:73
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:74
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:75
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:76
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:8
> -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:9
> -rw-r--r--. 1 root root 991 Aug 27 09:07 n3
>
> And the same on the working 5.16 kernel:
>
> total 1156
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0003:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:01
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:02
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:03
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:04
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:05
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:06
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:07
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:08
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:09
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0a
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0b
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0c
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0d
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0e
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0f
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0010:00
> -rw-r--r--. 1 root root 59 Aug 27 09:54 +acpi:AMDI0030:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LEN0071:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LEN0100:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LEN0130:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LEN0268:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LEN0411:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPOWER:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPOWER:01
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPOWER:02
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPOWER:03
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPOWER:04
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPWRBN:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXSYBUS:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXSYBUS:01
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXSYSTM:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXVIDEO:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0000:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0100:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0103:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0200:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0800:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0A08:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0B00:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C01:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:01
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:02
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:03
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:04
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:05
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:06
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:07
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:08
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:09
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:0a
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:0b
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:0c
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C04:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C09:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0A:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0C:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0D:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0E:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:01
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:02
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:03
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:04
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:05
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:06
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:07
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C14:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C14:01
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C14:02
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C14:03
> -rw-r--r--. 1 root root 54 Aug 27 09:54 +acpi:SMB0001:00
> -rw-r--r--. 1 root root 70 Aug 27 09:54 +acpi:STM0125:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:USBC000:00
> -rw-r--r--. 1 root root 128 Aug 27 09:54 +backlight:amdgpu_bl0
> -rw-r--r--. 1 root root 140 Aug 27 09:54 +dmi:id
> -rw-r--r--. 1 root root 156 Aug 27 09:54 +drm:card0-DP-1
> -rw-r--r--. 1 root root 156 Aug 27 09:54 +drm:card0-DP-2
> -rw-r--r--. 1 root root 156 Aug 27 09:54 +drm:card0-HDMI-A-1
> -rw-r--r--. 1 root root 156 Aug 27 09:54 +drm:card0-eDP-1
> -rw-r--r--. 1 root root 230 Aug 27 09:54 +input:input0
> -rw-r--r--. 1 root root 237 Aug 27 09:54 +input:input10
> -rw-r--r--. 1 root root 151 Aug 27 09:54 +input:input3
> -rw-r--r--. 1 root root 154 Aug 27 09:54 +input:input4
> -rw-r--r--. 1 root root 151 Aug 27 09:54 +input:input5
> -rw-r--r--. 1 root root 154 Aug 27 09:54 +input:input6
> -rw-r--r--. 1 root root 154 Aug 27 09:54 +input:input7
> -rw-r--r--. 1 root root 213 Aug 27 09:54 +input:input8
> -rw-r--r--. 1 root root 192 Aug 27 09:54 +input:input9
> -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:input0::capslock
> -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:input0::numlock
> -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:input0::scrolllock
> -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:platform::micmute
> -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:platform::mute
> -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:tpacpi::kbd_backlight
> -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:tpacpi::lid_logo_dot
> -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:tpacpi::power
> -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:tpacpi::standby
> -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:tpacpi::thinkvantage
> -rw-r--r--. 1 root root 209 Aug 27 09:54 +pci:0000:00:00.0
> -rw-r--r--. 1 root root 215 Aug 27 09:54 +pci:0000:00:00.2
> -rw-r--r--. 1 root root 211 Aug 27 09:54 +pci:0000:00:01.0
> -rw-r--r--. 1 root root 211 Aug 27 09:54 +pci:0000:00:02.0
> -rw-r--r--. 1 root root 258 Aug 27 09:54 +pci:0000:00:02.1
> -rw-r--r--. 1 root root 258 Aug 27 09:54 +pci:0000:00:02.2
> -rw-r--r--. 1 root root 258 Aug 27 09:54 +pci:0000:00:02.4
> -rw-r--r--. 1 root root 211 Aug 27 09:54 +pci:0000:00:08.0
> -rw-r--r--. 1 root root 266 Aug 27 09:54 +pci:0000:00:08.1
> -rw-r--r--. 1 root root 211 Aug 27 09:54 +pci:0000:00:14.0
> -rw-r--r--. 1 root root 195 Aug 27 09:54 +pci:0000:00:14.3
> -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.0
> -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.1
> -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.2
> -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.3
> -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.4
> -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.5
> -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.6
> -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.7
> -rw-r--r--. 1 root root 278 Aug 27 09:54 +pci:0000:01:00.0
> -rw-r--r--. 1 root root 256 Aug 27 09:54 +pci:0000:02:00.0
> -rw-r--r--. 1 root root 256 Aug 27 09:54 +pci:0000:02:00.1
> -rw-r--r--. 1 root root 256 Aug 27 09:54 +pci:0000:02:00.2
> -rw-r--r--. 1 root root 258 Aug 27 09:54 +pci:0000:02:00.3
> -rw-r--r--. 1 root root 263 Aug 27 09:54 +pci:0000:02:00.4
> -rw-r--r--. 1 root root 176 Aug 27 09:54 +pci:0000:04:00.0
> -rw-r--r--. 1 root root 266 Aug 27 09:54 +pci:0000:06:00.0
> -rw-r--r--. 1 root root 262 Aug 27 09:54 +pci:0000:06:00.2
> -rw-r--r--. 1 root root 260 Aug 27 09:54 +pci:0000:06:00.3
> -rw-r--r--. 1 root root 260 Aug 27 09:54 +pci:0000:06:00.4
> -rw-r--r--. 1 root root 240 Aug 27 09:54 +pci:0000:06:00.5
> -rw-r--r--. 1 root root 59 Aug 27 09:54 +platform:AMDI0030:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +platform:LEN0100:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +platform:LEN0130:00
> -rw-r--r--. 1 root root 62 Aug 27 09:54 +platform:LEN0268:00
> -rw-r--r--. 1 root root 70 Aug 27 09:54 +platform:STM0125:00
> -rw-r--r--. 1 root root 205 Aug 27 09:54 +usb:1-0:1.0
> -rw-r--r--. 1 root root 190 Aug 27 09:54 +usb:2-0:1.0
> -rw-r--r--. 1 root root 148 Aug 27 09:54 +usb:3-0:1.0
> -rw-r--r--. 1 root root 190 Aug 27 09:54 +usb:4-0:1.0
> -rw-r--r--. 1 root root 148 Aug 27 09:54 +usb:5-0:1.0
> drwxr-xr-x. 2 root root 7200 Aug 27 09:54 .
> drwxr-xr-x. 8 root root 180 Aug 27 09:54 ..
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:0
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:1
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:10
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:11
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:12
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:13
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:14
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:15
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:2
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:3
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:4
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:5
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:6
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:7
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:8
> -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:9
> -rw-r--r--. 1 root root 129 Aug 27 09:54 b254:0
> -rw-r--r--. 1 root root 136 Aug 27 09:54 b254:1
> -rw-r--r--. 1 root root 129 Aug 27 09:54 b254:2
> -rw-r--r--. 1 root root 575 Aug 27 09:54 b259:0
> -rw-r--r--. 1 root root 1069 Aug 27 09:54 b259:1
> -rw-r--r--. 1 root root 1137 Aug 27 09:54 b259:2
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:125
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:126
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:127
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:130
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:144
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:183
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:184
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c10:224
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:227
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:228
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:229
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:231
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:232
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:234
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:236
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:237
> -rw-r--r--. 1 root root 49 Aug 27 09:54 c10:242
> -rw-r--r--. 1 root root 201 Aug 27 09:54 c13:32
> -rw-r--r--. 1 root root 225 Aug 27 09:54 c13:33
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c13:63
> -rw-r--r--. 1 root root 298 Aug 27 09:54 c13:64
> -rw-r--r--. 1 root root 177 Aug 27 09:54 c13:65
> -rw-r--r--. 1 root root 180 Aug 27 09:54 c13:66
> -rw-r--r--. 1 root root 177 Aug 27 09:54 c13:67
> -rw-r--r--. 1 root root 180 Aug 27 09:54 c13:68
> -rw-r--r--. 1 root root 179 Aug 27 09:54 c13:69
> -rw-r--r--. 1 root root 862 Aug 27 09:54 c13:70
> -rw-r--r--. 1 root root 422 Aug 27 09:54 c13:71
> -rw-r--r--. 1 root root 282 Aug 27 09:54 c13:72
> -rw-r--r--. 1 root root 1026 Aug 27 09:54 c189:0
> -rw-r--r--. 1 root root 1026 Aug 27 09:54 c189:128
> -rw-r--r--. 1 root root 1026 Aug 27 09:54 c189:256
> -rw-r--r--. 1 root root 1026 Aug 27 09:54 c189:384
> -rw-r--r--. 1 root root 1026 Aug 27 09:54 c189:512
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:11
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:3
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:5
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:7
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:8
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:9
> -rw-r--r--. 1 root root 212 Aug 27 09:54 c226:0
> -rw-r--r--. 1 root root 111 Aug 27 09:54 c226:128
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c237:0
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c238:0
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c238:1
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c238:2
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c240:0
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c244:0
> -rw-r--r--. 1 root root 278 Aug 27 09:54 c245:0
> -rw-r--r--. 1 root root 28 Aug 27 09:54 c250:0
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c251:0
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c253:65536
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c254:0
> -rw-r--r--. 1 root root 127 Aug 27 09:54 c29:0
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:0
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:1
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:10
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:11
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:12
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:13
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:14
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:15
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:16
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:17
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:18
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:19
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:2
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:20
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:21
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:22
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:23
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:24
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:25
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:26
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:27
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:28
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:29
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:3
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:30
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:31
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:32
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:33
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:34
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:35
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:36
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:37
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:38
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:39
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:4
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:40
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:41
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:42
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:43
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:44
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:45
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:46
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:47
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:48
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:49
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:5
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:50
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:51
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:52
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:53
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:54
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:55
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:56
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:57
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:58
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:59
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:6
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:60
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:61
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:62
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:63
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:64
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:65
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:66
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:67
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:68
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:69
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:7
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:70
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:71
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:72
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:73
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:74
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:75
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:76
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:77
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:78
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:79
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:8
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:80
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:81
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:82
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:83
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:84
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:85
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:86
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:87
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:88
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:89
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:9
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:90
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:91
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:92
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:93
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:94
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:95
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c5:0
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c5:1
> -rw-r--r--. 1 root root 35 Aug 27 09:54 c5:2
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:0
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:1
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:10
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:11
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:12
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:128
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:129
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:130
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:131
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:132
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:133
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:134
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:135
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:136
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:137
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:138
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:139
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:140
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:2
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:3
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:4
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:5
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:6
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:64
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:65
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:66
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:67
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:68
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:69
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:7
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:70
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:71
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:72
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:73
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:74
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:75
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:76
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:8
> -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:9
> -rw-r--r--. 1 root root 52 Aug 27 09:54 n1
> -rw-r--r--. 1 root root 648 Aug 27 09:54 n2
>
> To what I read, having it in the db either populated
> by the file under /run/udev/data, or populated from sysfs
> should be enough, but for some reason, it seems systemd
> and libudev expects the file under this folder.
>
> Thanks!
>
> José.
Re-adding the mailing lists.
José.
^ permalink raw reply
* Re: [PATCH v4 03/38] dt-bindings: mfd: qcom-pm8xxx: allow using interrupts-extended
From: Krzysztof Kozlowski @ 2023-08-27 18:05 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: devicetree, Lee Jones, Rob Herring, Krzysztof Kozlowski,
Andy Gross, Bjorn Andersson, Konrad Dybcio, linux-arm-msm,
Jonathan Cameron, Lars-Peter Clausen, linux-iio, Dmitry Torokhov,
linux-input, Pavel Machek, linux-leds
In-Reply-To: <CAA8EJpoWEABv6RrZn9FE+5N79Kz=24BhmpdnGbnO+vzX3A8v_Q@mail.gmail.com>
On 27/08/2023 14:57, Dmitry Baryshkov wrote:
>>>>>>
>>>>>> The entire patch is not needed. At least should not be needed. What
>>>>>> problem are you trying to solve here?
>>>>>
>>>>> The main problem is the next chunk, which (currently) explicitly
>>>>> requires `interrupts' property. My goal is to allow
>>>>> `interrupts-extended' in addition to `interrupts'.
>>>>
>>>> They are allowed. Why do you think they aren't? That's why I don't
>>>> understand what real problem is here.
>>>
>>> qcom-pm8xxx.yaml lists `interrupts' property under the `required'
>>> clause. So I can not simply replace it with `interrupts-extended'
>>
>> Since when? So again: The entire patch is not needed.
>
> Hmm, interesting. I'm pretty sure that I saw the issue, but now I can
> no longer reproduce it. Maybe I misinterpreted some other warning
> which I saw while this was WIP.
> I see that it is handled by the `fixup_interrupts` in dtschema itself.
If interrupts were brought by some other schema and that one did not
evaluate, then you could see errors about interrupt-extended. But that's
not the case here.
Best regards,
Krzysztof
^ permalink raw reply
* Re: [PATCH 0/3] HID: nvidia-shield: Fix the error handling path of shield_probe()
From: Rahul Rameshbabu @ 2023-08-27 19:41 UTC (permalink / raw)
To: Christophe JAILLET
Cc: jikos, benjamin.tissoires, linux-input, linux-kernel,
kernel-janitors
In-Reply-To: <cover.1693070958.git.christophe.jaillet@wanadoo.fr>
On Sat, 26 Aug, 2023 19:42:16 +0200 Christophe JAILLET <christophe.jaillet@wanadoo.fr> wrote:
> This serie fixes some missing clean-up function calls in the error handling of
> the probe.
>
> Patch 1 and 2 fix some similar issues introduced in 2 different commits (hence 2
> patches)
>
> Patch 3 is a proposal to be more future proof.
>
I really appreciate the contribution.
>
> *Note*: I'm not 100% sure that the order of the functions is the best one in
> thunderstrike_destroy(), but it is the way it was.
>
> My personal preference would be to undo things in reverse order they are
> allocated, such as:
> led_classdev_unregister(&ts->led_dev);
> power_supply_unregister(ts->base.battery_dev.psy);
> if (ts->haptics_dev)
> input_unregister_device(ts->haptics_dev);
> ida_free(&thunderstrike_ida, ts->id);
> This order was explicitly chnaged by 3ab196f88237, so, as I can't test the
> changes on a real harware, I've left it as-is.
I agree with this proposal. Let's clean this up in the patch that
implements thunderstrike_destroy. The order change in 3ab196f88237 is
more a matter of sloppiness rather than due to handling some functional
side effect that requires the order change.
>
> Christophe JAILLET (3):
> HID: nvidia-shield: Fix a missing led_classdev_unregister() in the
> probe error handling path
> HID: nvidia-shield: Fix some missing function calls() in the probe
> error handling path
> HID: nvidia-shield: Introduce thunderstrike_destroy()
>
> drivers/hid/hid-nvidia-shield.c | 23 ++++++++++++++++-------
> 1 file changed, 16 insertions(+), 7 deletions(-)
--
Thanks,
Rahul Rameshbabu
^ permalink raw reply
* Re: [PATCH 3/3] HID: nvidia-shield: Introduce thunderstrike_destroy()
From: Rahul Rameshbabu @ 2023-08-27 19:41 UTC (permalink / raw)
To: Christophe JAILLET
Cc: kernel test robot, jikos, benjamin.tissoires, oe-kbuild-all,
linux-input, linux-kernel, kernel-janitors
In-Reply-To: <b35c9f99-bdbc-6d7c-e7bd-0971fe72ccf2@wanadoo.fr>
On Sat, 26 Aug, 2023 23:13:01 +0200 Christophe JAILLET <christophe.jaillet@wanadoo.fr> wrote:
> Le 26/08/2023 à 22:00, kernel test robot a écrit :
>> Hi Christophe,
>> kernel test robot noticed the following build warnings:
>> [auto build test WARNING on linux-next/master]
>> [cannot apply to linus/master v6.5-rc7]
>> [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#_base_tree_information]
>> url:
>> https://github.com/intel-lab-lkp/linux/commits/Christophe-JAILLET/HID-nvidia-shield-Fix-a-missing-led_classdev_unregister-in-the-probe-error-handling-path/20230827-014602
>> base: linux-next/master
>> patch link: https://lore.kernel.org/r/4c9a8c7f6b4eb879dd7ef4d44bb6a80b3f126d25.1693070958.git.christophe.jaillet%40wanadoo.fr
>> patch subject: [PATCH 3/3] HID: nvidia-shield: Introduce thunderstrike_destroy()
>> config: parisc-allyesconfig (https://download.01.org/0day-ci/archive/20230827/202308270307.EDe7t62T-lkp@intel.com/config)
>> compiler: hppa-linux-gcc (GCC) 13.2.0
>
> On x86_64, gcc 12.3.0 does not complain. :(
The key to getting gcc to spew the warning is passing W=1 for the make
variable to get the compiler to invoke the unused warning.
[nix-shell:~/Documents/linux]$ make help | grep -i W=
make W=n [targets] Enable extra build checks, n=1,2,3 where
Multiple levels can be combined with W=12 or W=123
linux on cjaillet/shield-fixup [?] via ❄️ impure (linux-6.1.31)
❯ make -C $dev/lib/modules/*/build M=$(pwd)/drivers/hid W=1 modules
CC [M] /home/binary-eater/Documents/linux/drivers/hid/hid-nvidia-shield.o
/home/binary-eater/Documents/linux/drivers/hid/hid-nvidia-shield.c: In function ‘shield_probe’:
/home/binary-eater/Documents/linux/drivers/hid/hid-nvidia-shield.c:1046:31: warning: variable ‘ts’ set but not used [-Wunused-but-set-variable]
1046 | struct thunderstrike *ts;
| ^~
MODPOST /home/binary-eater/Documents/linux/drivers/hid/Module.symvers
CC [M] /home/binary-eater/Documents/linux/drivers/hid/hid-nvidia-shield.mod.o
LD [M] /home/binary-eater/Documents/linux/drivers/hid/hid-nvidia-shield.ko
BTF [M] /home/binary-eater/Documents/linux/drivers/hid/hid-nvidia-shield.ko
linux on cjaillet/shield-fixup [?] via ❄️ impure (linux-6.1.31) took 4s
❯ gcc --version
gcc (GCC) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Hope this is helpful.
-- Rahul Rameshbabu
>
> Let see first if there is some comment on the serie, then I'll send a v2 to fix
> the warning.
>
> CJ
>
>> reproduce: (https://download.01.org/0day-ci/archive/20230827/202308270307.EDe7t62T-lkp@intel.com/reproduce)
>> If you fix the issue in a separate patch/commit (i.e. not just a new version
>> of
>> the same patch/commit), kindly add following tags
>> | Reported-by: kernel test robot <lkp@intel.com>
>> | Closes: https://lore.kernel.org/oe-kbuild-all/202308270307.EDe7t62T-lkp@intel.com/
>> All warnings (new ones prefixed by >>):
>> drivers/hid/hid-nvidia-shield.c: In function 'shield_probe':
>>>> drivers/hid/hid-nvidia-shield.c:1046:31: warning: variable 'ts' set but not used [-Wunused-but-set-variable]
>> 1046 | struct thunderstrike *ts;
>> | ^~
>> vim +/ts +1046 drivers/hid/hid-nvidia-shield.c
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1042
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1043 static int shield_probe(struct hid_device *hdev, const struct hid_device_id *id)
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1044 {
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1045 struct shield_device *shield_dev = NULL;
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 @1046 struct thunderstrike *ts;
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1047 int ret;
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1048
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1049 ret = hid_parse(hdev);
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1050 if (ret) {
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1051 hid_err(hdev, "Parse failed\n");
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1052 return ret;
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1053 }
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1054
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1055 switch (id->product) {
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1056 case USB_DEVICE_ID_NVIDIA_THUNDERSTRIKE_CONTROLLER:
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1057 shield_dev = thunderstrike_create(hdev);
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1058 break;
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1059 }
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1060
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1061 if (unlikely(!shield_dev)) {
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1062 hid_err(hdev, "Failed to identify SHIELD device\n");
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1063 return -ENODEV;
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1064 }
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1065 if (IS_ERR(shield_dev)) {
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1066 hid_err(hdev, "Failed to create SHIELD device\n");
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1067 return PTR_ERR(shield_dev);
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1068 }
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1069
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1070 ts = container_of(shield_dev, struct thunderstrike, base);
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1071
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1072 ret = hid_hw_start(hdev, HID_CONNECT_HIDINPUT);
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1073 if (ret) {
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1074 hid_err(hdev, "Failed to start HID device\n");
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1075 goto err_haptics;
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1076 }
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1077
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1078 ret = hid_hw_open(hdev);
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1079 if (ret) {
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1080 hid_err(hdev, "Failed to open HID device\n");
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1081 goto err_stop;
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1082 }
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1083
>> 3ab196f882377ed Rahul Rameshbabu 2023-08-07 1084 thunderstrike_device_init_info(shield_dev);
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1085
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1086 return ret;
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1087
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1088 err_stop:
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1089 hid_hw_stop(hdev);
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1090 err_haptics:
>> 2cc4637842495c6 Christophe JAILLET 2023-08-26 1091 thunderstrike_destroy(hdev);
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1092 return ret;
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1093 }
>> 09308562d4afb1a Rahul Rameshbabu 2023-06-08 1094
>>
^ permalink raw reply
* Re: [PATCH 1/3] HID: nvidia-shield: Fix a missing led_classdev_unregister() in the probe error handling path
From: Rahul Rameshbabu @ 2023-08-27 19:41 UTC (permalink / raw)
To: Christophe JAILLET
Cc: jikos, benjamin.tissoires, linux-input, linux-kernel,
kernel-janitors
In-Reply-To: <bf19356b4ccd6446245570bf526d6940cac25c09.1693070958.git.christophe.jaillet@wanadoo.fr>
On Sat, 26 Aug, 2023 19:42:17 +0200 Christophe JAILLET <christophe.jaillet@wanadoo.fr> wrote:
> The commit in Fixes updated the error handling path of
> thunderstrike_create() and the remove function but not the error handling
> path of shield_probe(), should an error occur after a successful
> thunderstrike_create() call.
>
> Add the missing call.
You are right that the led instance needs to be cleaned up here.
However, there is another bug that is introduced by this patch since
this is in the error path where hid_hw_start failed. The problem is that
led_classdev_unregister makes sure to set the led state to off in the
cleanup actions. The problem is that it is unsafe to do so in this
context since we cannot send hid_hw_raw_request at this point.
I discuss this in the following patch submission.
https://lore.kernel.org/linux-input/20230807163620.16855-1-rrameshbabu@nvidia.com/
I think we should take the alternative approach I mentioned in the
mentioned patch where we set the LED_RETAIN_AT_SHUTDOWN led_classdev
flag. Then in the context of shield_remove, we can explicitly call
led_set_brightness(&ts->led_dev, LED_OFF).
You will want to base this suggested change on top of the for-6.6/nvidia
branch in the hid subsystem tree.
https://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git/log/?h=for-6.6/nvidia
>
> Fixes: f88af60e74a5 ("HID: nvidia-shield: Support LED functionality for Thunderstrike")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
> drivers/hid/hid-nvidia-shield.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/hid/hid-nvidia-shield.c b/drivers/hid/hid-nvidia-shield.c
> index 9a3576dbf421..66a7478e2c9d 100644
> --- a/drivers/hid/hid-nvidia-shield.c
> +++ b/drivers/hid/hid-nvidia-shield.c
> @@ -1076,6 +1076,7 @@ static int shield_probe(struct hid_device *hdev, const struct hid_device_id *id)
> err_haptics:
> if (ts->haptics_dev)
> input_unregister_device(ts->haptics_dev);
> + led_classdev_unregister(&ts->led_dev);
> return ret;
> }
--
Thanks,
Rahul Rameshbabu
^ permalink raw reply
* Re: [PATCH 2/3] HID: nvidia-shield: Fix some missing function calls() in the probe error handling path
From: Rahul Rameshbabu @ 2023-08-27 19:42 UTC (permalink / raw)
To: Christophe JAILLET
Cc: jikos, benjamin.tissoires, linux-input, linux-kernel,
kernel-janitors
In-Reply-To: <443aef6a6d90011e8fffcd43e1a88cd9e98594ca.1693070958.git.christophe.jaillet@wanadoo.fr>
On Sat, 26 Aug, 2023 19:42:18 +0200 Christophe JAILLET <christophe.jaillet@wanadoo.fr> wrote:
> The commit in Fixes updated the error handling path of
> thunderstrike_create() and the remove function but not the error handling
> path of shield_probe(), should an error occur after a successful
> thunderstrike_create() call.
>
> Add the missing calls.
>
> Fixes: 3ab196f88237 ("HID: nvidia-shield: Add battery support for Thunderstrike")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
> drivers/hid/hid-nvidia-shield.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/hid/hid-nvidia-shield.c b/drivers/hid/hid-nvidia-shield.c
> index 66a7478e2c9d..849b3f8409a0 100644
> --- a/drivers/hid/hid-nvidia-shield.c
> +++ b/drivers/hid/hid-nvidia-shield.c
> @@ -1074,9 +1074,11 @@ static int shield_probe(struct hid_device *hdev, const struct hid_device_id *id)
> err_stop:
> hid_hw_stop(hdev);
> err_haptics:
Functionally, the change looks good to me. Can we update this label from
err_haptics to err_ts_create? Because of the label name, I accidentally
forgot to add other cleanup in this context originally... (Rust borrow
checker please rescue me)
> + power_supply_unregister(ts->base.battery_dev.psy);
> if (ts->haptics_dev)
> input_unregister_device(ts->haptics_dev);
> led_classdev_unregister(&ts->led_dev);
> + ida_free(&thunderstrike_ida, ts->id);
> return ret;
> }
--
Thanks,
Rahul Rameshbabu
^ permalink raw reply
* [PATCH] HID: logitech-hidpp: Add Bluetooth ID for the Logitech M720 Triathlon mouse
From: Hans de Goede @ 2023-08-27 22:24 UTC (permalink / raw)
To: Filipe Laíns, Bastien Nocera, Jiri Kosina,
Benjamin Tissoires
Cc: Hans de Goede, linux-input
Using hidpp for the M720 adds battery info reporting and hires
scrolling support.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
drivers/hid/hid-logitech-hidpp.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
index 129b01be488d..3786fcc93da0 100644
--- a/drivers/hid/hid-logitech-hidpp.c
+++ b/drivers/hid/hid-logitech-hidpp.c
@@ -4640,6 +4640,8 @@ static const struct hid_device_id hidpp_devices[] = {
HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb008) },
{ /* MX Master mouse over Bluetooth */
HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb012) },
+ { /* M720 Triathlon mouse over Bluetooth */
+ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb015) },
{ /* MX Ergo trackball over Bluetooth */
HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb01d) },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb01e) },
--
2.41.0
^ permalink raw reply related
* [RESEND PATCH v6 2/3] dt-bindings: input: qcom,pm8xxx-vib: add new SPMI vibrator module
From: Fenglin Wu @ 2023-08-28 5:32 UTC (permalink / raw)
To: linux-arm-msm, linux-kernel, krzysztof.kozlowski+dt, robh+dt,
agross, andersson, dmitry.baryshkov, Konrad Dybcio,
Dmitry Torokhov, linux-input, devicetree
Cc: quic_collinsd, quic_subbaram, quic_fenglinw, quic_kamalw, jestar,
Krzysztof Kozlowski
In-Reply-To: <20230828053205.218950-1-quic_fenglinw@quicinc.com>
Add compatible strings to support vibrator module inside PMI632,
PMI7250B, PM7325B, PM7550BA.
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Fenglin Wu <quic_fenglinw@quicinc.com>
---
.../bindings/input/qcom,pm8xxx-vib.yaml | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/input/qcom,pm8xxx-vib.yaml b/Documentation/devicetree/bindings/input/qcom,pm8xxx-vib.yaml
index c8832cd0d7da..2025d6a5423e 100644
--- a/Documentation/devicetree/bindings/input/qcom,pm8xxx-vib.yaml
+++ b/Documentation/devicetree/bindings/input/qcom,pm8xxx-vib.yaml
@@ -11,10 +11,18 @@ maintainers:
properties:
compatible:
- enum:
- - qcom,pm8058-vib
- - qcom,pm8916-vib
- - qcom,pm8921-vib
+ oneOf:
+ - enum:
+ - qcom,pm8058-vib
+ - qcom,pm8916-vib
+ - qcom,pm8921-vib
+ - qcom,pmi632-vib
+ - items:
+ - enum:
+ - qcom,pm7250b-vib
+ - qcom,pm7325b-vib
+ - qcom,pm7550ba-vib
+ - const: qcom,pmi632-vib
reg:
maxItems: 1
--
2.25.1
^ permalink raw reply related
* [RESEND PATCH v6 1/3] input: pm8xxx-vib: refactor to easily support new SPMI vibrator
From: Fenglin Wu @ 2023-08-28 5:32 UTC (permalink / raw)
To: linux-arm-msm, linux-kernel, krzysztof.kozlowski+dt, robh+dt,
agross, andersson, dmitry.baryshkov, Konrad Dybcio,
Dmitry Torokhov, linux-input
Cc: quic_collinsd, quic_subbaram, quic_fenglinw, quic_kamalw, jestar
In-Reply-To: <20230828053205.218950-1-quic_fenglinw@quicinc.com>
Currently, all vibrator control register addresses are hard coded,
including the base address and the offset, it's not flexible to support
new SPMI vibrator module which is usually included in different PMICs
with different base address. Refactor this by defining register offset
with HW type combination, and register base address which is defined
in 'reg' property is added for SPMI vibrators.
Signed-off-by: Fenglin Wu <quic_fenglinw@quicinc.com>
---
drivers/input/misc/pm8xxx-vibrator.c | 122 ++++++++++++++++-----------
1 file changed, 73 insertions(+), 49 deletions(-)
diff --git a/drivers/input/misc/pm8xxx-vibrator.c b/drivers/input/misc/pm8xxx-vibrator.c
index 04cb87efd799..d6b468324c77 100644
--- a/drivers/input/misc/pm8xxx-vibrator.c
+++ b/drivers/input/misc/pm8xxx-vibrator.c
@@ -12,36 +12,44 @@
#include <linux/regmap.h>
#include <linux/slab.h>
+#define SSBL_VIB_DRV_REG 0x4A
+#define SSBI_VIB_DRV_EN_MANUAL_MASK GENMASK(7, 2)
+#define SSBI_VIB_DRV_LEVEL_MASK GENMASK(7, 3)
+#define SSBI_VIB_DRV_SHIFT 3
+
+#define SPMI_VIB_DRV_REG 0x41
+#define SPMI_VIB_DRV_LEVEL_MASK GENMASK(4, 0)
+#define SPMI_VIB_DRV_SHIFT 0
+
+#define SPMI_VIB_EN_REG 0x46
+#define SPMI_VIB_EN_BIT BIT(7)
+
#define VIB_MAX_LEVEL_mV (3100)
#define VIB_MIN_LEVEL_mV (1200)
#define VIB_MAX_LEVELS (VIB_MAX_LEVEL_mV - VIB_MIN_LEVEL_mV)
#define MAX_FF_SPEED 0xff
-struct pm8xxx_regs {
- unsigned int enable_addr;
- unsigned int enable_mask;
+enum vib_hw_type {
+ SSBI_VIB,
+ SPMI_VIB,
+};
- unsigned int drv_addr;
- unsigned int drv_mask;
- unsigned int drv_shift;
- unsigned int drv_en_manual_mask;
+struct pm8xxx_vib_data {
+ enum vib_hw_type hw_type;
+ unsigned int enable_addr;
+ unsigned int drv_addr;
};
-static const struct pm8xxx_regs pm8058_regs = {
- .drv_addr = 0x4A,
- .drv_mask = 0xf8,
- .drv_shift = 3,
- .drv_en_manual_mask = 0xfc,
+static const struct pm8xxx_vib_data ssbi_vib_data = {
+ .hw_type = SSBI_VIB,
+ .drv_addr = SSBL_VIB_DRV_REG,
};
-static struct pm8xxx_regs pm8916_regs = {
- .enable_addr = 0xc046,
- .enable_mask = BIT(7),
- .drv_addr = 0xc041,
- .drv_mask = 0x1F,
- .drv_shift = 0,
- .drv_en_manual_mask = 0,
+static const struct pm8xxx_vib_data spmi_vib_data = {
+ .hw_type = SPMI_VIB,
+ .enable_addr = SPMI_VIB_EN_REG,
+ .drv_addr = SPMI_VIB_DRV_REG,
};
/**
@@ -49,7 +57,8 @@ static struct pm8xxx_regs pm8916_regs = {
* @vib_input_dev: input device supporting force feedback
* @work: work structure to set the vibration parameters
* @regmap: regmap for register read/write
- * @regs: registers' info
+ * @data: vibrator HW info
+ * @reg_base: the register base of the module
* @speed: speed of vibration set from userland
* @active: state of vibrator
* @level: level of vibration to set in the chip
@@ -59,7 +68,8 @@ struct pm8xxx_vib {
struct input_dev *vib_input_dev;
struct work_struct work;
struct regmap *regmap;
- const struct pm8xxx_regs *regs;
+ const struct pm8xxx_vib_data *data;
+ unsigned int reg_base;
int speed;
int level;
bool active;
@@ -75,24 +85,31 @@ static int pm8xxx_vib_set(struct pm8xxx_vib *vib, bool on)
{
int rc;
unsigned int val = vib->reg_vib_drv;
- const struct pm8xxx_regs *regs = vib->regs;
+ u32 mask = SPMI_VIB_DRV_LEVEL_MASK;
+ u32 shift = SPMI_VIB_DRV_SHIFT;
+
+ if (vib->data->hw_type == SSBI_VIB) {
+ mask = SSBI_VIB_DRV_LEVEL_MASK;
+ shift = SSBI_VIB_DRV_SHIFT;
+ }
if (on)
- val |= (vib->level << regs->drv_shift) & regs->drv_mask;
+ val |= (vib->level << shift) & mask;
else
- val &= ~regs->drv_mask;
+ val &= ~mask;
- rc = regmap_write(vib->regmap, regs->drv_addr, val);
+ rc = regmap_update_bits(vib->regmap, vib->reg_base + vib->data->drv_addr, mask, val);
if (rc < 0)
return rc;
vib->reg_vib_drv = val;
- if (regs->enable_mask)
- rc = regmap_update_bits(vib->regmap, regs->enable_addr,
- regs->enable_mask, on ? ~0 : 0);
+ if (vib->data->hw_type == SSBI_VIB)
+ return 0;
- return rc;
+ mask = SPMI_VIB_EN_BIT;
+ val = on ? SPMI_VIB_EN_BIT : 0;
+ return regmap_update_bits(vib->regmap, vib->reg_base + vib->data->enable_addr, mask, val);
}
/**
@@ -102,13 +119,6 @@ static int pm8xxx_vib_set(struct pm8xxx_vib *vib, bool on)
static void pm8xxx_work_handler(struct work_struct *work)
{
struct pm8xxx_vib *vib = container_of(work, struct pm8xxx_vib, work);
- const struct pm8xxx_regs *regs = vib->regs;
- int rc;
- unsigned int val;
-
- rc = regmap_read(vib->regmap, regs->drv_addr, &val);
- if (rc < 0)
- return;
/*
* pmic vibrator supports voltage ranges from 1.2 to 3.1V, so
@@ -168,9 +178,9 @@ static int pm8xxx_vib_probe(struct platform_device *pdev)
{
struct pm8xxx_vib *vib;
struct input_dev *input_dev;
+ const struct pm8xxx_vib_data *data;
int error;
- unsigned int val;
- const struct pm8xxx_regs *regs;
+ unsigned int val, reg_base;
vib = devm_kzalloc(&pdev->dev, sizeof(*vib), GFP_KERNEL);
if (!vib)
@@ -187,19 +197,33 @@ static int pm8xxx_vib_probe(struct platform_device *pdev)
INIT_WORK(&vib->work, pm8xxx_work_handler);
vib->vib_input_dev = input_dev;
- regs = of_device_get_match_data(&pdev->dev);
+ data = of_device_get_match_data(&pdev->dev);
+ if (!data)
+ return -EINVAL;
- /* operate in manual mode */
- error = regmap_read(vib->regmap, regs->drv_addr, &val);
- if (error < 0)
- return error;
+ if (data->hw_type != SSBI_VIB) {
+ error = fwnode_property_read_u32(pdev->dev.fwnode, "reg", ®_base);
+ if (error < 0) {
+ dev_err(&pdev->dev, "Failed to read reg address, rc=%d\n", error);
+ return error;
+ }
+
+ vib->reg_base += reg_base;
+ }
- val &= regs->drv_en_manual_mask;
- error = regmap_write(vib->regmap, regs->drv_addr, val);
+ error = regmap_read(vib->regmap, vib->reg_base + data->drv_addr, &val);
if (error < 0)
return error;
- vib->regs = regs;
+ /* operate in manual mode */
+ if (data->hw_type == SSBI_VIB) {
+ val &= SSBI_VIB_DRV_EN_MANUAL_MASK;
+ error = regmap_write(vib->regmap, vib->reg_base + data->drv_addr, val);
+ if (error < 0)
+ return error;
+ }
+
+ vib->data = data;
vib->reg_vib_drv = val;
input_dev->name = "pm8xxx_vib_ffmemless";
@@ -239,9 +263,9 @@ static int pm8xxx_vib_suspend(struct device *dev)
static DEFINE_SIMPLE_DEV_PM_OPS(pm8xxx_vib_pm_ops, pm8xxx_vib_suspend, NULL);
static const struct of_device_id pm8xxx_vib_id_table[] = {
- { .compatible = "qcom,pm8058-vib", .data = &pm8058_regs },
- { .compatible = "qcom,pm8921-vib", .data = &pm8058_regs },
- { .compatible = "qcom,pm8916-vib", .data = &pm8916_regs },
+ { .compatible = "qcom,pm8058-vib", .data = &ssbi_vib_data },
+ { .compatible = "qcom,pm8921-vib", .data = &ssbi_vib_data },
+ { .compatible = "qcom,pm8916-vib", .data = &spmi_vib_data },
{ }
};
MODULE_DEVICE_TABLE(of, pm8xxx_vib_id_table);
--
2.25.1
^ permalink raw reply related
* [RESEND PATCH v6 3/3] input: pm8xxx-vibrator: add new SPMI vibrator support
From: Fenglin Wu @ 2023-08-28 5:32 UTC (permalink / raw)
To: linux-arm-msm, linux-kernel, krzysztof.kozlowski+dt, robh+dt,
agross, andersson, dmitry.baryshkov, Konrad Dybcio,
Dmitry Torokhov, linux-input
Cc: quic_collinsd, quic_subbaram, quic_fenglinw, quic_kamalw, jestar,
Luca Weiss
In-Reply-To: <20230828053205.218950-1-quic_fenglinw@quicinc.com>
Add new SPMI vibrator module which is very similar to the SPMI vibrator
module inside PM8916 but just has a finer drive voltage step (1mV vs
100mV) hence its drive level control is expanded to across 2 registers.
The vibrator module can be found in Qualcomm PMIC PMI632, then following
PM7250B, PM7325B, PM7550BA PMICs.
Signed-off-by: Fenglin Wu <quic_fenglinw@quicinc.com>
Tested-by: Luca Weiss <luca.weiss@fairphone.com> # sdm632-fairphone-fp3 (pmi632)
---
drivers/input/misc/pm8xxx-vibrator.c | 55 +++++++++++++++++++++++++---
1 file changed, 50 insertions(+), 5 deletions(-)
diff --git a/drivers/input/misc/pm8xxx-vibrator.c b/drivers/input/misc/pm8xxx-vibrator.c
index d6b468324c77..990e8a9ac018 100644
--- a/drivers/input/misc/pm8xxx-vibrator.c
+++ b/drivers/input/misc/pm8xxx-vibrator.c
@@ -21,6 +21,13 @@
#define SPMI_VIB_DRV_LEVEL_MASK GENMASK(4, 0)
#define SPMI_VIB_DRV_SHIFT 0
+#define SPMI_VIB_GEN2_DRV_REG 0x40
+#define SPMI_VIB_GEN2_DRV_MASK GENMASK(7, 0)
+#define SPMI_VIB_GEN2_DRV_SHIFT 0
+#define SPMI_VIB_GEN2_DRV2_REG 0x41
+#define SPMI_VIB_GEN2_DRV2_MASK GENMASK(3, 0)
+#define SPMI_VIB_GEN2_DRV2_SHIFT 8
+
#define SPMI_VIB_EN_REG 0x46
#define SPMI_VIB_EN_BIT BIT(7)
@@ -33,12 +40,14 @@
enum vib_hw_type {
SSBI_VIB,
SPMI_VIB,
+ SPMI_VIB_GEN2
};
struct pm8xxx_vib_data {
enum vib_hw_type hw_type;
unsigned int enable_addr;
unsigned int drv_addr;
+ unsigned int drv2_addr;
};
static const struct pm8xxx_vib_data ssbi_vib_data = {
@@ -52,6 +61,13 @@ static const struct pm8xxx_vib_data spmi_vib_data = {
.drv_addr = SPMI_VIB_DRV_REG,
};
+static const struct pm8xxx_vib_data spmi_vib_gen2_data = {
+ .hw_type = SPMI_VIB_GEN2,
+ .enable_addr = SPMI_VIB_EN_REG,
+ .drv_addr = SPMI_VIB_GEN2_DRV_REG,
+ .drv2_addr = SPMI_VIB_GEN2_DRV2_REG,
+};
+
/**
* struct pm8xxx_vib - structure to hold vibrator data
* @vib_input_dev: input device supporting force feedback
@@ -85,12 +101,24 @@ static int pm8xxx_vib_set(struct pm8xxx_vib *vib, bool on)
{
int rc;
unsigned int val = vib->reg_vib_drv;
- u32 mask = SPMI_VIB_DRV_LEVEL_MASK;
- u32 shift = SPMI_VIB_DRV_SHIFT;
+ u32 mask, shift;
- if (vib->data->hw_type == SSBI_VIB) {
+
+ switch (vib->data->hw_type) {
+ case SSBI_VIB:
mask = SSBI_VIB_DRV_LEVEL_MASK;
shift = SSBI_VIB_DRV_SHIFT;
+ break;
+ case SPMI_VIB:
+ mask = SPMI_VIB_DRV_LEVEL_MASK;
+ shift = SPMI_VIB_DRV_SHIFT;
+ break;
+ case SPMI_VIB_GEN2:
+ mask = SPMI_VIB_GEN2_DRV_MASK;
+ shift = SPMI_VIB_GEN2_DRV_SHIFT;
+ break;
+ default:
+ return -EINVAL;
}
if (on)
@@ -104,6 +132,19 @@ static int pm8xxx_vib_set(struct pm8xxx_vib *vib, bool on)
vib->reg_vib_drv = val;
+ if (vib->data->hw_type == SPMI_VIB_GEN2) {
+ mask = SPMI_VIB_GEN2_DRV2_MASK;
+ shift = SPMI_VIB_GEN2_DRV2_SHIFT;
+ if (on)
+ val = (vib->level >> shift) & mask;
+ else
+ val = 0;
+ rc = regmap_update_bits(vib->regmap,
+ vib->reg_base + vib->data->drv2_addr, mask, val);
+ if (rc < 0)
+ return rc;
+ }
+
if (vib->data->hw_type == SSBI_VIB)
return 0;
@@ -128,10 +169,13 @@ static void pm8xxx_work_handler(struct work_struct *work)
vib->active = true;
vib->level = ((VIB_MAX_LEVELS * vib->speed) / MAX_FF_SPEED) +
VIB_MIN_LEVEL_mV;
- vib->level /= 100;
+ if (vib->data->hw_type != SPMI_VIB_GEN2)
+ vib->level /= 100;
} else {
vib->active = false;
- vib->level = VIB_MIN_LEVEL_mV / 100;
+ vib->level = VIB_MIN_LEVEL_mV;
+ if (vib->data->hw_type != SPMI_VIB_GEN2)
+ vib->level /= 100;
}
pm8xxx_vib_set(vib, vib->active);
@@ -266,6 +310,7 @@ static const struct of_device_id pm8xxx_vib_id_table[] = {
{ .compatible = "qcom,pm8058-vib", .data = &ssbi_vib_data },
{ .compatible = "qcom,pm8921-vib", .data = &ssbi_vib_data },
{ .compatible = "qcom,pm8916-vib", .data = &spmi_vib_data },
+ { .compatible = "qcom,pmi632-vib", .data = &spmi_vib_gen2_data },
{ }
};
MODULE_DEVICE_TABLE(of, pm8xxx_vib_id_table);
--
2.25.1
^ permalink raw reply related
* Re: [PATCH v1 06/12] HID: cp2112: Remove dead code
From: Andy Shevchenko @ 2023-08-28 8:52 UTC (permalink / raw)
To: Christophe JAILLET
Cc: Andy Shevchenko, linux-input, linux-kernel, Jiri Kosina,
Benjamin Tissoires, Andy Shevchenko
In-Reply-To: <50683aac-b186-c6ae-de1f-5b8e4806913c@wanadoo.fr>
On Sat, Aug 26, 2023 at 9:30 PM Christophe JAILLET
<christophe.jaillet@wanadoo.fr> wrote:
>
> Le 03/07/2023 à 20:52, Andy Shevchenko a écrit :
> > Remove cp2112_allocate_irq() and counterparts that seems to be
> > a dead code from day 1. In case somebody needs it, it can be
> > retrieved from Git index.
> >
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
>
> Hi,
>
> for the records, just in case it still makesense to keep this code:
>
> https://lore.kernel.org/all/CAO-hwJJfncQ3jgtS=HO0atbzrTNOT_rzU66oG2yRTWTSY-L8KA@mail.gmail.com/
It's in the Git index, so we can return it, but the rule of thumb is
that we do not add dead code to the kernel.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply
* Re: atkbd input regression
From: José Ramón Muñoz Pekkarinen @ 2023-08-28 8:53 UTC (permalink / raw)
To: linux-input; +Cc: dmitry.torokhov, gregkh, Linux Regressions
In-Reply-To: <CANWZPg+C4=U1khLJbvUb0nuDQq+ETULZdQyWDBhFhYN_3Wa=3g@mail.gmail.com>
On Sun, 27 Aug 2023 at 18:59, José Ramón Muñoz Pekkarinen
<koalinux@gmail.com> wrote:
> >
> > Excuse the long wait, I've been investigating with the kde community
> > and reading the code of libinput, systemd and the like, and I managed to
> > find a difference that I'm not quite sure it is relevant to narrow the issue.
> > While the keyboard is populated in the udev database as this:
> >
> > $ udevadm info -e
> > P: /devices/platform/i8042/serio0/input/input0
> > M: input0
> > R: 0
> > U: input
> > E: DEVPATH=/devices/platform/i8042/serio0/input/input0
> > E: SUBSYSTEM=input
> > E: PRODUCT=11/1/1/ab54
> > E: NAME="AT Translated Set 2 keyboard"
> > E: PHYS="isa0060/serio0/input0"
> > E: PROP=0
> > E: EV=120013
> > E: KEY=402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe
> > E: MSC=10
> > E: LED=7
> > E: MODALIAS=input:b0011v0001p0001eAB54-e0,1,4,11,14,k71,72,73,74,75,76,77,79,7A,7B,7C,7D,7E,7F,80,8C,8E,8F,9B,9C,9D,9E,9F,A3,A4,A5,A6,AC,AD,B7,B8,B9,D9,E2,ram4,l0,1,2,sfw
> >
> > There is no longer a corresponding entry under /run/udev/data,
> > the following is the output of the ls -la /run/udev/data on 6.4.12:
> >
> > total 116
> > -rw-r--r--. 1 root root 129 Aug 27 08:53 +backlight:amdgpu_bl1
> > -rw-r--r--. 1 root root 737 Aug 27 08:54 +input:input10
> > -rw-r--r--. 1 root root 715 Aug 27 08:54 +input:input11
> > -rw-r--r--. 1 root root 715 Aug 27 08:54 +input:input12
> > -rw-r--r--. 1 root root 776 Aug 27 08:54 +input:input13
> > -rw-r--r--. 1 root root 166 Aug 27 08:54 +leds:input10::capslock
> > -rw-r--r--. 1 root root 166 Aug 27 08:54 +leds:input10::numlock
> > -rw-r--r--. 1 root root 166 Aug 27 08:54 +leds:input10::scrolllock
> > -rw-r--r--. 1 root root 107 Aug 27 08:54 +usb:2-2.1:1.0
> > -rw-r--r--. 1 root root 107 Aug 27 08:54 +usb:2-2.1:1.1
> > -rw-r--r--. 1 root root 88 Aug 27 08:54 +usb:2-2.3:1.0
> > -rw-r--r--. 1 root root 171 Aug 27 08:54 +usb:2-2:1.0
> > -rw-r--r--. 1 root root 148 Aug 27 08:53 +usb:3-0:1.0
> > -rw-r--r--. 1 root root 56 Aug 27 09:07 +usb:4-2:1.0
> > -rw-r--r--. 1 root root 56 Aug 27 09:07 +usb:4-2:1.1
> > -rw-r--r--. 1 root root 56 Aug 27 09:07 +usb:4-2:1.2
> > -rw-r--r--. 1 root root 148 Aug 27 08:53 +usb:5-0:1.0
> > drwxr-xr-x. 2 root root 1360 Aug 27 09:07 .
> > drwxr-xr-x. 5 root root 100 Aug 27 09:07 ..
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c10:229
> > -rw-r--r--. 1 root root 36 Aug 27 08:54 c116:1
> > -rw-r--r--. 1 root root 36 Aug 27 08:54 c116:33
> > -rw-r--r--. 1 root root 815 Aug 27 08:54 c13:34
> > -rw-r--r--. 1 root root 856 Aug 27 08:54 c13:73
> > -rw-r--r--. 1 root root 831 Aug 27 08:54 c13:74
> > -rw-r--r--. 1 root root 831 Aug 27 08:54 c13:75
> > -rw-r--r--. 1 root root 881 Aug 27 08:54 c13:76
> > -rw-r--r--. 1 root root 663 Aug 27 08:54 c189:129
> > -rw-r--r--. 1 root root 681 Aug 27 08:54 c189:130
> > -rw-r--r--. 1 root root 721 Aug 27 08:54 c189:131
> > -rw-r--r--. 1 root root 783 Aug 27 09:07 c189:387
> > -rw-r--r--. 1 root root 0 Aug 27 08:54 c247:0
> > -rw-r--r--. 1 root root 0 Aug 27 08:54 c247:1
> > -rw-r--r--. 1 root root 0 Aug 27 08:54 c247:2
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:10
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:11
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:12
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:130
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:131
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:132
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:133
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:134
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:135
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:136
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:137
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:138
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:139
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:140
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:2
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:3
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:4
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:5
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:6
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:66
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:67
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:68
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:69
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:7
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:70
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:71
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:72
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:73
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:74
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:75
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:76
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:8
> > -rw-r--r--. 1 root root 0 Aug 27 08:53 c7:9
> > -rw-r--r--. 1 root root 991 Aug 27 09:07 n3
> >
> > And the same on the working 5.16 kernel:
> >
> > total 1156
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0003:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:01
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:02
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:03
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:04
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:05
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:06
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:07
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:08
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:09
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0a
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0b
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0c
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0d
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0e
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0007:0f
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:ACPI0010:00
> > -rw-r--r--. 1 root root 59 Aug 27 09:54 +acpi:AMDI0030:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LEN0071:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LEN0100:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LEN0130:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LEN0268:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LEN0411:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPOWER:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPOWER:01
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPOWER:02
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPOWER:03
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPOWER:04
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXPWRBN:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXSYBUS:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXSYBUS:01
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXSYSTM:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:LNXVIDEO:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0000:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0100:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0103:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0200:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0800:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0A08:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0B00:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C01:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:01
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:02
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:03
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:04
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:05
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:06
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:07
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:08
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:09
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:0a
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:0b
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C02:0c
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C04:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C09:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0A:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0C:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0D:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0E:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:01
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:02
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:03
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:04
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:05
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:06
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C0F:07
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C14:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C14:01
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C14:02
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:PNP0C14:03
> > -rw-r--r--. 1 root root 54 Aug 27 09:54 +acpi:SMB0001:00
> > -rw-r--r--. 1 root root 70 Aug 27 09:54 +acpi:STM0125:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +acpi:USBC000:00
> > -rw-r--r--. 1 root root 128 Aug 27 09:54 +backlight:amdgpu_bl0
> > -rw-r--r--. 1 root root 140 Aug 27 09:54 +dmi:id
> > -rw-r--r--. 1 root root 156 Aug 27 09:54 +drm:card0-DP-1
> > -rw-r--r--. 1 root root 156 Aug 27 09:54 +drm:card0-DP-2
> > -rw-r--r--. 1 root root 156 Aug 27 09:54 +drm:card0-HDMI-A-1
> > -rw-r--r--. 1 root root 156 Aug 27 09:54 +drm:card0-eDP-1
> > -rw-r--r--. 1 root root 230 Aug 27 09:54 +input:input0
> > -rw-r--r--. 1 root root 237 Aug 27 09:54 +input:input10
> > -rw-r--r--. 1 root root 151 Aug 27 09:54 +input:input3
> > -rw-r--r--. 1 root root 154 Aug 27 09:54 +input:input4
> > -rw-r--r--. 1 root root 151 Aug 27 09:54 +input:input5
> > -rw-r--r--. 1 root root 154 Aug 27 09:54 +input:input6
> > -rw-r--r--. 1 root root 154 Aug 27 09:54 +input:input7
> > -rw-r--r--. 1 root root 213 Aug 27 09:54 +input:input8
> > -rw-r--r--. 1 root root 192 Aug 27 09:54 +input:input9
> > -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:input0::capslock
> > -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:input0::numlock
> > -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:input0::scrolllock
> > -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:platform::micmute
> > -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:platform::mute
> > -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:tpacpi::kbd_backlight
> > -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:tpacpi::lid_logo_dot
> > -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:tpacpi::power
> > -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:tpacpi::standby
> > -rw-r--r--. 1 root root 141 Aug 27 09:54 +leds:tpacpi::thinkvantage
> > -rw-r--r--. 1 root root 209 Aug 27 09:54 +pci:0000:00:00.0
> > -rw-r--r--. 1 root root 215 Aug 27 09:54 +pci:0000:00:00.2
> > -rw-r--r--. 1 root root 211 Aug 27 09:54 +pci:0000:00:01.0
> > -rw-r--r--. 1 root root 211 Aug 27 09:54 +pci:0000:00:02.0
> > -rw-r--r--. 1 root root 258 Aug 27 09:54 +pci:0000:00:02.1
> > -rw-r--r--. 1 root root 258 Aug 27 09:54 +pci:0000:00:02.2
> > -rw-r--r--. 1 root root 258 Aug 27 09:54 +pci:0000:00:02.4
> > -rw-r--r--. 1 root root 211 Aug 27 09:54 +pci:0000:00:08.0
> > -rw-r--r--. 1 root root 266 Aug 27 09:54 +pci:0000:00:08.1
> > -rw-r--r--. 1 root root 211 Aug 27 09:54 +pci:0000:00:14.0
> > -rw-r--r--. 1 root root 195 Aug 27 09:54 +pci:0000:00:14.3
> > -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.0
> > -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.1
> > -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.2
> > -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.3
> > -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.4
> > -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.5
> > -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.6
> > -rw-r--r--. 1 root root 210 Aug 27 09:54 +pci:0000:00:18.7
> > -rw-r--r--. 1 root root 278 Aug 27 09:54 +pci:0000:01:00.0
> > -rw-r--r--. 1 root root 256 Aug 27 09:54 +pci:0000:02:00.0
> > -rw-r--r--. 1 root root 256 Aug 27 09:54 +pci:0000:02:00.1
> > -rw-r--r--. 1 root root 256 Aug 27 09:54 +pci:0000:02:00.2
> > -rw-r--r--. 1 root root 258 Aug 27 09:54 +pci:0000:02:00.3
> > -rw-r--r--. 1 root root 263 Aug 27 09:54 +pci:0000:02:00.4
> > -rw-r--r--. 1 root root 176 Aug 27 09:54 +pci:0000:04:00.0
> > -rw-r--r--. 1 root root 266 Aug 27 09:54 +pci:0000:06:00.0
> > -rw-r--r--. 1 root root 262 Aug 27 09:54 +pci:0000:06:00.2
> > -rw-r--r--. 1 root root 260 Aug 27 09:54 +pci:0000:06:00.3
> > -rw-r--r--. 1 root root 260 Aug 27 09:54 +pci:0000:06:00.4
> > -rw-r--r--. 1 root root 240 Aug 27 09:54 +pci:0000:06:00.5
> > -rw-r--r--. 1 root root 59 Aug 27 09:54 +platform:AMDI0030:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +platform:LEN0100:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +platform:LEN0130:00
> > -rw-r--r--. 1 root root 62 Aug 27 09:54 +platform:LEN0268:00
> > -rw-r--r--. 1 root root 70 Aug 27 09:54 +platform:STM0125:00
> > -rw-r--r--. 1 root root 205 Aug 27 09:54 +usb:1-0:1.0
> > -rw-r--r--. 1 root root 190 Aug 27 09:54 +usb:2-0:1.0
> > -rw-r--r--. 1 root root 148 Aug 27 09:54 +usb:3-0:1.0
> > -rw-r--r--. 1 root root 190 Aug 27 09:54 +usb:4-0:1.0
> > -rw-r--r--. 1 root root 148 Aug 27 09:54 +usb:5-0:1.0
> > drwxr-xr-x. 2 root root 7200 Aug 27 09:54 .
> > drwxr-xr-x. 8 root root 180 Aug 27 09:54 ..
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:0
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:1
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:10
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:11
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:12
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:13
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:14
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:15
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:2
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:3
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:4
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:5
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:6
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:7
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:8
> > -rw-r--r--. 1 root root 33 Aug 27 09:54 b1:9
> > -rw-r--r--. 1 root root 129 Aug 27 09:54 b254:0
> > -rw-r--r--. 1 root root 136 Aug 27 09:54 b254:1
> > -rw-r--r--. 1 root root 129 Aug 27 09:54 b254:2
> > -rw-r--r--. 1 root root 575 Aug 27 09:54 b259:0
> > -rw-r--r--. 1 root root 1069 Aug 27 09:54 b259:1
> > -rw-r--r--. 1 root root 1137 Aug 27 09:54 b259:2
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:125
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:126
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:127
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:130
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:144
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:183
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:184
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c10:224
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:227
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:228
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:229
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:231
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:232
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:234
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:236
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c10:237
> > -rw-r--r--. 1 root root 49 Aug 27 09:54 c10:242
> > -rw-r--r--. 1 root root 201 Aug 27 09:54 c13:32
> > -rw-r--r--. 1 root root 225 Aug 27 09:54 c13:33
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c13:63
> > -rw-r--r--. 1 root root 298 Aug 27 09:54 c13:64
> > -rw-r--r--. 1 root root 177 Aug 27 09:54 c13:65
> > -rw-r--r--. 1 root root 180 Aug 27 09:54 c13:66
> > -rw-r--r--. 1 root root 177 Aug 27 09:54 c13:67
> > -rw-r--r--. 1 root root 180 Aug 27 09:54 c13:68
> > -rw-r--r--. 1 root root 179 Aug 27 09:54 c13:69
> > -rw-r--r--. 1 root root 862 Aug 27 09:54 c13:70
> > -rw-r--r--. 1 root root 422 Aug 27 09:54 c13:71
> > -rw-r--r--. 1 root root 282 Aug 27 09:54 c13:72
> > -rw-r--r--. 1 root root 1026 Aug 27 09:54 c189:0
> > -rw-r--r--. 1 root root 1026 Aug 27 09:54 c189:128
> > -rw-r--r--. 1 root root 1026 Aug 27 09:54 c189:256
> > -rw-r--r--. 1 root root 1026 Aug 27 09:54 c189:384
> > -rw-r--r--. 1 root root 1026 Aug 27 09:54 c189:512
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:11
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:3
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:5
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:7
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:8
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c1:9
> > -rw-r--r--. 1 root root 212 Aug 27 09:54 c226:0
> > -rw-r--r--. 1 root root 111 Aug 27 09:54 c226:128
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c237:0
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c238:0
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c238:1
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c238:2
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c240:0
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c244:0
> > -rw-r--r--. 1 root root 278 Aug 27 09:54 c245:0
> > -rw-r--r--. 1 root root 28 Aug 27 09:54 c250:0
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c251:0
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c253:65536
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c254:0
> > -rw-r--r--. 1 root root 127 Aug 27 09:54 c29:0
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:0
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:1
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:10
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:11
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:12
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:13
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:14
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:15
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:16
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:17
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:18
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:19
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:2
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:20
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:21
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:22
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:23
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:24
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:25
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:26
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:27
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:28
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:29
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:3
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:30
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:31
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:32
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:33
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:34
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:35
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:36
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:37
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:38
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:39
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:4
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:40
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:41
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:42
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:43
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:44
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:45
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:46
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:47
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:48
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:49
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:5
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:50
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:51
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:52
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:53
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:54
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:55
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:56
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:57
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:58
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:59
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:6
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:60
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:61
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:62
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:63
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:64
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:65
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:66
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:67
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:68
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:69
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:7
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:70
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:71
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:72
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:73
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:74
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:75
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:76
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:77
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:78
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:79
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:8
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:80
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:81
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:82
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:83
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:84
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:85
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:86
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:87
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:88
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:89
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:9
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:90
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:91
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:92
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:93
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:94
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c4:95
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c5:0
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c5:1
> > -rw-r--r--. 1 root root 35 Aug 27 09:54 c5:2
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:0
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:1
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:10
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:11
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:12
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:128
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:129
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:130
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:131
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:132
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:133
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:134
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:135
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:136
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:137
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:138
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:139
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:140
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:2
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:3
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:4
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:5
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:6
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:64
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:65
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:66
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:67
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:68
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:69
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:7
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:70
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:71
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:72
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:73
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:74
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:75
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:76
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:8
> > -rw-r--r--. 1 root root 0 Aug 27 09:54 c7:9
> > -rw-r--r--. 1 root root 52 Aug 27 09:54 n1
> > -rw-r--r--. 1 root root 648 Aug 27 09:54 n2
> >
> > To what I read, having it in the db either populated
> > by the file under /run/udev/data, or populated from sysfs
> > should be enough, but for some reason, it seems systemd
> > and libudev expects the file under this folder.
> >
> > Thanks!
> >
> > José.
>
> Re-adding the mailing lists.
>
> José.
I found that according to some early output on udev, the problem
maybe that Gentoo is triggering the device discovery before the
kernel is having multiple uevent files available. Retriggering the
device discovery on a later stage makes the discovery of the
devices work correctly and I can use the devices as in former
kernels. The command to do so is:
# udevadm trigger --type=devices --action=add
Is this something that can be improved from kernel end or should
I just look for some solution on Gentoo side to delay that trigger and
be done with it?
Thanks!
José.
^ permalink raw reply
* Re: [PATCH v5 37/37] ARM: dts: qcom: mdm9615: drop qcom, prefix from SSBI node name
From: Konrad Dybcio @ 2023-08-28 10:23 UTC (permalink / raw)
To: Dmitry Baryshkov, devicetree, Lee Jones, Rob Herring,
Krzysztof Kozlowski
Cc: Andy Gross, Bjorn Andersson, linux-arm-msm, Jonathan Cameron,
Lars-Peter Clausen, linux-iio, Dmitry Torokhov, linux-input,
Pavel Machek, linux-leds
In-Reply-To: <20230827132525.951475-38-dmitry.baryshkov@linaro.org>
On 27.08.2023 15:25, Dmitry Baryshkov wrote:
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
Same as p36
Konrad
^ permalink raw reply
* Re: [PATCH v5 36/37] ARM: dts: qcom: ipq8064: drop qcom, prefix from SSBI node name
From: Konrad Dybcio @ 2023-08-28 10:23 UTC (permalink / raw)
To: Dmitry Baryshkov, devicetree, Lee Jones, Rob Herring,
Krzysztof Kozlowski
Cc: Andy Gross, Bjorn Andersson, linux-arm-msm, Jonathan Cameron,
Lars-Peter Clausen, linux-iio, Dmitry Torokhov, linux-input,
Pavel Machek, linux-leds
In-Reply-To: <20230827132525.951475-37-dmitry.baryshkov@linaro.org>
On 27.08.2023 15:25, Dmitry Baryshkov wrote:
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
"eeh" to not have a commit message at all..
Could at least say something about vendor prefixes being forbidden
in node names to explain the rationale.
Konrad
^ permalink raw reply
* Re: [PATCH v5 13/37] ARM: dts: qcom: apq8064: move PMIC interrupts to the board files
From: Konrad Dybcio @ 2023-08-28 10:25 UTC (permalink / raw)
To: Dmitry Baryshkov, devicetree, Lee Jones, Rob Herring,
Krzysztof Kozlowski
Cc: Andy Gross, Bjorn Andersson, linux-arm-msm, Jonathan Cameron,
Lars-Peter Clausen, linux-iio, Dmitry Torokhov, linux-input,
Pavel Machek, linux-leds
In-Reply-To: <20230827132525.951475-14-dmitry.baryshkov@linaro.org>
On 27.08.2023 15:25, Dmitry Baryshkov wrote:
> The interrupt of SSBI PMICs is routed to the SoCs GPIO. As such, it is
> not a property of the SoC, it is a property of the particular board
> (even if it is standard and unified between all devices). Move these
> interrupt specifications to the board files.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Konrad
^ permalink raw reply
* Re: [PATCH -next] HID: intel-ish-hid: Remove unused declarations
From: srinivas pandruvada @ 2023-08-28 10:53 UTC (permalink / raw)
To: Yue Haibing, jikos, benjamin.tissoires; +Cc: linux-input
In-Reply-To: <20230817135053.51964-1-yuehaibing@huawei.com>
On Thu, 2023-08-17 at 21:50 +0800, Yue Haibing wrote:
> Commit 3703f53b99e4 ("HID: intel_ish-hid: ISH Transport layer")
> declared ishtp_remove_all_clients()/ishtp_can_client_connect()
> but never implemented them.
>
> Signed-off-by: Yue Haibing <yuehaibing@huawei.com>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Sorry I was on vacation to ACK before.
> ---
> drivers/hid/intel-ish-hid/ishtp/bus.h | 1 -
> drivers/hid/intel-ish-hid/ishtp/client.h | 1 -
> 2 files changed, 2 deletions(-)
>
> diff --git a/drivers/hid/intel-ish-hid/ishtp/bus.h
> b/drivers/hid/intel-ish-hid/ishtp/bus.h
> index 5bb85c932e4c..53645ac89ee8 100644
> --- a/drivers/hid/intel-ish-hid/ishtp/bus.h
> +++ b/drivers/hid/intel-ish-hid/ishtp/bus.h
> @@ -46,7 +46,6 @@ struct ishtp_cl_device {
> };
>
> int ishtp_bus_new_client(struct ishtp_device *dev);
> -void ishtp_remove_all_clients(struct ishtp_device *dev);
> int ishtp_cl_device_bind(struct ishtp_cl *cl);
> void ishtp_cl_bus_rx_event(struct ishtp_cl_device *device);
>
> diff --git a/drivers/hid/intel-ish-hid/ishtp/client.h
> b/drivers/hid/intel-ish-hid/ishtp/client.h
> index fc62dd1495da..d9d398fadcf7 100644
> --- a/drivers/hid/intel-ish-hid/ishtp/client.h
> +++ b/drivers/hid/intel-ish-hid/ishtp/client.h
> @@ -109,7 +109,6 @@ struct ishtp_cl {
> };
>
> /* Client connection managenment internal functions */
> -int ishtp_can_client_connect(struct ishtp_device *ishtp_dev, guid_t
> *uuid);
> int ishtp_fw_cl_by_id(struct ishtp_device *dev, uint8_t client_id);
> void ishtp_cl_send_msg(struct ishtp_device *dev, struct ishtp_cl
> *cl);
> void recv_ishtp_cl_msg(struct ishtp_device *dev,
^ permalink raw reply
* Re: [PATCH v5 15/37] ARM: dts: qcom: msm8660: move PMIC interrupts to the board files
From: Konrad Dybcio @ 2023-08-28 10:57 UTC (permalink / raw)
To: Dmitry Baryshkov, devicetree, Lee Jones, Rob Herring,
Krzysztof Kozlowski
Cc: Andy Gross, Bjorn Andersson, linux-arm-msm, Jonathan Cameron,
Lars-Peter Clausen, linux-iio, Dmitry Torokhov, linux-input,
Pavel Machek, linux-leds
In-Reply-To: <20230827132525.951475-16-dmitry.baryshkov@linaro.org>
On 27.08.2023 15:25, Dmitry Baryshkov wrote:
> The interrupt of SSBI PMICs is routed to the SoCs GPIO. As such, it is
> not a property of the SoC, it is a property of the particular board
> (even if it is standard and unified between all devices). Move these
> interrupt specifications to the board files.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
Acked-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Konrad
> arch/arm/boot/dts/qcom/qcom-apq8060-dragonboard.dts | 4 ++++
> arch/arm/boot/dts/qcom/qcom-msm8660-surf.dts | 4 ++++
> arch/arm/boot/dts/qcom/qcom-msm8660.dtsi | 2 --
> 3 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/boot/dts/qcom/qcom-apq8060-dragonboard.dts b/arch/arm/boot/dts/qcom/qcom-apq8060-dragonboard.dts
> index 48fd1a1feea3..e4261d729d35 100644
> --- a/arch/arm/boot/dts/qcom/qcom-apq8060-dragonboard.dts
> +++ b/arch/arm/boot/dts/qcom/qcom-apq8060-dragonboard.dts
> @@ -273,6 +273,10 @@ kxsd9@18 {
> };
> };
>
> +&pm8058 {
> + interrupts-extended = <&tlmm 88 IRQ_TYPE_LEVEL_LOW>;
> +};
> +
> &pm8058_gpio {
> dragon_ethernet_gpios: ethernet-state {
> pinconf {
> diff --git a/arch/arm/boot/dts/qcom/qcom-msm8660-surf.dts b/arch/arm/boot/dts/qcom/qcom-msm8660-surf.dts
> index 86fbb6dfdc2a..a5441aecd637 100644
> --- a/arch/arm/boot/dts/qcom/qcom-msm8660-surf.dts
> +++ b/arch/arm/boot/dts/qcom/qcom-msm8660-surf.dts
> @@ -34,6 +34,10 @@ &gsbi12_serial {
> status = "okay";
> };
>
> +&pm8058 {
> + interrupts-extended = <&tlmm 88 IRQ_TYPE_LEVEL_LOW>;
> +};
> +
> &pm8058_keypad {
> linux,keymap = <
> MATRIX_KEY(0, 0, KEY_FN_F1)
> diff --git a/arch/arm/boot/dts/qcom/qcom-msm8660.dtsi b/arch/arm/boot/dts/qcom/qcom-msm8660.dtsi
> index 9217ced108c4..84b0366792d4 100644
> --- a/arch/arm/boot/dts/qcom/qcom-msm8660.dtsi
> +++ b/arch/arm/boot/dts/qcom/qcom-msm8660.dtsi
> @@ -341,8 +341,6 @@ ssbi@500000 {
>
> pm8058: pmic {
> compatible = "qcom,pm8058";
> - interrupt-parent = <&tlmm>;
> - interrupts = <88 8>;
> #interrupt-cells = <2>;
> interrupt-controller;
> #address-cells = <1>;
^ permalink raw reply
* Re: [PATCH v5 14/37] ARM: dts: qcom: mdm9615: move PMIC interrupts to the board files
From: Konrad Dybcio @ 2023-08-28 10:57 UTC (permalink / raw)
To: Dmitry Baryshkov, devicetree, Lee Jones, Rob Herring,
Krzysztof Kozlowski
Cc: Andy Gross, Bjorn Andersson, linux-arm-msm, Jonathan Cameron,
Lars-Peter Clausen, linux-iio, Dmitry Torokhov, linux-input,
Pavel Machek, linux-leds
In-Reply-To: <20230827132525.951475-15-dmitry.baryshkov@linaro.org>
On 27.08.2023 15:25, Dmitry Baryshkov wrote:
> The interrupt of SSBI PMICs is routed to the SoCs GPIO. As such, it is
> not a property of the SoC, it is a property of the particular board
> (even if it is standard and unified between all devices). Move these
> interrupt specifications to the board files.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
Acked-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Konrad
^ permalink raw reply
* Re: [PATCH v5 16/37] ARM: dts: qcom: msm8960: move PMIC interrupts to the board files
From: Konrad Dybcio @ 2023-08-28 10:58 UTC (permalink / raw)
To: Dmitry Baryshkov, devicetree, Lee Jones, Rob Herring,
Krzysztof Kozlowski
Cc: Andy Gross, Bjorn Andersson, linux-arm-msm, Jonathan Cameron,
Lars-Peter Clausen, linux-iio, Dmitry Torokhov, linux-input,
Pavel Machek, linux-leds
In-Reply-To: <20230827132525.951475-17-dmitry.baryshkov@linaro.org>
On 27.08.2023 15:25, Dmitry Baryshkov wrote:
> The interrupt of SSBI PMICs is routed to the SoCs GPIO. As such, it is
> not a property of the SoC, it is a property of the particular board
> (even if it is standard and unified between all devices). Move these
> interrupt specifications to the board files.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Konrad
^ permalink raw reply
* [PATCH 0/8] fbdev: Use helpers for deferred I/O
From: Thomas Zimmermann @ 2023-08-28 13:14 UTC (permalink / raw)
To: deller, daniel, sam, javierm
Cc: linux-fbdev, dri-devel, linux-staging, linux-hyperv, linux-input,
Thomas Zimmermann
Here's another patchset for deferred-I/O helpers. Update a number
of fbdev drivers with deferred I/O to use fbdev's helper macros and
Kconfig tokens.
Generating and initializing via helpers macros will later allow for
a fine-grained setup, depending on Kconfig options. For example, it
will be possible to leave out file I/O if FB_DEVICE has not been set.
Each driver in special in its own way. The smscufx and udlfb drivers
support file I/O without damage updates. (That probably doesn't work
correctly.) So they provide their own mmap code. The hyperv_fb driver
sometimes operates on memory in I/O address spaces and fails to do
damage handling correctly for write operations. The picolcd and fbtft
drivers are outside of fbdev.
Thomas Zimmermann (8):
fbdev/smscufx: Use fb_ops helpers for deferred I/O
fbdev/udlfb: Use fb_ops helpers for deferred I/O
fbdev: Add Kconfig macro FB_IOMEM_HELPERS_DEFERRED
fbdev/hyperv_fb: Use fb_ops helpers for deferred I/O
hid: Remove trailing whitespace
hid/picolcd: Use fb_ops helpers for deferred I/O
staging/fbtft: Initialize fb_op struct as static const
staging/fbtft: Use fb_ops helpers for deferred I/O
drivers/hid/Kconfig | 8 +--
drivers/hid/hid-picolcd_fb.c | 73 ++++++----------------
drivers/staging/fbtft/Kconfig | 6 +-
drivers/staging/fbtft/fbtft-core.c | 99 ++++++++----------------------
drivers/video/fbdev/Kconfig | 5 +-
drivers/video/fbdev/core/Kconfig | 6 ++
drivers/video/fbdev/hyperv_fb.c | 48 +++++----------
drivers/video/fbdev/smscufx.c | 85 +++++++------------------
drivers/video/fbdev/udlfb.c | 89 +++++++--------------------
9 files changed, 114 insertions(+), 305 deletions(-)
--
2.41.0
^ permalink raw reply
* [PATCH 2/8] fbdev/udlfb: Use fb_ops helpers for deferred I/O
From: Thomas Zimmermann @ 2023-08-28 13:14 UTC (permalink / raw)
To: deller, daniel, sam, javierm
Cc: linux-fbdev, dri-devel, linux-staging, linux-hyperv, linux-input,
Thomas Zimmermann, Bernie Thompson
In-Reply-To: <20230828132131.29295-1-tzimmermann@suse.de>
Generate callback functions for struct fb_ops with the fbdev macro
FB_GEN_DEFAULT_DEFERRED_SYSMEM_OPS(). Initialize struct fb_ops to
the generated functions with fbdev initializer macros.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Bernie Thompson <bernie@plugable.com>
---
drivers/video/fbdev/udlfb.c | 89 +++++++++----------------------------
1 file changed, 22 insertions(+), 67 deletions(-)
diff --git a/drivers/video/fbdev/udlfb.c b/drivers/video/fbdev/udlfb.c
index b70762ead13c..2460ff4ac86b 100644
--- a/drivers/video/fbdev/udlfb.c
+++ b/drivers/video/fbdev/udlfb.c
@@ -715,68 +715,6 @@ static void dlfb_offload_damage(struct dlfb_data *dlfb, int x, int y, int width,
schedule_work(&dlfb->damage_work);
}
-/*
- * Path triggered by usermode clients who write to filesystem
- * e.g. cat filename > /dev/fb1
- * Not used by X Windows or text-mode console. But useful for testing.
- * Slow because of extra copy and we must assume all pixels dirty.
- */
-static ssize_t dlfb_ops_write(struct fb_info *info, const char __user *buf,
- size_t count, loff_t *ppos)
-{
- ssize_t result;
- struct dlfb_data *dlfb = info->par;
- u32 offset = (u32) *ppos;
-
- result = fb_sys_write(info, buf, count, ppos);
-
- if (result > 0) {
- int start = max((int)(offset / info->fix.line_length), 0);
- int lines = min((u32)((result / info->fix.line_length) + 1),
- (u32)info->var.yres);
-
- dlfb_handle_damage(dlfb, 0, start, info->var.xres,
- lines);
- }
-
- return result;
-}
-
-/* hardware has native COPY command (see libdlo), but not worth it for fbcon */
-static void dlfb_ops_copyarea(struct fb_info *info,
- const struct fb_copyarea *area)
-{
-
- struct dlfb_data *dlfb = info->par;
-
- sys_copyarea(info, area);
-
- dlfb_offload_damage(dlfb, area->dx, area->dy,
- area->width, area->height);
-}
-
-static void dlfb_ops_imageblit(struct fb_info *info,
- const struct fb_image *image)
-{
- struct dlfb_data *dlfb = info->par;
-
- sys_imageblit(info, image);
-
- dlfb_offload_damage(dlfb, image->dx, image->dy,
- image->width, image->height);
-}
-
-static void dlfb_ops_fillrect(struct fb_info *info,
- const struct fb_fillrect *rect)
-{
- struct dlfb_data *dlfb = info->par;
-
- sys_fillrect(info, rect);
-
- dlfb_offload_damage(dlfb, rect->dx, rect->dy, rect->width,
- rect->height);
-}
-
/*
* NOTE: fb_defio.c is holding info->fbdefio.mutex
* Touching ANY framebuffer memory that triggers a page fault
@@ -1186,14 +1124,31 @@ static int dlfb_ops_blank(int blank_mode, struct fb_info *info)
return 0;
}
+static void dlfb_ops_damage_range(struct fb_info *info, off_t off, size_t len)
+{
+ struct dlfb_data *dlfb = info->par;
+ int start = max((int)(off / info->fix.line_length), 0);
+ int lines = min((u32)((len / info->fix.line_length) + 1), (u32)info->var.yres);
+
+ dlfb_handle_damage(dlfb, 0, start, info->var.xres, lines);
+}
+
+static void dlfb_ops_damage_area(struct fb_info *info, u32 x, u32 y, u32 width, u32 height)
+{
+ struct dlfb_data *dlfb = info->par;
+
+ dlfb_offload_damage(dlfb, x, y, width, height);
+}
+
+FB_GEN_DEFAULT_DEFERRED_SYSMEM_OPS(dlfb_ops,
+ dlfb_ops_damage_range,
+ dlfb_ops_damage_area)
+
static const struct fb_ops dlfb_ops = {
.owner = THIS_MODULE,
- .fb_read = fb_sys_read,
- .fb_write = dlfb_ops_write,
+ __FB_DEFAULT_DEFERRED_OPS_RDWR(dlfb_ops),
.fb_setcolreg = dlfb_ops_setcolreg,
- .fb_fillrect = dlfb_ops_fillrect,
- .fb_copyarea = dlfb_ops_copyarea,
- .fb_imageblit = dlfb_ops_imageblit,
+ __FB_DEFAULT_DEFERRED_OPS_DRAW(dlfb_ops),
.fb_mmap = dlfb_ops_mmap,
.fb_ioctl = dlfb_ops_ioctl,
.fb_open = dlfb_ops_open,
--
2.41.0
^ permalink raw reply related
* [PATCH 1/8] fbdev/smscufx: Use fb_ops helpers for deferred I/O
From: Thomas Zimmermann @ 2023-08-28 13:14 UTC (permalink / raw)
To: deller, daniel, sam, javierm
Cc: linux-fbdev, dri-devel, linux-staging, linux-hyperv, linux-input,
Thomas Zimmermann, Steve Glendinning
In-Reply-To: <20230828132131.29295-1-tzimmermann@suse.de>
Generate callback functions for struct fb_ops with the fbdev macro
FB_GEN_DEFAULT_DEFERRED_SYSMEM_OPS(). Initialize struct fb_ops to
the generated functions with fbdev initializer macros.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Steve Glendinning <steve.glendinning@shawell.net>
---
drivers/video/fbdev/smscufx.c | 85 +++++++++--------------------------
1 file changed, 22 insertions(+), 63 deletions(-)
diff --git a/drivers/video/fbdev/smscufx.c b/drivers/video/fbdev/smscufx.c
index 387d18706fec..90a77d19b236 100644
--- a/drivers/video/fbdev/smscufx.c
+++ b/drivers/video/fbdev/smscufx.c
@@ -894,64 +894,6 @@ static int ufx_handle_damage(struct ufx_data *dev, int x, int y,
return 0;
}
-/* Path triggered by usermode clients who write to filesystem
- * e.g. cat filename > /dev/fb1
- * Not used by X Windows or text-mode console. But useful for testing.
- * Slow because of extra copy and we must assume all pixels dirty. */
-static ssize_t ufx_ops_write(struct fb_info *info, const char __user *buf,
- size_t count, loff_t *ppos)
-{
- ssize_t result;
- struct ufx_data *dev = info->par;
- u32 offset = (u32) *ppos;
-
- result = fb_sys_write(info, buf, count, ppos);
-
- if (result > 0) {
- int start = max((int)(offset / info->fix.line_length), 0);
- int lines = min((u32)((result / info->fix.line_length) + 1),
- (u32)info->var.yres);
-
- ufx_handle_damage(dev, 0, start, info->var.xres, lines);
- }
-
- return result;
-}
-
-static void ufx_ops_copyarea(struct fb_info *info,
- const struct fb_copyarea *area)
-{
-
- struct ufx_data *dev = info->par;
-
- sys_copyarea(info, area);
-
- ufx_handle_damage(dev, area->dx, area->dy,
- area->width, area->height);
-}
-
-static void ufx_ops_imageblit(struct fb_info *info,
- const struct fb_image *image)
-{
- struct ufx_data *dev = info->par;
-
- sys_imageblit(info, image);
-
- ufx_handle_damage(dev, image->dx, image->dy,
- image->width, image->height);
-}
-
-static void ufx_ops_fillrect(struct fb_info *info,
- const struct fb_fillrect *rect)
-{
- struct ufx_data *dev = info->par;
-
- sys_fillrect(info, rect);
-
- ufx_handle_damage(dev, rect->dx, rect->dy, rect->width,
- rect->height);
-}
-
/* NOTE: fb_defio.c is holding info->fbdefio.mutex
* Touching ANY framebuffer memory that triggers a page fault
* in fb_defio will cause a deadlock, when it also tries to
@@ -1279,14 +1221,31 @@ static int ufx_ops_blank(int blank_mode, struct fb_info *info)
return 0;
}
+static void ufx_ops_damage_range(struct fb_info *info, off_t off, size_t len)
+{
+ struct ufx_data *dev = info->par;
+ int start = max((int)(off / info->fix.line_length), 0);
+ int lines = min((u32)((len / info->fix.line_length) + 1), (u32)info->var.yres);
+
+ ufx_handle_damage(dev, 0, start, info->var.xres, lines);
+}
+
+static void ufx_ops_damage_area(struct fb_info *info, u32 x, u32 y, u32 width, u32 height)
+{
+ struct ufx_data *dev = info->par;
+
+ ufx_handle_damage(dev, x, y, width, height);
+}
+
+FB_GEN_DEFAULT_DEFERRED_SYSMEM_OPS(ufx_ops,
+ ufx_ops_damage_range,
+ ufx_ops_damage_area)
+
static const struct fb_ops ufx_ops = {
.owner = THIS_MODULE,
- .fb_read = fb_sys_read,
- .fb_write = ufx_ops_write,
+ __FB_DEFAULT_DEFERRED_OPS_RDWR(ufx_ops),
.fb_setcolreg = ufx_ops_setcolreg,
- .fb_fillrect = ufx_ops_fillrect,
- .fb_copyarea = ufx_ops_copyarea,
- .fb_imageblit = ufx_ops_imageblit,
+ __FB_DEFAULT_DEFERRED_OPS_DRAW(ufx_ops),
.fb_mmap = ufx_ops_mmap,
.fb_ioctl = ufx_ops_ioctl,
.fb_open = ufx_ops_open,
--
2.41.0
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox