Thread (49 messages) 49 messages, 6 authors, 2021-11-28

Re: [PATCH v2 15/20] i2c: cht-wc: Make charger i2c-client instantiation board/device-model specific

From: Andy Shevchenko <hidden>
Date: 2021-11-16 11:22:39
Also in: linux-acpi, linux-efi, linux-i2c, lkml, platform-driver-x86

On Sun, Nov 14, 2021 at 7:04 PM Hans de Goede [off-list ref] wrote:
The i2c-controller on the Cherry Trail - Whiskey Cove PMIC is special
in that it is always connected to the I2C charger IC of the board on
which the PMIC is used; and the charger IC is not described in ACPI,
so the i2c-cht-wc code needs to instantiate an i2c-client for it itself.

So far this was hardcoded to instantiate an i2c-client for the
bq24292i, with all properties, etc. set to match how this charger
is used on the GPD win and GPD pcoket devices.
"pocket" I believe?
There is a rudimentary check to make sure the ACPI tables are at least
somewhat as expected, but this is far from accurate, leading to
a wrong i2c-client being instantiated for the charger on some boards.

Switch to the new DMI based intel_cht_wc_get_model() helper which is
exported by the MFD driver for the CHT Whiskey Cove PMIC to help PMIC
cell drivers like the i2c-cht-wc code reliably detect which board
they are running on.

And add board_info for the charger ICs as found on the other 2 known
boards with a Whisky Cove PMIC.

This has been tested on all 3 known boards.
...
+/********** Lenovo Yogabook YB1-X90F/-X91F/-X91L charger settings **********/
+static const char * const lenovo_yb1_bq25892_suppliers[] = {
+       "cht_wcove_pwrsrc" };
Something went wrong with indentation...

...
+       /*
+        * The firmware sets everything to the defaults, which leads to a
+        * somewhat low charge-current of 2048mA and worse to a batter-voltage
battery?
+        * of 4.2V instead of 4.35V (when booted without a charger connected).
+        * Use our own values instead of "linux,read-back-settings" to fix this.
+        */
...
+       switch (intel_cht_wc_get_model()) {
+       case INTEL_CHT_WC_GPD_WIN_POCKET:
+               board_info = &gpd_win_board_info;
+               break;
+       case INTEL_CHT_WC_XIAOMI_MIPAD2:
+               board_info = &xiaomi_mipad2_board_info;
+               break;
+       case INTEL_CHT_WC_LENOVO_YOGABOOK1:
+               board_info = &lenovo_yogabook1_board_info;
+               break;
+       default:
+               dev_warn(&pdev->dev, "Unknown model, not instantiating charger device\n");
break;
+       }
-- 
With Best Regards,
Andy Shevchenko
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help