On 4/15/2025 3:00 PM, Dmitry Baryshkov wrote: > On 14/04/2025 16:54, Ayushi Makhija wrote: >> On 4/14/2025 3:37 PM, Dmitry Baryshkov wrote: >>> On 14/04/2025 12:56, Ayushi Makhija wrote: >>>> Hi Dmitry, >>>> >>>> On 4/11/2025 1:31 AM, Dmitry Baryshkov wrote: >>>>> On Thu, Apr 10, 2025 at 06:37:54PM +0530, Ayushi Makhija wrote: >>>>>> Hi Dmirity/Konard >>>>>> >>>>>> On 4/7/2025 1:42 AM, Dmitry Baryshkov wrote: >>>>>>> On Fri, Apr 04, 2025 at 05:25:36PM +0530, Ayushi Makhija wrote: >>>>>>>> Add anx7625 DSI to DP bridge device nodes. >>>>>>>> >>>>>>>> Signed-off-by: Ayushi Makhija <quic_amakh...@quicinc.com> >>>>>>>> --- >>>>>>>> arch/arm64/boot/dts/qcom/sa8775p-ride.dtsi | 208 >>>>>>>> ++++++++++++++++++++- >>>>>>>> 1 file changed, 207 insertions(+), 1 deletion(-) >>>>>>>> >>>>>>>> diff --git a/arch/arm64/boot/dts/qcom/sa8775p-ride.dtsi >>>>>>>> b/arch/arm64/boot/dts/qcom/sa8775p-ride.dtsi >>>>>>>> index 175f8b1e3b2d..8e784ccf4138 100644 >>>>>>>> --- a/arch/arm64/boot/dts/qcom/sa8775p-ride.dtsi >>>>>>>> +++ b/arch/arm64/boot/dts/qcom/sa8775p-ride.dtsi >>>>>>>> @@ -28,6 +28,13 @@ chosen { >>>>>>>> stdout-path = "serial0:115200n8"; >>>>>>>> }; >>>>>>>> + vph_pwr: vph-pwr-regulator { >>>>>>>> + compatible = "regulator-fixed"; >>>>>>>> + regulator-name = "vph_pwr"; >>>>>>>> + regulator-always-on; >>>>>>>> + regulator-boot-on; >>>>>>>> + }; >>>>>>>> + >>>>>>>> vreg_conn_1p8: vreg_conn_1p8 { >>>>>>>> compatible = "regulator-fixed"; >>>>>>>> regulator-name = "vreg_conn_1p8"; >>>>>>>> @@ -128,6 +135,30 @@ dp1_connector_in: endpoint { >>>>>>>> }; >>>>>>>> }; >>>>>>>> }; >>>>>>>> + >>>>>>>> + dp-dsi0-connector { >>>>>>>> + compatible = "dp-connector"; >>>>>>>> + label = "DSI0"; >>>>>>>> + type = "full-size"; >>>>>>>> + >>>>>>>> + port { >>>>>>>> + dp_dsi0_connector_in: endpoint { >>>>>>>> + remote-endpoint = <&dsi2dp_bridge0_out>; >>>>>>>> + }; >>>>>>>> + }; >>>>>>>> + }; >>>>>>>> + >>>>>>>> + dp-dsi1-connector { >>>>>>>> + compatible = "dp-connector"; >>>>>>>> + label = "DSI1"; >>>>>>>> + type = "full-size"; >>>>>>>> + >>>>>>>> + port { >>>>>>>> + dp_dsi1_connector_in: endpoint { >>>>>>>> + remote-endpoint = <&dsi2dp_bridge1_out>; >>>>>>>> + }; >>>>>>>> + }; >>>>>>>> + }; >>>>>>>> }; >>>>>>>> &apps_rsc { >>>>>>>> @@ -517,9 +548,135 @@ &i2c11 { >>>>>>>> &i2c18 { >>>>>>>> clock-frequency = <400000>; >>>>>>>> - pinctrl-0 = <&qup_i2c18_default>; >>>>>>>> + pinctrl-0 = <&qup_i2c18_default>, >>>>>>>> + <&io_expander_intr_active>, >>>>>>>> + <&io_expander_reset_active>; >>>>>>> >>>>>>> These pinctrl entries should go to the IO expander itself. >>>>>>> >>>>>>>> pinctrl-names = "default"; >>>>>>>> + >>>>>>>> status = "okay"; >>>>>>>> + >>>>>>>> + io_expander: gpio@74 { >>>>>>>> + compatible = "ti,tca9539"; >>>>>>>> + reg = <0x74>; >>>>>>>> + interrupts-extended = <&tlmm 98 IRQ_TYPE_EDGE_BOTH>; >>>>>>>> + gpio-controller; >>>>>>>> + #gpio-cells = <2>; >>>>>>>> + interrupt-controller; >>>>>>>> + #interrupt-cells = <2>; >>>>>>>> + >>>>>>>> + gpio2-hog { >>>>>>> >>>>>>> This needs a huuge explanation in the commit message. Otherwise I'd say >>>>>>> these pins should likely be used by the corresponding anx bridges. >>>>>> >>>>>> Thanks, for the review. >>>>>> >>>>>> Previously, I was referring to the downstream DT and misunderstood the >>>>>> use of gpio-hog. >>>>>> After reading the schematic, I realized that gpio2, gpio3, gpio10, and >>>>>> gpio11 are all input pins >>>>>> to the IO expander TC9539. We have already configured gpio2 and gpio10 >>>>>> as interrupts in the >>>>>> ANX7625 bridges, so the gpio-hog is not required. It is working without >>>>>> the gpio-hog configuration. >>>>> >>>>> Please make sure that there are pinctrl entries for all pins. >>>>> >>>> >>>> Thanks, for the review. >>>> >>>> While declaring the pinctrl entries inside the io_expander node, I am >>>> getting below error while checking the DTBS check against DT-binding. >>>> >>>> Error : >>>> /local/mnt/workspace/amakhija/linux_next_11042025/linux/arch/arm64/boot/dts/qcom/sa8775p-ride.dtb: >>>> gpio@74: 'dsi0-int-pin-state', 'dsi1-int-pin-state' do not match any of >>>> the regexes: >>>> '^(hog-[0-9]+|.+-hog(-[0-9]+)?)$', 'pinctrl-[0-9]+' from schema >>>> $id: http://devicetree.org/schemas/gpio/gpio-pca95xx.yaml# >>> >>> TCA9539 is a GPIO controller rather than a pinctrl device, so it doesn't >>> use pinctrl functions. You don't need to describe properties of the pins >>> that it provides. However, it can use some pins on its own (like >>> reset-gpios). In such a case corresponding pin should have a pinctrl >>> configuration under its pinctrl device. >>> >> >> Hi Dmitry, >> >> Thanks, for the review. >> >> ______________ _____________________ >> ___________________ >> | | | | >> | | >> | GPIO 98|---ioexp_intr-->| GPIO 0 >> |------Reset--------->|RESET_N | >> | GPIO 97|<--ioexp_reset--| GPIO 1 >> |----power-enable---->|POWER_EN | >> | | | | >> | | >> | SOC | | tca9539 | >> | anx7625 bridge | >> | LeMans | | io_expander | >> | | >> | | | GPIO 2 >> |<----DSI0_INT_1P8_N--|ALERT_N/INTP | >> |______________| |_____________________| >> |___________________| >> >> >> Based on the above connection diagram, I have already configured the >> reset(gpio0), power-enable(gpio1) and interrupt (ALERT_N/INTP) (gpio2) for >> first instance of anx7625 bridge. Similarly I have configured the >> reset(gpio8), power-enable(gpio9) and interrupt (gpio10) for the second >> instance of the anx7625 bridge. >> >> bridge@58 { >> compatible = "analogix,anx7625"; >> reg = <0x58>; >> interrupts-extended = <&io_expander 2 IRQ_TYPE_EDGE_FALLING>; >> enable-gpios = <&io_expander 1 GPIO_ACTIVE_HIGH>; >> reset-gpios = <&io_expander 0 GPIO_ACTIVE_HIGH>; >> >> >> I think above configuration should be fine, we don't need any pinctrl for io >> expander's gpios going to anx7625 bridge. >> >> Other two RESET (gpio97) and INTR (gpio98) gpios, which is connecting SOC to >> io expander (tca9539), I have already declared them under tlmm node. >> >> io_expander_intr_active: io-expander-intr-active-state { >> pins = "gpio98"; >> function = "gpio"; >> drive-strength = <2>; >> bias-disable; >> }; >> >> io_expander_reset_active: io-expander-reset-active-state { >> pins = "gpio97"; >> function = "gpio"; >> drive-strength = <2>; >> bias-disable; >> output-high; > > Yes, this this was I was looking for, thank you. > Hi Dmitry,
Thanks for the clarification. Thanks, Ayushi >> }; >> >> Thanks, >> Ayushi >> >>>> >>>> io_expander: gpio@74 { >>>> compatible = "ti,tca9539"; >>>> reg = <0x74>; >>>> interrupts-extended = <&tlmm 98 IRQ_TYPE_EDGE_BOTH>; >>>> gpio-controller; >>>> #gpio-cells = <2>; >>>> interrupt-controller; >>>> #interrupt-cells = <2>; >>>> >>>> pinctrl-0 = <&io_expander_intr_active>, >>>> <&io_expander_reset_active>; >>>> pinctrl-names = "default"; >>>> >>>> dsi0_int_pin: dsi0-int-pin-state { >>>> pins = "gpio2"; >>>> input-enable; >>>> bias-disable; >>>> }; >>>> >>>> dsi1_int_pin: dsi1-int-pin-state { >>>> pins = "gpio10"; >>>> input-enable; >>>> bias-disable; >>>> }; >>>> >>>> }; >>>> >>>> I couldn't find any devicetree example of tca9539 which is using pinctrl. >>>> The gpio-pca95xx.yaml DT binding does not match with any regex of the >>>> patterns properties. >>>> >>>> Thanks, >>>> Ayushi >>> >>> >> > >