mbox series

[0/5] drm/panel: atna33xc20: Fix the Samsung ATNA45AF01 panel

Message ID 20240710-x1e80100-crd-backlight-v1-0-eb242311a23e@linaro.org
Headers show
Series drm/panel: atna33xc20: Fix the Samsung ATNA45AF01 panel | expand

Message

Stephan Gerhold July 10, 2024, 5:04 p.m. UTC
The backlight of the Samsung ATNA45AF01 panel used in the Qualcomm X1E80100
CRD does not work correctly with the current display panel configuration
and drivers: It works after boot, but once the display gets disabled it is
not possible to get it back on. It turns out that the ATNA45AF01 panel
needs exactly the same non-standard power sequence as implemented for
ATNA33XC20 in the panel-samsung-atna33xc20 driver.

Move the ATNA45AF01 panel from the generic panel-edp driver to the
panel-samsung-atna33xc20 driver and fix the panel configuration in the
x1e80100-crd device tree to make the panel work correctly.

The DT changes are included here for reference and easier testing, I assume
Bjorn or Konrad will pick them up after the DRM panel changes were applied.

Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
---
Stephan Gerhold (5):
      dt-bindings: display: panel: samsung,atna33xc20: Document ATNA45AF01
      drm/panel: samsung-atna33xc20: Add compatible for ATNA45AF01
      Revert "drm/panel-edp: Add SDC ATNA45AF01"
      arm64: dts: qcom: x1e80100-crd: Fix backlight
      arm64: defconfig: Add CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20

 .../bindings/display/panel/samsung,atna33xc20.yaml      |  6 +++++-
 arch/arm64/boot/dts/qcom/x1e80100-crd.dts               | 17 +++++++++++++++--
 arch/arm64/configs/defconfig                            |  1 +
 drivers/gpu/drm/panel/panel-edp.c                       |  2 --
 drivers/gpu/drm/panel/panel-samsung-atna33xc20.c        |  1 +
 5 files changed, 22 insertions(+), 5 deletions(-)
---
base-commit: 523b23f0bee3014a7a752c9bb9f5c54f0eddae88
change-id: 20240710-x1e80100-crd-backlight-632f9bf936ef

Best regards,

Comments

Krzysztof Kozlowski July 11, 2024, 6:27 a.m. UTC | #1
On 10/07/2024 19:35, Doug Anderson wrote:
> Hi,
> 
> On Wed, Jul 10, 2024 at 10:05 AM Stephan Gerhold
> <stephan.gerhold@linaro.org> wrote:
>>
>> The Samsung ATNA45AF01 panel is an AMOLED eDP panel that has backlight
>> control over the DP AUX channel. While it works almost correctly with the
>> generic "edp-panel" compatible, the backlight needs special handling to
>> work correctly. It is similar to the existing ATNA33XC20 panel, just with
>> a larger resolution and size.
>>
>> Add a new "samsung,atna45af01" compatible to describe this panel in the DT.
>>
>> Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
>> ---
>>  .../devicetree/bindings/display/panel/samsung,atna33xc20.yaml       | 6 +++++-
>>  1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/Documentation/devicetree/bindings/display/panel/samsung,atna33xc20.yaml b/Documentation/devicetree/bindings/display/panel/samsung,atna33xc20.yaml
>> index 765ca155c83a..d668e8d0d296 100644
>> --- a/Documentation/devicetree/bindings/display/panel/samsung,atna33xc20.yaml
>> +++ b/Documentation/devicetree/bindings/display/panel/samsung,atna33xc20.yaml
>> @@ -14,7 +14,11 @@ allOf:
>>
>>  properties:
>>    compatible:
>> -    const: samsung,atna33xc20
>> +    enum:
>> +      # Samsung 13.3" FHD (1920x1080 pixels) eDP AMOLED panel
>> +      - samsung,atna33xc20
>> +      # Samsung 14.5" WQXGA+ (2880x1800 pixels) eDP AMOLED panel
>> +      - samsung,atna45af01
> 
> Seems OK, but a few thoughts:
> 
> 1. Is it worth renaming this file? Something like
> "samsung,atna-oled-panel.yaml"? I'd be interested in DT maintainer
> folks' opinions here.

No, rather keep existing name, because it should be based on compatible.

Best regards,
Krzysztof
Stephan Gerhold July 12, 2024, 10:11 a.m. UTC | #2
On Wed, Jul 10, 2024 at 12:16:58PM -0700, Doug Anderson wrote:
> On Wed, Jul 10, 2024 at 12:03 PM Stephan Gerhold
> <stephan.gerhold@linaro.org> wrote:
> >
> > > 2. In theory you could make your compatible look like this:
> > >
> > > compatible = "samsung,atna45af01", "samsung,atna33xc20"
> > >
> > > ...which would say "I have a 45af01 but if the OS doesn't have
> > > anything special to do that it would be fine to use the 33xc20
> > > driver". That would allow device trees to work without the kernel
> > > changes and would allow you to land the DT changes in parallel with
> > > the driver changes and things would keep working.
> > >
> > > ...and, in fact, that would mean you _didn't_ need to add the new
> > > compatible string to the driver, which is nice.
> > >
> >
> > Yeah, I considered this. I mentioned the reason why I decided against
> > this in patch 2:
> >
> > > While ATNA45AF01 would also work with "samsung,atna33xc20" as a fallback
> > > compatible, the original submission of the compatible in commit
> > > 4bfe6c8f7c23 ("drm/panel-simple: Add Samsung ATNA33XC20") had the timings
> > > and resolution hardcoded. These would not work for ATNA45AF01.
> >
> > Basically, it works with the current driver. But if you would run the
> > kernel at the state of the original submission then it would behave
> > incorrectly. This is why I considered the resolution and timings to be
> > part of the "samsung,atna33xc20" "ABI". The new panel would not be
> > compatible with that.
> 
> Ah, oops. My eyes totally glazed over the description since the patch
> was so simple. :-P Sorry about that.
> 
> IMO I'd still prefer using the fallback compatible, but happy to hear
> other opinions. In the original commit things were pretty broken still
> (sorta like how it's broken for you using "edp-panel") and the
> resolution hasn't been hardcoded for a long while...

I briefly discussed this with Krzysztof on IRC yesterday and we
concluded that a fallback compatible is better. If one considers just
the non-discoverable part of the interface for the binding (i.e. the
non-standard power sequence), then the two panels are indeed compatible.

I will send a v2 with the fallback compatible on Monday. I think this
can also simplify backporting the backlight fix as you mentioned, since
then no driver change is required to make it work.

Thanks,
Stephan