Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
On Fri, 2017-07-21 at 20:41 +0200, Hans de Goede wrote: > On 18-07-17 09:17, Lee Jones wrote: > > On Mon, 17 Jul 2017, Andy Shevchenko wrote: > > > > > On Mon, 2017-07-17 at 11:59 +0100, Lee Jones wrote: > > > > On Sat, 01 Jul 2017, Hans de Goede wrote: > > > > > > > > > Reported-and-tested-by: russianneuromancer > > > > >> > > > > > > > > > > > > Real names only please. > > > > > > > > What is the name of this reporter/tester? > > > > > > No one knows, I think. > > > > Then I don't think we can credit him/her for their efforts. > > SubmittingPatches clearly states "no pseudonyms or anonymous > > contributions". Either write to them and ask for their real name so > > that they can be credited, or remove the line. > > russianneuromancer has been a great help with reporting and testing > many Bay Trail / Cherry Trail issues. He does not want to use his > real name. > > AFAIK the Real Name rule only applies tot he Signed-off-by tag, no > other subsys-maintainers have had problems with listing him as > reporter / tester using his alias. > > The Real Name only rule is part of "11) Sign your work — the > Developer’s Certificate of Origin" of : > > https://www.kernel.org/doc/html/latest/process/submitting-patches.html > #sign-your-work-the-developer-s-certificate-of-origin > > Which is all about the S-o-b tag. If you despite this still want > a new version with russianneuromancer's Reported-and-tested-by > dropped let me know and I will send a new version. I saw some patches applied just with email in tags like Reported-by. So, I think everyone will be okay if you remove nick and leave email only. -- Andy Shevchenko Intel Finland Oy
Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
On Fri, 2017-07-21 at 20:41 +0200, Hans de Goede wrote: > On 18-07-17 09:17, Lee Jones wrote: > > On Mon, 17 Jul 2017, Andy Shevchenko wrote: > > > > > On Mon, 2017-07-17 at 11:59 +0100, Lee Jones wrote: > > > > On Sat, 01 Jul 2017, Hans de Goede wrote: > > > > > > > > > Reported-and-tested-by: russianneuromancer > > > > > > > > > > > > > > > > > > Real names only please. > > > > > > > > What is the name of this reporter/tester? > > > > > > No one knows, I think. > > > > Then I don't think we can credit him/her for their efforts. > > SubmittingPatches clearly states "no pseudonyms or anonymous > > contributions". Either write to them and ask for their real name so > > that they can be credited, or remove the line. > > russianneuromancer has been a great help with reporting and testing > many Bay Trail / Cherry Trail issues. He does not want to use his > real name. > > AFAIK the Real Name rule only applies tot he Signed-off-by tag, no > other subsys-maintainers have had problems with listing him as > reporter / tester using his alias. > > The Real Name only rule is part of "11) Sign your work — the > Developer’s Certificate of Origin" of : > > https://www.kernel.org/doc/html/latest/process/submitting-patches.html > #sign-your-work-the-developer-s-certificate-of-origin > > Which is all about the S-o-b tag. If you despite this still want > a new version with russianneuromancer's Reported-and-tested-by > dropped let me know and I will send a new version. I saw some patches applied just with email in tags like Reported-by. So, I think everyone will be okay if you remove nick and leave email only. -- Andy Shevchenko Intel Finland Oy
Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
Hi, On 18-07-17 09:17, Lee Jones wrote: On Mon, 17 Jul 2017, Andy Shevchenko wrote: On Mon, 2017-07-17 at 11:59 +0100, Lee Jones wrote: On Sat, 01 Jul 2017, Hans de Goede wrote: Both Bay and Cherry Trail devices may be used together with a Crystal Cove PMIC. Each platform has its own variant of the PMIC, which both use the same ACPI HID, but they are not 100% compatible. This commits makes the intel_soc_pmic_core code check the _HRV of the ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. intel_soc_pmic_config_cht_crc based on this. This fixes the Bay Trail specific ACPI OpRegion code causing problems on Cherry Trail devices. Specifically this was causing the external microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not work and the eMMC to become unreliable and throw lots of errors. Reported-and-tested-by: russianneuromancer
Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
Hi, On 18-07-17 09:17, Lee Jones wrote: On Mon, 17 Jul 2017, Andy Shevchenko wrote: On Mon, 2017-07-17 at 11:59 +0100, Lee Jones wrote: On Sat, 01 Jul 2017, Hans de Goede wrote: Both Bay and Cherry Trail devices may be used together with a Crystal Cove PMIC. Each platform has its own variant of the PMIC, which both use the same ACPI HID, but they are not 100% compatible. This commits makes the intel_soc_pmic_core code check the _HRV of the ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. intel_soc_pmic_config_cht_crc based on this. This fixes the Bay Trail specific ACPI OpRegion code causing problems on Cherry Trail devices. Specifically this was causing the external microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not work and the eMMC to become unreliable and throw lots of errors. Reported-and-tested-by: russianneuromancer Real names only please. What is the name of this reporter/tester? No one knows, I think. Then I don't think we can credit him/her for their efforts. SubmittingPatches clearly states "no pseudonyms or anonymous contributions". Either write to them and ask for their real name so that they can be credited, or remove the line. russianneuromancer has been a great help with reporting and testing many Bay Trail / Cherry Trail issues. He does not want to use his real name. AFAIK the Real Name rule only applies tot he Signed-off-by tag, no other subsys-maintainers have had problems with listing him as reporter / tester using his alias. The Real Name only rule is part of "11) Sign your work — the Developer’s Certificate of Origin" of : https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin Which is all about the S-o-b tag. If you despite this still want a new version with russianneuromancer's Reported-and-tested-by dropped let me know and I will send a new version. Regards, Hans
Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
On Mon, 17 Jul 2017, Andy Shevchenko wrote: > On Mon, 2017-07-17 at 11:59 +0100, Lee Jones wrote: > > On Sat, 01 Jul 2017, Hans de Goede wrote: > > > > > Both Bay and Cherry Trail devices may be used together with a > > > Crystal Cove > > > PMIC. Each platform has its own variant of the PMIC, which both use > > > the > > > same ACPI HID, but they are not 100% compatible. > > > > > > This commits makes the intel_soc_pmic_core code check the _HRV of > > > the > > > ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. > > > intel_soc_pmic_config_cht_crc based on this. > > > > > > This fixes the Bay Trail specific ACPI OpRegion code causing > > > problems > > > on Cherry Trail devices. Specifically this was causing the external > > > microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not > > > work > > > and the eMMC to become unreliable and throw lots of errors. > > > > > > Reported-and-tested-by: russianneuromancer> > > > > > > Real names only please. > > > > What is the name of this reporter/tester? > > No one knows, I think. Then I don't think we can credit him/her for their efforts. SubmittingPatches clearly states "no pseudonyms or anonymous contributions". Either write to them and ask for their real name so that they can be credited, or remove the line. -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
On Mon, 17 Jul 2017, Andy Shevchenko wrote: > On Mon, 2017-07-17 at 11:59 +0100, Lee Jones wrote: > > On Sat, 01 Jul 2017, Hans de Goede wrote: > > > > > Both Bay and Cherry Trail devices may be used together with a > > > Crystal Cove > > > PMIC. Each platform has its own variant of the PMIC, which both use > > > the > > > same ACPI HID, but they are not 100% compatible. > > > > > > This commits makes the intel_soc_pmic_core code check the _HRV of > > > the > > > ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. > > > intel_soc_pmic_config_cht_crc based on this. > > > > > > This fixes the Bay Trail specific ACPI OpRegion code causing > > > problems > > > on Cherry Trail devices. Specifically this was causing the external > > > microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not > > > work > > > and the eMMC to become unreliable and throw lots of errors. > > > > > > Reported-and-tested-by: russianneuromancer > > > > > > > Real names only please. > > > > What is the name of this reporter/tester? > > No one knows, I think. Then I don't think we can credit him/her for their efforts. SubmittingPatches clearly states "no pseudonyms or anonymous contributions". Either write to them and ask for their real name so that they can be credited, or remove the line. -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
On Mon, 2017-07-17 at 11:59 +0100, Lee Jones wrote: > On Sat, 01 Jul 2017, Hans de Goede wrote: > > > Both Bay and Cherry Trail devices may be used together with a > > Crystal Cove > > PMIC. Each platform has its own variant of the PMIC, which both use > > the > > same ACPI HID, but they are not 100% compatible. > > > > This commits makes the intel_soc_pmic_core code check the _HRV of > > the > > ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. > > intel_soc_pmic_config_cht_crc based on this. > > > > This fixes the Bay Trail specific ACPI OpRegion code causing > > problems > > on Cherry Trail devices. Specifically this was causing the external > > microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not > > work > > and the eMMC to become unreliable and throw lots of errors. > > > > Reported-and-tested-by: russianneuromancer> > > > Real names only please. > > What is the name of this reporter/tester? No one knows, I think. -- Andy Shevchenko Intel Finland Oy
Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
On Mon, 2017-07-17 at 11:59 +0100, Lee Jones wrote: > On Sat, 01 Jul 2017, Hans de Goede wrote: > > > Both Bay and Cherry Trail devices may be used together with a > > Crystal Cove > > PMIC. Each platform has its own variant of the PMIC, which both use > > the > > same ACPI HID, but they are not 100% compatible. > > > > This commits makes the intel_soc_pmic_core code check the _HRV of > > the > > ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. > > intel_soc_pmic_config_cht_crc based on this. > > > > This fixes the Bay Trail specific ACPI OpRegion code causing > > problems > > on Cherry Trail devices. Specifically this was causing the external > > microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not > > work > > and the eMMC to become unreliable and throw lots of errors. > > > > Reported-and-tested-by: russianneuromancer > > > > Real names only please. > > What is the name of this reporter/tester? No one knows, I think. -- Andy Shevchenko Intel Finland Oy
Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
On Sat, 01 Jul 2017, Hans de Goede wrote: > Both Bay and Cherry Trail devices may be used together with a Crystal Cove > PMIC. Each platform has its own variant of the PMIC, which both use the > same ACPI HID, but they are not 100% compatible. > > This commits makes the intel_soc_pmic_core code check the _HRV of the > ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. > intel_soc_pmic_config_cht_crc based on this. > > This fixes the Bay Trail specific ACPI OpRegion code causing problems > on Cherry Trail devices. Specifically this was causing the external > microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not work > and the eMMC to become unreliable and throw lots of errors. > > Reported-and-tested-by: russianneuromancerReal names only please. What is the name of this reporter/tester? > Signed-off-by: Hans de Goede > --- > drivers/mfd/Kconfig | 4 ++-- > drivers/mfd/intel_soc_pmic_core.c | 34 -- > 2 files changed, 30 insertions(+), 8 deletions(-) Code looks okay though: For my own reference: Acked-for-MFD-by: Lee Jones -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
On Sat, 01 Jul 2017, Hans de Goede wrote: > Both Bay and Cherry Trail devices may be used together with a Crystal Cove > PMIC. Each platform has its own variant of the PMIC, which both use the > same ACPI HID, but they are not 100% compatible. > > This commits makes the intel_soc_pmic_core code check the _HRV of the > ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. > intel_soc_pmic_config_cht_crc based on this. > > This fixes the Bay Trail specific ACPI OpRegion code causing problems > on Cherry Trail devices. Specifically this was causing the external > microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not work > and the eMMC to become unreliable and throw lots of errors. > > Reported-and-tested-by: russianneuromancer Real names only please. What is the name of this reporter/tester? > Signed-off-by: Hans de Goede > --- > drivers/mfd/Kconfig | 4 ++-- > drivers/mfd/intel_soc_pmic_core.c | 34 -- > 2 files changed, 30 insertions(+), 8 deletions(-) Code looks okay though: For my own reference: Acked-for-MFD-by: Lee Jones -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
On Sat, Jul 1, 2017 at 1:13 PM, Hans de Goedewrote: > Both Bay and Cherry Trail devices may be used together with a Crystal Cove > PMIC. Each platform has its own variant of the PMIC, which both use the > same ACPI HID, but they are not 100% compatible. > > This commits makes the intel_soc_pmic_core code check the _HRV of the > ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. > intel_soc_pmic_config_cht_crc based on this. > > This fixes the Bay Trail specific ACPI OpRegion code causing problems > on Cherry Trail devices. Specifically this was causing the external > microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not work > and the eMMC to become unreliable and throw lots of errors. > Fine to me Reviewed-by: Andy Shevchenko > Reported-and-tested-by: russianneuromancer > Signed-off-by: Hans de Goede > --- > drivers/mfd/Kconfig | 4 ++-- > drivers/mfd/intel_soc_pmic_core.c | 34 -- > 2 files changed, 30 insertions(+), 8 deletions(-) > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > index 44e7164b5063..8533cb46a875 100644 > --- a/drivers/mfd/Kconfig > +++ b/drivers/mfd/Kconfig > @@ -448,12 +448,12 @@ config LPC_SCH > > config INTEL_SOC_PMIC > bool "Support for Crystal Cove PMIC" > - depends on HAS_IOMEM && I2C=y && GPIOLIB && COMMON_CLK > + depends on ACPI && HAS_IOMEM && I2C=y && GPIOLIB && COMMON_CLK > depends on X86 || COMPILE_TEST > select MFD_CORE > select REGMAP_I2C > select REGMAP_IRQ > - select I2C_DESIGNWARE_PLATFORM if ACPI > + select I2C_DESIGNWARE_PLATFORM > help > Select this option to enable support for Crystal Cove PMIC > on some Intel SoC systems. The PMIC provides ADC, GPIO, > diff --git a/drivers/mfd/intel_soc_pmic_core.c > b/drivers/mfd/intel_soc_pmic_core.c > index 2234a847370a..36adf9e8153e 100644 > --- a/drivers/mfd/intel_soc_pmic_core.c > +++ b/drivers/mfd/intel_soc_pmic_core.c > @@ -16,6 +16,7 @@ > * Author: Zhu, Lejun > */ > > +#include > #include > #include > #include > @@ -28,6 +29,10 @@ > #include > #include "intel_soc_pmic_core.h" > > +/* Crystal Cove PMIC shares same ACPI ID between different platforms */ > +#define BYT_CRC_HRV2 > +#define CHT_CRC_HRV3 > + > /* Lookup table for the Panel Enable/Disable line as GPIO signals */ > static struct gpiod_lookup_table panel_gpio_table = { > /* Intel GFX is consumer */ > @@ -48,16 +53,33 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client > *i2c, > const struct i2c_device_id *i2c_id) > { > struct device *dev = >dev; > - const struct acpi_device_id *id; > struct intel_soc_pmic_config *config; > struct intel_soc_pmic *pmic; > + unsigned long long hrv; > + acpi_status status; > int ret; > > - id = acpi_match_device(dev->driver->acpi_match_table, dev); > - if (!id || !id->driver_data) > + /* > +* There are 2 different Crystal Cove PMICs a Bay Trail and Cherry > +* Trail version, use _HRV to differentiate between the 2. > +*/ > + status = acpi_evaluate_integer(ACPI_HANDLE(dev), "_HRV", NULL, ); > + if (ACPI_FAILURE(status)) { > + dev_err(dev, "Failed to get PMIC hardware revision\n"); > return -ENODEV; > - > - config = (struct intel_soc_pmic_config *)id->driver_data; > + } > + > + switch (hrv) { > + case BYT_CRC_HRV: > + config = _soc_pmic_config_byt_crc; > + break; > + case CHT_CRC_HRV: > + config = _soc_pmic_config_cht_crc; > + break; > + default: > + dev_warn(dev, "Unknown hardware rev %llu, assuming BYT\n", > hrv); > + config = _soc_pmic_config_byt_crc; > + } > > pmic = devm_kzalloc(dev, sizeof(*pmic), GFP_KERNEL); > if (!pmic) > @@ -157,7 +179,7 @@ MODULE_DEVICE_TABLE(i2c, intel_soc_pmic_i2c_id); > > #if defined(CONFIG_ACPI) > static const struct acpi_device_id intel_soc_pmic_acpi_match[] = { > - {"INT33FD", (kernel_ulong_t)_soc_pmic_config_byt_crc}, > + { "INT33FD" }, > { }, > }; > MODULE_DEVICE_TABLE(acpi, intel_soc_pmic_acpi_match); > -- > 2.13.0 > -- With Best Regards, Andy Shevchenko
Re: [PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
On Sat, Jul 1, 2017 at 1:13 PM, Hans de Goede wrote: > Both Bay and Cherry Trail devices may be used together with a Crystal Cove > PMIC. Each platform has its own variant of the PMIC, which both use the > same ACPI HID, but they are not 100% compatible. > > This commits makes the intel_soc_pmic_core code check the _HRV of the > ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. > intel_soc_pmic_config_cht_crc based on this. > > This fixes the Bay Trail specific ACPI OpRegion code causing problems > on Cherry Trail devices. Specifically this was causing the external > microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not work > and the eMMC to become unreliable and throw lots of errors. > Fine to me Reviewed-by: Andy Shevchenko > Reported-and-tested-by: russianneuromancer > Signed-off-by: Hans de Goede > --- > drivers/mfd/Kconfig | 4 ++-- > drivers/mfd/intel_soc_pmic_core.c | 34 -- > 2 files changed, 30 insertions(+), 8 deletions(-) > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > index 44e7164b5063..8533cb46a875 100644 > --- a/drivers/mfd/Kconfig > +++ b/drivers/mfd/Kconfig > @@ -448,12 +448,12 @@ config LPC_SCH > > config INTEL_SOC_PMIC > bool "Support for Crystal Cove PMIC" > - depends on HAS_IOMEM && I2C=y && GPIOLIB && COMMON_CLK > + depends on ACPI && HAS_IOMEM && I2C=y && GPIOLIB && COMMON_CLK > depends on X86 || COMPILE_TEST > select MFD_CORE > select REGMAP_I2C > select REGMAP_IRQ > - select I2C_DESIGNWARE_PLATFORM if ACPI > + select I2C_DESIGNWARE_PLATFORM > help > Select this option to enable support for Crystal Cove PMIC > on some Intel SoC systems. The PMIC provides ADC, GPIO, > diff --git a/drivers/mfd/intel_soc_pmic_core.c > b/drivers/mfd/intel_soc_pmic_core.c > index 2234a847370a..36adf9e8153e 100644 > --- a/drivers/mfd/intel_soc_pmic_core.c > +++ b/drivers/mfd/intel_soc_pmic_core.c > @@ -16,6 +16,7 @@ > * Author: Zhu, Lejun > */ > > +#include > #include > #include > #include > @@ -28,6 +29,10 @@ > #include > #include "intel_soc_pmic_core.h" > > +/* Crystal Cove PMIC shares same ACPI ID between different platforms */ > +#define BYT_CRC_HRV2 > +#define CHT_CRC_HRV3 > + > /* Lookup table for the Panel Enable/Disable line as GPIO signals */ > static struct gpiod_lookup_table panel_gpio_table = { > /* Intel GFX is consumer */ > @@ -48,16 +53,33 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client > *i2c, > const struct i2c_device_id *i2c_id) > { > struct device *dev = >dev; > - const struct acpi_device_id *id; > struct intel_soc_pmic_config *config; > struct intel_soc_pmic *pmic; > + unsigned long long hrv; > + acpi_status status; > int ret; > > - id = acpi_match_device(dev->driver->acpi_match_table, dev); > - if (!id || !id->driver_data) > + /* > +* There are 2 different Crystal Cove PMICs a Bay Trail and Cherry > +* Trail version, use _HRV to differentiate between the 2. > +*/ > + status = acpi_evaluate_integer(ACPI_HANDLE(dev), "_HRV", NULL, ); > + if (ACPI_FAILURE(status)) { > + dev_err(dev, "Failed to get PMIC hardware revision\n"); > return -ENODEV; > - > - config = (struct intel_soc_pmic_config *)id->driver_data; > + } > + > + switch (hrv) { > + case BYT_CRC_HRV: > + config = _soc_pmic_config_byt_crc; > + break; > + case CHT_CRC_HRV: > + config = _soc_pmic_config_cht_crc; > + break; > + default: > + dev_warn(dev, "Unknown hardware rev %llu, assuming BYT\n", > hrv); > + config = _soc_pmic_config_byt_crc; > + } > > pmic = devm_kzalloc(dev, sizeof(*pmic), GFP_KERNEL); > if (!pmic) > @@ -157,7 +179,7 @@ MODULE_DEVICE_TABLE(i2c, intel_soc_pmic_i2c_id); > > #if defined(CONFIG_ACPI) > static const struct acpi_device_id intel_soc_pmic_acpi_match[] = { > - {"INT33FD", (kernel_ulong_t)_soc_pmic_config_byt_crc}, > + { "INT33FD" }, > { }, > }; > MODULE_DEVICE_TABLE(acpi, intel_soc_pmic_acpi_match); > -- > 2.13.0 > -- With Best Regards, Andy Shevchenko
[PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
Both Bay and Cherry Trail devices may be used together with a Crystal Cove PMIC. Each platform has its own variant of the PMIC, which both use the same ACPI HID, but they are not 100% compatible. This commits makes the intel_soc_pmic_core code check the _HRV of the ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. intel_soc_pmic_config_cht_crc based on this. This fixes the Bay Trail specific ACPI OpRegion code causing problems on Cherry Trail devices. Specifically this was causing the external microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not work and the eMMC to become unreliable and throw lots of errors. Reported-and-tested-by: russianneuromancerSigned-off-by: Hans de Goede --- drivers/mfd/Kconfig | 4 ++-- drivers/mfd/intel_soc_pmic_core.c | 34 -- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 44e7164b5063..8533cb46a875 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -448,12 +448,12 @@ config LPC_SCH config INTEL_SOC_PMIC bool "Support for Crystal Cove PMIC" - depends on HAS_IOMEM && I2C=y && GPIOLIB && COMMON_CLK + depends on ACPI && HAS_IOMEM && I2C=y && GPIOLIB && COMMON_CLK depends on X86 || COMPILE_TEST select MFD_CORE select REGMAP_I2C select REGMAP_IRQ - select I2C_DESIGNWARE_PLATFORM if ACPI + select I2C_DESIGNWARE_PLATFORM help Select this option to enable support for Crystal Cove PMIC on some Intel SoC systems. The PMIC provides ADC, GPIO, diff --git a/drivers/mfd/intel_soc_pmic_core.c b/drivers/mfd/intel_soc_pmic_core.c index 2234a847370a..36adf9e8153e 100644 --- a/drivers/mfd/intel_soc_pmic_core.c +++ b/drivers/mfd/intel_soc_pmic_core.c @@ -16,6 +16,7 @@ * Author: Zhu, Lejun */ +#include #include #include #include @@ -28,6 +29,10 @@ #include #include "intel_soc_pmic_core.h" +/* Crystal Cove PMIC shares same ACPI ID between different platforms */ +#define BYT_CRC_HRV2 +#define CHT_CRC_HRV3 + /* Lookup table for the Panel Enable/Disable line as GPIO signals */ static struct gpiod_lookup_table panel_gpio_table = { /* Intel GFX is consumer */ @@ -48,16 +53,33 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *i2c_id) { struct device *dev = >dev; - const struct acpi_device_id *id; struct intel_soc_pmic_config *config; struct intel_soc_pmic *pmic; + unsigned long long hrv; + acpi_status status; int ret; - id = acpi_match_device(dev->driver->acpi_match_table, dev); - if (!id || !id->driver_data) + /* +* There are 2 different Crystal Cove PMICs a Bay Trail and Cherry +* Trail version, use _HRV to differentiate between the 2. +*/ + status = acpi_evaluate_integer(ACPI_HANDLE(dev), "_HRV", NULL, ); + if (ACPI_FAILURE(status)) { + dev_err(dev, "Failed to get PMIC hardware revision\n"); return -ENODEV; - - config = (struct intel_soc_pmic_config *)id->driver_data; + } + + switch (hrv) { + case BYT_CRC_HRV: + config = _soc_pmic_config_byt_crc; + break; + case CHT_CRC_HRV: + config = _soc_pmic_config_cht_crc; + break; + default: + dev_warn(dev, "Unknown hardware rev %llu, assuming BYT\n", hrv); + config = _soc_pmic_config_byt_crc; + } pmic = devm_kzalloc(dev, sizeof(*pmic), GFP_KERNEL); if (!pmic) @@ -157,7 +179,7 @@ MODULE_DEVICE_TABLE(i2c, intel_soc_pmic_i2c_id); #if defined(CONFIG_ACPI) static const struct acpi_device_id intel_soc_pmic_acpi_match[] = { - {"INT33FD", (kernel_ulong_t)_soc_pmic_config_byt_crc}, + { "INT33FD" }, { }, }; MODULE_DEVICE_TABLE(acpi, intel_soc_pmic_acpi_match); -- 2.13.0
[PATCH 2/2] mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants
Both Bay and Cherry Trail devices may be used together with a Crystal Cove PMIC. Each platform has its own variant of the PMIC, which both use the same ACPI HID, but they are not 100% compatible. This commits makes the intel_soc_pmic_core code check the _HRV of the ACPI-firmware-node and selects intel_soc_pmic_config_byt_crc resp. intel_soc_pmic_config_cht_crc based on this. This fixes the Bay Trail specific ACPI OpRegion code causing problems on Cherry Trail devices. Specifically this was causing the external microsd slot on a Dell Venue 8 5855 (Cherry Trail version) to not work and the eMMC to become unreliable and throw lots of errors. Reported-and-tested-by: russianneuromancer Signed-off-by: Hans de Goede --- drivers/mfd/Kconfig | 4 ++-- drivers/mfd/intel_soc_pmic_core.c | 34 -- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 44e7164b5063..8533cb46a875 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -448,12 +448,12 @@ config LPC_SCH config INTEL_SOC_PMIC bool "Support for Crystal Cove PMIC" - depends on HAS_IOMEM && I2C=y && GPIOLIB && COMMON_CLK + depends on ACPI && HAS_IOMEM && I2C=y && GPIOLIB && COMMON_CLK depends on X86 || COMPILE_TEST select MFD_CORE select REGMAP_I2C select REGMAP_IRQ - select I2C_DESIGNWARE_PLATFORM if ACPI + select I2C_DESIGNWARE_PLATFORM help Select this option to enable support for Crystal Cove PMIC on some Intel SoC systems. The PMIC provides ADC, GPIO, diff --git a/drivers/mfd/intel_soc_pmic_core.c b/drivers/mfd/intel_soc_pmic_core.c index 2234a847370a..36adf9e8153e 100644 --- a/drivers/mfd/intel_soc_pmic_core.c +++ b/drivers/mfd/intel_soc_pmic_core.c @@ -16,6 +16,7 @@ * Author: Zhu, Lejun */ +#include #include #include #include @@ -28,6 +29,10 @@ #include #include "intel_soc_pmic_core.h" +/* Crystal Cove PMIC shares same ACPI ID between different platforms */ +#define BYT_CRC_HRV2 +#define CHT_CRC_HRV3 + /* Lookup table for the Panel Enable/Disable line as GPIO signals */ static struct gpiod_lookup_table panel_gpio_table = { /* Intel GFX is consumer */ @@ -48,16 +53,33 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *i2c_id) { struct device *dev = >dev; - const struct acpi_device_id *id; struct intel_soc_pmic_config *config; struct intel_soc_pmic *pmic; + unsigned long long hrv; + acpi_status status; int ret; - id = acpi_match_device(dev->driver->acpi_match_table, dev); - if (!id || !id->driver_data) + /* +* There are 2 different Crystal Cove PMICs a Bay Trail and Cherry +* Trail version, use _HRV to differentiate between the 2. +*/ + status = acpi_evaluate_integer(ACPI_HANDLE(dev), "_HRV", NULL, ); + if (ACPI_FAILURE(status)) { + dev_err(dev, "Failed to get PMIC hardware revision\n"); return -ENODEV; - - config = (struct intel_soc_pmic_config *)id->driver_data; + } + + switch (hrv) { + case BYT_CRC_HRV: + config = _soc_pmic_config_byt_crc; + break; + case CHT_CRC_HRV: + config = _soc_pmic_config_cht_crc; + break; + default: + dev_warn(dev, "Unknown hardware rev %llu, assuming BYT\n", hrv); + config = _soc_pmic_config_byt_crc; + } pmic = devm_kzalloc(dev, sizeof(*pmic), GFP_KERNEL); if (!pmic) @@ -157,7 +179,7 @@ MODULE_DEVICE_TABLE(i2c, intel_soc_pmic_i2c_id); #if defined(CONFIG_ACPI) static const struct acpi_device_id intel_soc_pmic_acpi_match[] = { - {"INT33FD", (kernel_ulong_t)_soc_pmic_config_byt_crc}, + { "INT33FD" }, { }, }; MODULE_DEVICE_TABLE(acpi, intel_soc_pmic_acpi_match); -- 2.13.0