Re: [PATCH 3/3] AMD_SFH: Add DMI quirk table for BIOS-es which don't set the activestatus bits

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



My 13" model is a Raven-Ridge device:

$ grep -i model /proc/cpuinfo | head -2
model		: 17
model name	: AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx

Since the accelerometer is also reported working on the 15" device, I'd
assume that the corresponding DMI record is also fine.

However, I don't know whether there are newer models on the market with
the same product names, which is why in my patch I used the board's
serial number for DMI matching instead.
This, however, seems unlikely since the series "13-ag0xxx" is included
in the product name, so we should be fine here.

Am Montag, dem 15.02.2021 um 13:54 +0530 schrieb Shah, Nehal-
bakulchandra:
> Hi Hans,
> On 1/28/2021 5:42 PM, Hans de Goede wrote:
> > Some BIOS-es do not initialize the activestatus bits of the
> > AMD_P2C_MSG3
> > register. This cause the AMD_SFH driver to not register any sensors
> > even
> > though the laptops in question do have sensors.
> > 
> > Add a DMI quirk-table for specifying sensor-mask overrides based on
> > DMI match, to make the sensors work OOTB on these laptop models.
> > 
> > BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=199715
> > BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1651886
> > Fixes: 4f567b9f8141 ("SFH: PCIe driver to add support of AMD sensor
> > fusion hub")
> > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> > ---
> >  drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 24 ++++++++++++++++++++++++
> >  1 file changed, 24 insertions(+)
> > 
> > diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
> > b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
> > index ab0a9443e252..ddecc84fd6f0 100644
> > --- a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
> > +++ b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
> > @@ -10,6 +10,7 @@
> >  #include <linux/bitops.h>
> >  #include <linux/delay.h>
> >  #include <linux/dma-mapping.h>
> > +#include <linux/dmi.h>
> >  #include <linux/interrupt.h>
> >  #include <linux/io-64-nonatomic-lo-hi.h>
> >  #include <linux/module.h>
> > @@ -77,11 +78,34 @@ void amd_stop_all_sensors(struct amd_mp2_dev
> > *privdata)
> >         writel(cmd_base.ul, privdata->mmio + AMD_C2P_MSG0);
> >  }
> >  
> > +static const struct dmi_system_id dmi_sensor_mask_overrides[] = {
> > +       {
> > +               .matches = {
> > +                       DMI_MATCH(DMI_PRODUCT_NAME, "HP ENVY x360
> > Convertible 13-ag0xxx"),
> > +               },
> > +               .driver_data = (void *)(ACEL_EN | MAGNO_EN),
> > +       },
> > +       {
> > +               .matches = {
> > +                       DMI_MATCH(DMI_PRODUCT_NAME, "HP ENVY x360
> > Convertible 15-cp0xxx"),
> > +               },
> > +               .driver_data = (void *)(ACEL_EN | MAGNO_EN),
> > +       },
> > +       { }
> > +};
> > +
> >  int amd_mp2_get_sensor_num(struct amd_mp2_dev *privdata, u8
> > *sensor_id)
> >  {
> >         int activestatus, num_of_sensors = 0;
> > +       const struct dmi_system_id *dmi_id;
> >         u32 activecontrolstatus;
> >  
> > +       if (sensor_mask_override == -1) {
> > +               dmi_id = dmi_first_match(dmi_sensor_mask_overrides);
> > +               if (dmi_id)
> > +                       sensor_mask_override = (long)dmi_id-
> > >driver_data;
> > +       }
> > +
> >         if (sensor_mask_override >= 0) {
> >                 activestatus = sensor_mask_override;
> >         } else {
> Can you please confirm that HP Envy x360  is whether ryzen 4000 (Renior
> based) series or ryzen 3000 (Raven based) series? As of now current
> upstream code does not have support for Ryzen 4000 series
> for which work is in progress. However, for Ryzen 3000 based series
> this patch looks fine and thanks for the contribution.
> 
> 
> Regards
> 
> Nehal
> 
> 





[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux