diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index 7220e9016b184d..81b9961541ca28 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -18,6 +18,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-asus-z010d.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-gplus-fl8005a.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-huawei-g7.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-huawei-y635.dtb +dtb-$(CONFIG_ARCH_QCOM) += msm8916-lenovo-phab.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-lg-c50.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-lg-m216.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-longcheer-l8150.dtb diff --git a/arch/arm64/boot/dts/qcom/msm8916-lenovo-phab.dts b/arch/arm64/boot/dts/qcom/msm8916-lenovo-phab.dts new file mode 100644 index 00000000000000..6fa1b5aada1b84 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8916-lenovo-phab.dts @@ -0,0 +1,465 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; + +#include "msm8916-pm8916.dtsi" +#include "msm8916-modem.dtsi" + +#include +#include +#include +#include + +/ { + model = "Lenovo PHAB"; + compatible = "lenovo,phab", "qcom,msm8916"; + chassis-type = "tablet"; + + aliases { + serial0 = &blsp1_uart2; + }; + + chosen { + stdout-path = "serial0"; + }; + + reserved-memory { + mpss_mem: mpss@86800000 { + reg = <0x0 0x86800000 0x0 0x5500000>; + no-map; + }; + + gps_mem: gps@8bd00000 { + reg = <0x0 0x8bd00000 0x0 0x200000>; + no-map; + }; + }; + + backlight: backlight { + compatible = "pwm-backlight"; + pwms = <&pm8916_pwm 0 100000>; + brightness-levels = <0 255>; + num-interpolated-steps = <255>; + default-brightness-level = <128>; + }; + + battery: battery { + compatible = "simple-battery"; + voltage-min-design-microvolt = <3200000>; + voltage-max-design-microvolt = <4350000>; + ocv-capacity-celsius = <25>; + ocv-capacity-table-0 = <4336000 100>, <4267000 95>, + <4210000 90>, <4155000 85>, <4104000 80>, <4059000 75>, + <3996000 70>, <3960000 65>, <3924000 60>, <3838000 55>, + <3797000 50>, <3783000 45>, <3772000 40>, <3760000 35>, + <3742000 30>, <3721000 25>, <3700000 20>, <3686000 16>, + <3684000 13>, <3681000 11>, <3677000 10>, <3672000 9>, + <3662000 8>, <3653000 7>, <3644000 6>, <3610000 5>, + <3556000 4>, <3486000 3>, <3392000 2>, <3296000 1>, + <3200000 0>; + }; + + gpio-keys { + compatible = "gpio-keys"; + pinctrl-0 = <&gpio_keys_default>; + pinctrl-names = "default"; + label = "GPIO Buttons"; + + button-volume-up { + label = "Volume Up"; + gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <15>; + }; + }; + + usb_id: usb-id { + compatible = "linux,extcon-usb-gpio"; + id-gpios = <&msmgpio 110 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&usb_id_default>; + pinctrl-names = "default"; + }; +}; + +&blsp_i2c1 { + status = "okay"; + + tas2552: tas2552@40 { + compatible = "ti,tas2552"; + reg = <0x40>; + #sound-dai-cells = <0>; + enable-gpio = <&msmgpio 98 GPIO_ACTIVE_HIGH>; + }; +}; + +&blsp_i2c2 { + status = "okay"; + + accelerometer: accelerometer@68 { + compatible = "invensense,mpu6050"; + reg = <0x68>; + interrupt-parent = <&msmgpio>; + interrupts = <115 IRQ_TYPE_EDGE_FALLING>; + pinctrl-0 = <&mpu_default>; + pinctrl-1 = <&mpu_sleep>; + pinctrl-names = "default", "sleep"; + vdd-supply = <&pm8916_l17>; + }; +}; + +&blsp_i2c4 { + status = "okay"; + + charger: charger@57 { + compatible = "summit,smb358"; + reg = <0x36>; + interrupt-parent = <&msmgpio>; + interrupts = <62 IRQ_TYPE_LEVEL_LOW>; + pinctrl-0 = <&smb_int_default>; + pinctrl-names = "default"; + summit,enable-usb-charging; + summit,enable-mains-charging; + + usb_vbus: usb-vbus { + regulator-name = "usb_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-min-microamp = <750000>; + regulator-max-microamp = <750000>; + summit,needs-inok-toggle; + }; + }; +}; + +&blsp_i2c5 { + status = "okay"; + + touchscreen@38 { + /* actually FT5336 */ + compatible = "edt,edt-ft5306"; + reg = <0x38>; + interrupt-parent = <&msmgpio>; + interrupts = <13 IRQ_TYPE_EDGE_FALLING>; + pinctrl-0 = <&touchscreen_default>; + pinctrl-names = "default"; + vcc-supply = <&pm8916_l17>; + iovcc-supply = <&pm8916_l6>; + reset-gpios = <&msmgpio 12 GPIO_ACTIVE_LOW>; + touchscreen-size-x = <720>; + touchscreen-size-y = <1280>; + }; +}; + +&blsp1_uart2 { + status = "okay"; +}; + +&dsi0 { + pinctrl-0 = <&mdss_default>; + pinctrl-1 = <&mdss_sleep>; + pinctrl-names = "default", "sleep"; + + panel@0 { + compatible = "lenovo,phab-jdi_1080p"; + reg = <0>; + backlight = <&backlight>; + reset-gpios = <&msmgpio 25 GPIO_ACTIVE_LOW>; + + port { + panel_in: endpoint { + remote-endpoint = <&dsi0_out>; + }; + }; + }; +}; + +&dsi0_out { + data-lanes = <0 1 2 3>; + qcom,platform-enable-gpio = <&msmgpio 109 GPIO_ACTIVE_HIGH>; + remote-endpoint = <&panel_in>; +}; + +&dsi_phy0 { + qcom,dsi-phy-regulator-ldo-mode; +}; + +&lpass { + dai@3 { + reg = ; + qcom,playback-sd-lines = <1>; + }; +}; + +&mdss { + status = "okay"; +}; + +&pm8916_bms { + monitored-battery = <&battery>; + //power-supplies = <&charger>; + status = "okay"; +}; + +&pm8916_pwm { + pinctrl-0 = <&pwm_out>; + pinctrl-names = "default"; + status = "okay"; +}; + +&pm8916_resin { + linux,code = ; + status = "okay"; +}; + +&pm8916_vib { + status = "okay"; +}; + +&pronto { + status = "okay"; + + iris { + compatible = "qcom,wcn3660b"; + }; +}; + +&q6afedai { + dai@22 { + reg = ; + qcom,sd-lines = <1>; + }; +}; + +&sdhc_1 { + pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>; + pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>; + pinctrl-names = "default", "sleep"; + status = "okay"; +}; + +&sdhc_2 { + pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>; + pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>; + pinctrl-names = "default", "sleep"; + cd-gpios = <&msmgpio 38 GPIO_ACTIVE_LOW>; + status = "okay"; +}; + +&sound { + pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act>; + pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus>; + pinctrl-names = "default", "sleep"; + qcom,audio-routing = + "RX_BIAS", "MCLK", + "SPK_RX_BIAS", "MCLK", + "INT_LDO_H", "MCLK", + "MIC BIAS External", "Handset Mic", + "MIC BIAS Internal2", "Headset Mic", + "MIC BIAS External", "Secondary Mic", + "AMIC1", "MIC BIAS External", + "AMIC2", "MIC BIAS Internal2", + "AMIC3", "MIC BIAS External", + "DMIC1", "MIC BIAS Internal1", + "MIC BIAS Internal1", "Digital Mic1", + "DMIC2", "MIC BIAS Internal1", + "MIC BIAS Internal1", "Digital Mic2"; + status = "okay"; +}; + +&sound_dai_quaternary { + status = "okay"; + + codec { + sound-dai = <&tas2552>; + }; +}; + +&usb { + extcon = <&charger>, <&usb_id>; + vbus-supply = <&usb_vbus>; + status = "okay"; +}; + +&usb_hs_phy { + extcon = <&charger>; +}; + +&smd_rpm_regulators { + vdd_l1_l2_l3-supply = <&pm8916_s3>; + vdd_l4_l5_l6-supply = <&pm8916_s4>; + vdd_l7-supply = <&pm8916_s4>; + + s3 { + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1300000>; + }; + + s4 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2100000>; + }; + + l1 { + regulator-min-microvolt = <1225000>; + regulator-max-microvolt = <1225000>; + }; + + l2 { + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + l4 { + regulator-min-microvolt = <2050000>; + regulator-max-microvolt = <2050000>; + }; + + l5 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + l6 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + l7 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + l8 { + regulator-min-microvolt = <2850000>; + regulator-max-microvolt = <2900000>; + }; + + l9 { + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + l10 { + regulator-min-microvolt = <2700000>; + regulator-max-microvolt = <2800000>; + }; + + l11 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2950000>; + regulator-allow-set-load; + regulator-system-load = <200000>; + }; + + l12 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2950000>; + }; + + l13 { + regulator-min-microvolt = <3075000>; + regulator-max-microvolt = <3075000>; + }; + + l14 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + }; + + l15 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + }; + + l16 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + }; + + l17 { + regulator-min-microvolt = <2850000>; + regulator-max-microvolt = <2850000>; + }; + + l18 { + regulator-min-microvolt = <2700000>; + regulator-max-microvolt = <2700000>; + }; +}; + +&msmgpio { + gpio_keys_default: gpio-keys-default-state { + pins = "gpio107"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + + mdss_default: mdss-default-state { + pins = "gpio25"; + function = "gpio"; + drive-strength = <8>; + bias-disable; + }; + + mdss_sleep: mdss-sleep-state { + pins = "gpio25"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + }; + + mpu_default: mpu-default-state { + pins = "gpio115"; + function = "gpio"; + drive-strength = <6>; + bias-pull-up; + }; + + mpu_sleep: mpu-sleep-state { + pins = "gpio115"; + function = "gpio"; + drive-strength = <2>; + }; + + smb_int_default: smb-int-default-state { + pins = "gpio62"; + function = "gpio"; + + drive-strength = <2>; + bias-pull-up; + }; + + touchscreen_default: touchscreen-default-state { + reset-pins { + pins = "gpio12"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + touchscreen-pins { + pins = "gpio13"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + + usb_id_default: usb-id-default-state { + pins = "gpio110"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; +}; + +&pm8916_mpps { + pwm_out: mpp4-state { + pins = "mpp4"; + function = "digital"; + output-low; + qcom,dtest = <1>; + power-source = ; + }; +}; diff --git a/drivers/gpu/drm/panel/msm8916-generated/Kconfig b/drivers/gpu/drm/panel/msm8916-generated/Kconfig index ac026ebf0be973..b8e6e35e5fe6ad 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/Kconfig +++ b/drivers/gpu/drm/panel/msm8916-generated/Kconfig @@ -41,6 +41,10 @@ config DRM_PANEL_HUAWEI_TIANMA_NT35521 tristate "Huawei TIANMA NT35521" default DRM_PANEL_MSM8916_GENERATED +config DRM_PANEL_LENOVO_PHAB_JDI_1080P + tristate "Lenovo PHAB JDI_1080P" + default DRM_PANEL_MSM8916_GENERATED + config DRM_PANEL_LONGCHEER_BOOYI_OTM1287 tristate "Longcheer BOOYI OTM1287" default DRM_PANEL_MSM8916_GENERATED diff --git a/drivers/gpu/drm/panel/msm8916-generated/Makefile b/drivers/gpu/drm/panel/msm8916-generated/Makefile index 272d0cc9b8b860..7f448a957ce2ef 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/Makefile +++ b/drivers/gpu/drm/panel/msm8916-generated/Makefile @@ -7,6 +7,7 @@ obj-$(CONFIG_DRM_PANEL_HUAWEI_BOE_OTM8019A) += panel-huawei-boe-otm8019a.o obj-$(CONFIG_DRM_PANEL_HUAWEI_KIWI_CMI_NT35532) += panel-huawei-kiwi-cmi-nt35532.o obj-$(CONFIG_DRM_PANEL_HUAWEI_KIWI_TIANMA_NT35596) += panel-huawei-kiwi-tianma-nt35596.o obj-$(CONFIG_DRM_PANEL_HUAWEI_TIANMA_NT35521) += panel-huawei-tianma-nt35521.o +obj-$(CONFIG_DRM_PANEL_LENOVO_PHAB_JDI_1080P) += panel-lenovo-phab-jdi_1080p.o obj-$(CONFIG_DRM_PANEL_LONGCHEER_BOOYI_OTM1287) += panel-longcheer-booyi-otm1287.o obj-$(CONFIG_DRM_PANEL_LONGCHEER_DIJING_ILI9881C) += panel-longcheer-dijing-ili9881c.o obj-$(CONFIG_DRM_PANEL_LONGCHEER_TRULY_NT35695) += panel-longcheer-truly-nt35695.o diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-auo-hx8394d.c b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-auo-hx8394d.c index b6fea9cd4fd844..9867ed80eb7627 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-auo-hx8394d.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-auo-hx8394d.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-nt35596.c b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-nt35596.c index 76a68f38569d5d..0aee7395ed4ce0 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-nt35596.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-nt35596.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-r63315.c b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-r63315.c index 1ba418d5c5e7ac..b40d28df6594bc 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-r63315.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-r63315.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z00l-otm1284a.c b/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z00l-otm1284a.c index b8d79efa0b779b..5ad53aff52eb82 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z00l-otm1284a.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z00l-otm1284a.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z010d-r69339.c b/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z010d-r69339.c index c3587ff64ad669..a81bdc0bfe18df 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z010d-r69339.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z010d-r69339.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-boe-otm8019a.c b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-boe-otm8019a.c index 502f7555b09a21..6fcc9bf177ca2c 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-boe-otm8019a.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-boe-otm8019a.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-cmi-nt35532.c b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-cmi-nt35532.c index 856b105e1dd37a..99f1e6293c2b16 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-cmi-nt35532.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-cmi-nt35532.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-tianma-nt35596.c b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-tianma-nt35596.c index c7cbdb36c63e62..33f0c575666f1c 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-tianma-nt35596.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-tianma-nt35596.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-tianma-nt35521.c b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-tianma-nt35521.c index 1fcad8822a13bd..fefc8e43c8bbb5 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-tianma-nt35521.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-tianma-nt35521.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-lenovo-phab-jdi_1080p.c b/drivers/gpu/drm/panel/msm8916-generated/panel-lenovo-phab-jdi_1080p.c new file mode 100644 index 00000000000000..220e8a65452648 --- /dev/null +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-lenovo-phab-jdi_1080p.c @@ -0,0 +1,456 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Copyright (c) 2023 FIXME +// Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: +// Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) + +#include +#include +#include +#include +#include + +#include +#include +#include + +struct jdi { + struct drm_panel panel; + struct mipi_dsi_device *dsi; + struct regulator_bulk_data supplies[2]; + struct gpio_desc *reset_gpio; + bool prepared; +}; + +static inline struct jdi *to_jdi(struct drm_panel *panel) +{ + return container_of(panel, struct jdi, panel); +} + +#define dsi_dcs_write_seq(dsi, seq...) do { \ + static const u8 d[] = { seq }; \ + int ret; \ + ret = mipi_dsi_dcs_write_buffer(dsi, d, ARRAY_SIZE(d)); \ + if (ret < 0) \ + return ret; \ + } while (0) + +static void jdi_reset(struct jdi *ctx) +{ + gpiod_set_value_cansleep(ctx->reset_gpio, 0); + usleep_range(10000, 11000); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + msleep(20); + gpiod_set_value_cansleep(ctx->reset_gpio, 0); + usleep_range(10000, 11000); +} + +static int jdi_on(struct jdi *ctx) +{ + struct mipi_dsi_device *dsi = ctx->dsi; + struct device *dev = &dsi->dev; + int ret; + + dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x00); + usleep_range(10000, 11000); + dsi_dcs_write_seq(dsi, 0xb1, 0xe0, 0x21); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb2, 0x25); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb5, 0x05, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xba, 0x22, 0x26); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xbc, 0x0f, 0x01); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xbd, 0x01, 0x40, 0x08, 0x10); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xc8, 0x80); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xef, 0x00, 0x07, 0xff, 0xff, 0x40, 0x40); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x01); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb7, 0x00, 0x7c); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xce, 0x06); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xca, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb4, 0x14); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xbc, 0x78, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xbd, 0x78, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x02); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb0, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xd1, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x47, 0x00, 0x60, 0x00, + 0x77, 0x00, 0x9c, 0x00, 0xba, 0x00, 0xea); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xd2, + 0x01, 0x0f, 0x01, 0x48, 0x01, 0x75, 0x01, 0xc0, 0x01, + 0xff, 0x02, 0x00, 0x02, 0x38, 0x02, 0x73); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xd3, + 0x02, 0x99, 0x02, 0xcc, 0x02, 0xf2, 0x03, 0x1f, 0x03, + 0x2f, 0x03, 0x64, 0x03, 0x7e, 0x03, 0x9e); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xd4, 0x03, 0xb9, 0x03, 0xc8); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xd5, + 0x00, 0x8f, 0x00, 0x9d, 0x00, 0xb4, 0x00, 0xc2, 0x00, + 0xd2, 0x00, 0xea, 0x00, 0xff, 0x01, 0x22); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xd6, + 0x01, 0x41, 0x01, 0x70, 0x01, 0x97, 0x01, 0xd7, 0x02, + 0x11, 0x02, 0x12, 0x02, 0x46, 0x02, 0x7e); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xd7, + 0x02, 0xa0, 0x02, 0xd3, 0x02, 0xf2, 0x03, 0x22, 0x03, + 0x40, 0x03, 0x68, 0x03, 0x7e, 0x03, 0x98); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xd8, 0x03, 0xb9, 0x03, 0xc8); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xd9, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x47, 0x00, 0x60, 0x00, + 0x77, 0x00, 0x9c, 0x00, 0xba, 0x00, 0xea); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xdd, + 0x01, 0x0f, 0x01, 0x48, 0x01, 0x75, 0x01, 0xc0, 0x01, + 0xff, 0x02, 0x00, 0x02, 0x38, 0x02, 0x73); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xde, + 0x02, 0x99, 0x02, 0xcc, 0x02, 0xf2, 0x03, 0x1f, 0x03, + 0x3f, 0x03, 0x64, 0x03, 0x7e, 0x03, 0x9e); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xdf, 0x03, 0xb9, 0x03, 0xc8); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xe0, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x2b, 0x00, 0x44, 0x00, + 0x57, 0x00, 0x7c, 0x00, 0x9a, 0x00, 0xcc); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xe1, + 0x00, 0xf3, 0x01, 0x38, 0x01, 0x6d, 0x01, 0xc0, 0x01, + 0xff, 0x02, 0x00, 0x02, 0x38, 0x02, 0x77); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xe2, + 0x02, 0xa1, 0x02, 0xda, 0x03, 0x02, 0x03, 0x2f, 0x03, + 0x4f, 0x03, 0x74, 0x03, 0x8e, 0x03, 0xae); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xe3, 0x03, 0xc9, 0x03, 0xd8); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xe4, + 0x00, 0x8f, 0x00, 0x91, 0x00, 0x98, 0x00, 0xa6, 0x00, + 0xb2, 0x00, 0xca, 0x00, 0xdf, 0x01, 0x04); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xe5, + 0x01, 0x25, 0x01, 0x60, 0x01, 0x8f, 0x01, 0xd7, 0x02, + 0x11, 0x02, 0x12, 0x02, 0x46, 0x02, 0x82); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xe6, + 0x02, 0xa8, 0x02, 0xe1, 0x03, 0x02, 0x03, 0x32, 0x03, + 0x50, 0x03, 0x78, 0x03, 0x8e, 0x03, 0xa8); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xe7, 0x03, 0xc9, 0x03, 0xd8); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xe8, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x2b, 0x00, 0x44, 0x00, + 0x57, 0x00, 0x7c, 0x00, 0x9a, 0x00, 0xcc); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xe9, + 0x00, 0xf3, 0x01, 0x38, 0x01, 0x6d, 0x01, 0xc0, 0x01, + 0xff, 0x02, 0x00, 0x02, 0x38, 0x02, 0x77); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xea, + 0x02, 0xa1, 0x02, 0xda, 0x03, 0x02, 0x03, 0x2f, 0x03, + 0x4f, 0x03, 0x74, 0x03, 0x8e, 0x03, 0xae); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xeb, 0x03, 0xc9, 0x03, 0xd8); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x03); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb0, 0x00, 0x04, 0x00, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb1, 0x00, 0x00, 0x00, 0x04); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb2, 0x01, 0x00, 0x06, 0x04, 0x00, 0xf5, 0x42); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb3, 0x01, 0x00, 0x05, 0x04, 0x00, 0xf5, 0x42); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xba, 0x85, 0x03, 0x00, 0x04, 0x01, 0xf5, 0x42); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xbb, 0x85, 0x03, 0x00, 0x03, 0x01, 0xf5, 0x42); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x05); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xed, 0xb0); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x05); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb0, 0x03, 0x03, 0x00, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb1, 0x30, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb2, 0x03, 0x01, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb3, 0x82, 0x00, 0x81, 0x38); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb4, 0xd5, 0x75, 0x07, 0x57); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb6, 0x01, 0x00, 0xd5, 0x71, 0x07, 0x57); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xd0, 0x03, 0x05, 0x02, 0x00, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xd1, 0x03, 0x05, 0x06, 0x00, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x06); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb0, 0x17, 0x17, 0x16, 0x16, 0x19); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb1, 0x19, 0x18, 0x18, 0x02, 0x3a); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb2, 0x3a, 0x3a, 0x3d, 0x3d, 0x3d); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb3, 0x03, 0x3d, 0x3d, 0x3d, 0x3d); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb4, 0x3d, 0x3d); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb5, 0x11, 0x11, 0x10, 0x10, 0x13); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb6, 0x13, 0x12, 0x12, 0x00, 0x3a); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb7, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb8, 0x01, 0x3d, 0x3d, 0x3d, 0x3d); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xb9, 0x3d, 0x3d); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xff, 0xaa, 0x55, 0xa5, 0x80); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0x6f, 0x09); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xf7, 0x82); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0x6f, 0x0b); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xf7, 0xe0); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0x6f, 0x08); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0xfc, 0x00); + usleep_range(1000, 2000); + dsi_dcs_write_seq(dsi, 0x62, 0x01); + usleep_range(1000, 2000); + + ret = mipi_dsi_dcs_exit_sleep_mode(dsi); + if (ret < 0) { + dev_err(dev, "Failed to exit sleep mode: %d\n", ret); + return ret; + } + msleep(128); + + ret = mipi_dsi_dcs_set_display_on(dsi); + if (ret < 0) { + dev_err(dev, "Failed to set display on: %d\n", ret); + return ret; + } + msleep(30); + + return 0; +} + +static int jdi_off(struct jdi *ctx) +{ + struct mipi_dsi_device *dsi = ctx->dsi; + struct device *dev = &dsi->dev; + int ret; + + ret = mipi_dsi_dcs_set_display_off(dsi); + if (ret < 0) { + dev_err(dev, "Failed to set display off: %d\n", ret); + return ret; + } + msleep(121); + + ret = mipi_dsi_dcs_enter_sleep_mode(dsi); + if (ret < 0) { + dev_err(dev, "Failed to enter sleep mode: %d\n", ret); + return ret; + } + msleep(100); + + return 0; +} + +static int jdi_prepare(struct drm_panel *panel) +{ + struct jdi *ctx = to_jdi(panel); + struct device *dev = &ctx->dsi->dev; + int ret; + + if (ctx->prepared) + return 0; + + ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies); + if (ret < 0) { + dev_err(dev, "Failed to enable regulators: %d\n", ret); + return ret; + } + + jdi_reset(ctx); + + ret = jdi_on(ctx); + if (ret < 0) { + dev_err(dev, "Failed to initialize panel: %d\n", ret); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); + return ret; + } + + ctx->prepared = true; + return 0; +} + +static int jdi_unprepare(struct drm_panel *panel) +{ + struct jdi *ctx = to_jdi(panel); + struct device *dev = &ctx->dsi->dev; + int ret; + + if (!ctx->prepared) + return 0; + + ret = jdi_off(ctx); + if (ret < 0) + dev_err(dev, "Failed to un-initialize panel: %d\n", ret); + + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); + + ctx->prepared = false; + return 0; +} + +static const struct drm_display_mode jdi_mode = { + .clock = (720 + 72 + 16 + 60) * (1280 + 8 + 4 + 4) * 60 / 1000, + .hdisplay = 720, + .hsync_start = 720 + 72, + .hsync_end = 720 + 72 + 16, + .htotal = 720 + 72 + 16 + 60, + .vdisplay = 1280, + .vsync_start = 1280 + 8, + .vsync_end = 1280 + 8 + 4, + .vtotal = 1280 + 8 + 4 + 4, + .width_mm = 61, + .height_mm = 110, +}; + +static int jdi_get_modes(struct drm_panel *panel, + struct drm_connector *connector) +{ + struct drm_display_mode *mode; + + mode = drm_mode_duplicate(connector->dev, &jdi_mode); + if (!mode) + return -ENOMEM; + + drm_mode_set_name(mode); + + mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; + connector->display_info.width_mm = mode->width_mm; + connector->display_info.height_mm = mode->height_mm; + drm_mode_probed_add(connector, mode); + + return 1; +} + +static const struct drm_panel_funcs jdi_panel_funcs = { + .prepare = jdi_prepare, + .unprepare = jdi_unprepare, + .get_modes = jdi_get_modes, +}; + +static int jdi_probe(struct mipi_dsi_device *dsi) +{ + struct device *dev = &dsi->dev; + struct jdi *ctx; + int ret; + + ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + + ctx->supplies[0].supply = "vsp"; + ctx->supplies[1].supply = "vsn"; + ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx->supplies), + ctx->supplies); + if (ret < 0) + return dev_err_probe(dev, ret, "Failed to get regulators\n"); + + ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(ctx->reset_gpio)) + return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), + "Failed to get reset-gpios\n"); + + ctx->dsi = dsi; + mipi_dsi_set_drvdata(dsi, ctx); + + dsi->lanes = 4; + dsi->format = MIPI_DSI_FMT_RGB888; + dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | + MIPI_DSI_MODE_NO_EOT_PACKET | + MIPI_DSI_CLOCK_NON_CONTINUOUS | MIPI_DSI_MODE_LPM; + + drm_panel_init(&ctx->panel, dev, &jdi_panel_funcs, + DRM_MODE_CONNECTOR_DSI); + + ret = drm_panel_of_backlight(&ctx->panel); + if (ret) + return dev_err_probe(dev, ret, "Failed to get backlight\n"); + + drm_panel_add(&ctx->panel); + + ret = mipi_dsi_attach(dsi); + if (ret < 0) { + dev_err(dev, "Failed to attach to DSI host: %d\n", ret); + drm_panel_remove(&ctx->panel); + return ret; + } + + return 0; +} + +static void jdi_remove(struct mipi_dsi_device *dsi) +{ + struct jdi *ctx = mipi_dsi_get_drvdata(dsi); + int ret; + + ret = mipi_dsi_detach(dsi); + if (ret < 0) + dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); + + drm_panel_remove(&ctx->panel); +} + +static const struct of_device_id jdi_of_match[] = { + { .compatible = "lenovo,phab-jdi_1080p" }, // FIXME + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jdi_of_match); + +static struct mipi_dsi_driver jdi_driver = { + .probe = jdi_probe, + .remove = jdi_remove, + .driver = { + .name = "panel-jdi", + .of_match_table = jdi_of_match, + }, +}; +module_mipi_dsi_driver(jdi_driver); + +MODULE_AUTHOR("linux-mdss-dsi-panel-driver-generator "); // FIXME +MODULE_DESCRIPTION("DRM driver for jdi 1080p video mode dsi panel"); +MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-booyi-otm1287.c b/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-booyi-otm1287.c index 67e256bc409217..2ce138c767d20e 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-booyi-otm1287.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-booyi-otm1287.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-dijing-ili9881c.c b/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-dijing-ili9881c.c index 71cb377a1361a7..d2c76b71059b43 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-dijing-ili9881c.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-dijing-ili9881c.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-harpia-boe.c b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-harpia-boe.c index cc2f2c0548d4db..b709463b0cd997 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-harpia-boe.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-harpia-boe.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-osprey-inx.c b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-osprey-inx.c index 69d6a799c33740..e5682dfaba920a 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-osprey-inx.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-osprey-inx.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-surnia-boe.c b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-surnia-boe.c index 713a77e1bc9e1a..c77ec4c427a449 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-surnia-boe.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-surnia-boe.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061-ams549bu19-id400418.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061-ams549bu19-id400418.c index 3d5302f7593d8b..6f5fb122f405eb 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061-ams549bu19-id400418.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061-ams549bu19-id400418.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061v-ams497ee01.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061v-ams497ee01.c index c1f424e08c1fe2..e782fb3ec6d199 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061v-ams497ee01.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061v-ams497ee01.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-hx8389c-gh9607501a.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-hx8389c-gh9607501a.c index 8945c935db99ff..4bd9d2b946b264 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-hx8389c-gh9607501a.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-hx8389c-gh9607501a.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d78a0-gh9607501a.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d78a0-gh9607501a.c index 7fbd3ae4fef650..e5d0a261a042ab 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d78a0-gh9607501a.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d78a0-gh9607501a.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-lsl080al03.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-lsl080al03.c index d32d9dc571b6e0..0c7772ccfbfd94 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-lsl080al03.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-lsl080al03.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-ltl101at01.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-ltl101at01.c index 9adbeaddd5775f..b32c063d5b1b60 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-ltl101at01.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-ltl101at01.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-sc7798a-bv045wvm.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-sc7798a-bv045wvm.c index 6df5a2069ef0cc..70b412a77a38ae 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-sc7798a-bv045wvm.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-sc7798a-bv045wvm.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-nt35521.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-nt35521.c index c0734006916c31..8cd346a7067f6a 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-nt35521.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-nt35521.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-r61308.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-r61308.c index 70359dd38c6721..34b1f71700ea4d 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-r61308.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-r61308.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-boe-nt35521s.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-boe-nt35521s.c index 072b590bc13102..bfa77f6943825d 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-boe-nt35521s.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-boe-nt35521s.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-ebbg-otm1285a.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-ebbg-otm1285a.c index 1ea2f6b34aec76..4e92205d4b5342 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-ebbg-otm1285a.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-ebbg-otm1285a.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-qimei-ili9881.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-qimei-ili9881.c index 5558b402a508f8..5fa57a3cc4133b 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-qimei-ili9881.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-qimei-ili9881.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-sharp-r69431.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-sharp-r69431.c index 64dfd46ba2b475..74594101798f54 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-sharp-r69431.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-sharp-r69431.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-tianma-hx8394d.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-tianma-hx8394d.c index ff633bbb760c07..dd9bc9320388f9 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-tianma-hx8394d.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-tianma-hx8394d.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-yassy-ili9881.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-yassy-ili9881.c index 796debbad4818b..38fde9ea8308a4 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-yassy-ili9881.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-yassy-ili9881.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME)