Hardware fix for the screen backlight flicker
#4
My first proposal for the hardware fix would be to revert the backlight circuit changes introduced after the revision 1.0 of PinePhone.

Please, have a look at the attached couple of excerpts from the schematic of two PinePhone revisions, 1.0 and 1.2b.  As a note, all post-1.0 revisions of the PinePhone are exactly the same when it comes to the backlight control circuit.  For the sake of completeness, additional information is available in the Pine64 wiki.

Quite frankly, it makes very little sense to have the feedback of the AP3127B (datasheet) altered by the LCD backlight PWM signal (PH10-LCD-BL-EN), instead of simply driving the CE input of AP3127B with the backlight PWM signal, which is the intended way for using AP3127B.  The post-1.0 backlight circuit actually treats the CE input of AP3128B as "chip enable", driving it with the separate PH10-LCD-BL-EN signal.  However, the currently separate "blacklight enable" is the same as driving the CE input with a 0% PWM signal, which makes PH10-LCD-BL-EN redundant and the proposed hardware fix feasible.

Reverting the backlight circuit changes introduced in the post-1.0 revisions of the PinePhone would be fairly straightforward, but unfortunately may not be easily reversible back to the original PCB state.  In more detail, one of the changes would require a pin of the AP3127B to be unsoldered and lifted, which is the step that would make the reversal troublesome.

It might be possible to leave the aforementioned pin in place, but (if possible at all) that would require significant changes to the DTS file, which would turn the whole hardware fix into a "fork" of the hardware and make the later software support troublesome.  Also, it would make the hardware fix somewhat dangerous if the fixed phone is booted with the unmodified DTS file, because it would result in shorting two GPIO lines that both serve as power/signal outputs.

In short, the list of changes would be as follows:

1. Unsolder R1109, R1117, R1118, R1119, R1120, R1529 and C1110
2. Solder three 0R resistors in the places of R1117, R1118 and R1529
3. Solder a 10K resistor (already removed R1109 may be reused) in the place of C1110
4. Unsolder and lift the pin #4 (EN / CE) of the AP3127B
5. Solder a small piece of wire between the lifted pin #4 and the "left" pad of NC R1120

Of course, small "blobs" of solder may be placed instead of 0R resistors, which would make no new components required for the entire hardware fix.  We can probably not count a small piece of wire as a new component. Smile  Also, there should be no issues caused by the lack of available space.

Depending on the actual PCB layout, it may also be possible to avoid unsoldering and lifting of the pin #4 of AP3127B.  Instead, it would be needed to cut a PCB trace, separating the PH10-LCD-BL-EN signal from the pin #4.  A piece of wire would then be soldered between the "upper" pad of NC R1109 and the "left" pad of NC R1120, which may also look neater.

The DTS file may eventually need to be changed, to adjust the definition of brightness levels (i.e. the PWM duty cycles).  That itself would not be difficult, but it would be much better if no changes would be required at all, so we don't end up with a "fork" of the PinePhone hardware.  However, we would need to give the hardware fix a go, in order to determine the need for any changes to the DTS file.

Thoughts?  Is there a way to make this simpler?



Edit: According to the source of the Linux kernel driver for the screen backlight and the backlight configuration documentation, the  original, unchanged PinePhone DTS file could be used after applying the above-described hardware fix.  This actually means that no new "fork" of the PinePhone hardware would be created by applying the proposed hardware fix, which is very good from the point of retaining software compatibility.

In more detail, the PinePhone DTS file expectedly contains the definition of the "enable-gpios" property, which is according to the post-1.0 backlight circuit.  To turn the screen backlight off, the Linux kernel driver properly applies both 0% PWM duty cycle to the PWM control and drives the enable/disable GPIO line low.  Turning the backlight on is done in a similar way, by applying a non-zero PWM duty cycle and driving the GPIO line high, which is again two separate actions.

In our case, those two separate actions are in fact the same thing, due to the way AP3127B works, so the "enable-gpios" property could be safely left unused (quite literally, dangling), while applying the PWM duty cycle would properly take care of everything.


Attached Files Thumbnail(s)
       
  Reply


Messages In This Thread
RE: Hardware fix for the screen backlight flicker - by dsimic - 03-11-2021, 04:13 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Battery Life- hardware abstraction layer-GPU VS optomizing app for GPU-openGL biketool 1 243 09-20-2024, 04:04 AM
Last Post: Kevin Kofler
  Microphone on Hardware Model 1.2 is Unusably Noisy In Some Circomstances ASmartSuitedSimpleton 4 4,812 03-23-2024, 10:55 AM
Last Post: Ferriah
Tongue Screen ghosting and omitting rows of pixels... bedtime 0 628 12-28-2023, 01:26 PM
Last Post: bedtime
  Replacement screen disconnects after back frame is screwed on robthebold 4 2,242 10-12-2023, 01:03 PM
Last Post: robthebold
  Screen dying already? marcih 153 177,125 02-23-2023, 04:14 AM
Last Post: Shatur
  Screen Replacement Instructions erikkugel 4 4,302 09-07-2022, 11:04 PM
Last Post: RTP
  Is the hardware still being developed and refined? orbital 10 6,683 09-01-2022, 08:05 PM
Last Post: orbital
  Severe screen flicker + occasional ghosting | Pinephone Beta edition legowave440 5 4,406 07-25-2022, 07:35 AM
Last Post: bedtime
  How to check hardware revision? jojuma 1 2,042 07-16-2022, 12:28 AM
Last Post: bokomaru
  Double Image on screen Arvis 2 2,233 07-03-2022, 06:27 AM
Last Post: Avisando

Forum Jump:


Users browsing this thread: 2 Guest(s)