Message ID | 20231006175352.1753017-9-teackot@gmail.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | platform/x86: msi-ec: add and fix EC configs | expand |
On Fri, 6 Oct 2023, Nikita Kravets wrote: > This patch adds configurations for new EC firmware from the downstream > version of the driver. > > Cc: Aakash Singh <mail@singhaakash.dev> > Cc: Jose Angel Pastrana <japp0005@red.ujaen.es> > Signed-off-by: Nikita Kravets <teackot@gmail.com> > --- > drivers/platform/x86/msi-ec.c | 467 ++++++++++++++++++++++++++++++++++ > 1 file changed, 467 insertions(+) > > diff --git a/drivers/platform/x86/msi-ec.c b/drivers/platform/x86/msi-ec.c > index 3074aee878c1..f19504dbf164 100644 > --- a/drivers/platform/x86/msi-ec.c > +++ b/drivers/platform/x86/msi-ec.c > @@ -667,6 +667,467 @@ static struct msi_ec_conf CONF7 __initdata = { > }, > }; > > +static const char * const ALLOWED_FW_8[] __initconst = { > + "14F1EMS1.115", > + NULL > +}; > + > +static struct msi_ec_conf CONF8 __initdata = { > + .allowed_fw = ALLOWED_FW_8, > + .charge_control = { > + .address = 0xd7, > + .offset_start = 0x8a, > + .offset_end = 0x80, > + .range_min = 0x8a, > + .range_max = 0xe4, > + }, > + .webcam = { > + .address = 0x2e, > + .block_address = MSI_EC_ADDR_UNSUPP, > + .bit = 1, > + }, > + .fn_win_swap = { > + .address = 0xe8, > + .bit = 4, > + }, > + .cooler_boost = { > + .address = 0x98, > + .bit = 7, > + }, > + .shift_mode = { > + .address = 0xd2, > + .modes = { > + { SM_ECO_NAME, 0xc2 }, > + { SM_COMFORT_NAME, 0xc1 }, > + { SM_SPORT_NAME, 0xc0 }, > + MSI_EC_MODE_NULL > + }, > + }, > + .super_battery = { > + .address = 0xeb, > + .mask = 0x0f, > + }, > + .fan_mode = { > + .address = 0xd4, > + .modes = { > + { FM_AUTO_NAME, 0x0d }, > + { FM_SILENT_NAME, 0x1d }, > + { FM_BASIC_NAME, 0x4d }, > + MSI_EC_MODE_NULL > + }, > + }, > + .cpu = { > + .rt_temp_address = 0x68, > + .rt_fan_speed_address = 0x71, > + .rt_fan_speed_base_min = 0x19, > + .rt_fan_speed_base_max = 0x37, > + .bs_fan_speed_address = MSI_EC_ADDR_UNSUPP, > + .bs_fan_speed_base_min = 0x00, > + .bs_fan_speed_base_max = 0x0f, > + }, > + .gpu = { > + .rt_temp_address = MSI_EC_ADDR_UNKNOWN, > + .rt_fan_speed_address = MSI_EC_ADDR_UNKNOWN, > + }, > + .leds = { > + .micmute_led_address = MSI_EC_ADDR_UNSUPP, > + .mute_led_address = 0x2d, > + .bit = 1, > + }, > + .kbd_bl = { > + .bl_mode_address = MSI_EC_ADDR_UNKNOWN, // ? > + .bl_modes = { 0x00, 0x08 }, // ? > + .max_mode = 1, // ? > + .bl_state_address = MSI_EC_ADDR_UNSUPP, // not functional I only too patch 2/3 becase there seems to be some configuration option which causes // comments to trigger warning (that can be made errors with another config option) so please use only /* */ comments.
Hi Ilpo, On 10/9/23 13:40, Ilpo Järvinen wrote: > On Fri, 6 Oct 2023, Nikita Kravets wrote: > >> This patch adds configurations for new EC firmware from the downstream >> version of the driver. >> >> Cc: Aakash Singh <mail@singhaakash.dev> >> Cc: Jose Angel Pastrana <japp0005@red.ujaen.es> >> Signed-off-by: Nikita Kravets <teackot@gmail.com> >> --- >> drivers/platform/x86/msi-ec.c | 467 ++++++++++++++++++++++++++++++++++ >> 1 file changed, 467 insertions(+) >> >> diff --git a/drivers/platform/x86/msi-ec.c b/drivers/platform/x86/msi-ec.c >> index 3074aee878c1..f19504dbf164 100644 >> --- a/drivers/platform/x86/msi-ec.c >> +++ b/drivers/platform/x86/msi-ec.c >> @@ -667,6 +667,467 @@ static struct msi_ec_conf CONF7 __initdata = { >> }, >> }; >> >> +static const char * const ALLOWED_FW_8[] __initconst = { >> + "14F1EMS1.115", >> + NULL >> +}; >> + >> +static struct msi_ec_conf CONF8 __initdata = { >> + .allowed_fw = ALLOWED_FW_8, >> + .charge_control = { >> + .address = 0xd7, >> + .offset_start = 0x8a, >> + .offset_end = 0x80, >> + .range_min = 0x8a, >> + .range_max = 0xe4, >> + }, >> + .webcam = { >> + .address = 0x2e, >> + .block_address = MSI_EC_ADDR_UNSUPP, >> + .bit = 1, >> + }, >> + .fn_win_swap = { >> + .address = 0xe8, >> + .bit = 4, >> + }, >> + .cooler_boost = { >> + .address = 0x98, >> + .bit = 7, >> + }, >> + .shift_mode = { >> + .address = 0xd2, >> + .modes = { >> + { SM_ECO_NAME, 0xc2 }, >> + { SM_COMFORT_NAME, 0xc1 }, >> + { SM_SPORT_NAME, 0xc0 }, >> + MSI_EC_MODE_NULL >> + }, >> + }, >> + .super_battery = { >> + .address = 0xeb, >> + .mask = 0x0f, >> + }, >> + .fan_mode = { >> + .address = 0xd4, >> + .modes = { >> + { FM_AUTO_NAME, 0x0d }, >> + { FM_SILENT_NAME, 0x1d }, >> + { FM_BASIC_NAME, 0x4d }, >> + MSI_EC_MODE_NULL >> + }, >> + }, >> + .cpu = { >> + .rt_temp_address = 0x68, >> + .rt_fan_speed_address = 0x71, >> + .rt_fan_speed_base_min = 0x19, >> + .rt_fan_speed_base_max = 0x37, >> + .bs_fan_speed_address = MSI_EC_ADDR_UNSUPP, >> + .bs_fan_speed_base_min = 0x00, >> + .bs_fan_speed_base_max = 0x0f, >> + }, >> + .gpu = { >> + .rt_temp_address = MSI_EC_ADDR_UNKNOWN, >> + .rt_fan_speed_address = MSI_EC_ADDR_UNKNOWN, >> + }, >> + .leds = { >> + .micmute_led_address = MSI_EC_ADDR_UNSUPP, >> + .mute_led_address = 0x2d, >> + .bit = 1, >> + }, >> + .kbd_bl = { >> + .bl_mode_address = MSI_EC_ADDR_UNKNOWN, // ? >> + .bl_modes = { 0x00, 0x08 }, // ? >> + .max_mode = 1, // ? >> + .bl_state_address = MSI_EC_ADDR_UNSUPP, // not functional > > I only too patch 2/3 becase there seems to be some configuration option > which causes // comments to trigger warning (that can be made errors > with another config option) so please use only /* */ comments. Hmm, that is very weird all the: // SPDX-License-Identifier ... comments at the top of many of our .c files are c++ style comments. Regards, Hans
On Mon, 9 Oct 2023, Hans de Goede wrote: > On 10/9/23 13:40, Ilpo Järvinen wrote: > > On Fri, 6 Oct 2023, Nikita Kravets wrote: > > > >> This patch adds configurations for new EC firmware from the downstream > >> version of the driver. > >> > >> Cc: Aakash Singh <mail@singhaakash.dev> > >> Cc: Jose Angel Pastrana <japp0005@red.ujaen.es> > >> Signed-off-by: Nikita Kravets <teackot@gmail.com> > >> --- > >> drivers/platform/x86/msi-ec.c | 467 ++++++++++++++++++++++++++++++++++ > >> 1 file changed, 467 insertions(+) > >> > >> diff --git a/drivers/platform/x86/msi-ec.c b/drivers/platform/x86/msi-ec.c > >> index 3074aee878c1..f19504dbf164 100644 > >> --- a/drivers/platform/x86/msi-ec.c > >> +++ b/drivers/platform/x86/msi-ec.c > >> @@ -667,6 +667,467 @@ static struct msi_ec_conf CONF7 __initdata = { > >> }, > >> }; > >> > >> +static const char * const ALLOWED_FW_8[] __initconst = { > >> + "14F1EMS1.115", > >> + NULL > >> +}; > >> + > >> +static struct msi_ec_conf CONF8 __initdata = { > >> + .allowed_fw = ALLOWED_FW_8, > >> + .charge_control = { > >> + .address = 0xd7, > >> + .offset_start = 0x8a, > >> + .offset_end = 0x80, > >> + .range_min = 0x8a, > >> + .range_max = 0xe4, > >> + }, > >> + .webcam = { > >> + .address = 0x2e, > >> + .block_address = MSI_EC_ADDR_UNSUPP, > >> + .bit = 1, > >> + }, > >> + .fn_win_swap = { > >> + .address = 0xe8, > >> + .bit = 4, > >> + }, > >> + .cooler_boost = { > >> + .address = 0x98, > >> + .bit = 7, > >> + }, > >> + .shift_mode = { > >> + .address = 0xd2, > >> + .modes = { > >> + { SM_ECO_NAME, 0xc2 }, > >> + { SM_COMFORT_NAME, 0xc1 }, > >> + { SM_SPORT_NAME, 0xc0 }, > >> + MSI_EC_MODE_NULL > >> + }, > >> + }, > >> + .super_battery = { > >> + .address = 0xeb, > >> + .mask = 0x0f, > >> + }, > >> + .fan_mode = { > >> + .address = 0xd4, > >> + .modes = { > >> + { FM_AUTO_NAME, 0x0d }, > >> + { FM_SILENT_NAME, 0x1d }, > >> + { FM_BASIC_NAME, 0x4d }, > >> + MSI_EC_MODE_NULL > >> + }, > >> + }, > >> + .cpu = { > >> + .rt_temp_address = 0x68, > >> + .rt_fan_speed_address = 0x71, > >> + .rt_fan_speed_base_min = 0x19, > >> + .rt_fan_speed_base_max = 0x37, > >> + .bs_fan_speed_address = MSI_EC_ADDR_UNSUPP, > >> + .bs_fan_speed_base_min = 0x00, > >> + .bs_fan_speed_base_max = 0x0f, > >> + }, > >> + .gpu = { > >> + .rt_temp_address = MSI_EC_ADDR_UNKNOWN, > >> + .rt_fan_speed_address = MSI_EC_ADDR_UNKNOWN, > >> + }, > >> + .leds = { > >> + .micmute_led_address = MSI_EC_ADDR_UNSUPP, > >> + .mute_led_address = 0x2d, > >> + .bit = 1, > >> + }, > >> + .kbd_bl = { > >> + .bl_mode_address = MSI_EC_ADDR_UNKNOWN, // ? > >> + .bl_modes = { 0x00, 0x08 }, // ? > >> + .max_mode = 1, // ? > >> + .bl_state_address = MSI_EC_ADDR_UNSUPP, // not functional > > > > I only too patch 2/3 becase there seems to be some configuration option > > which causes // comments to trigger warning (that can be made errors > > with another config option) so please use only /* */ comments. > > Hmm, that is very weird all the: > > // SPDX-License-Identifier ... > > comments at the top of many of our .c files are c++ style comments. I know there are those already which is why I didn't think there would have been any problem with them until I got burned. If // comments are okay, what's the explanation for this then: https://lore.kernel.org/oe-kbuild-all/202309270535.g9nOUvFb-lkp@intel.com/ It's from randconfig build so it's a bit hard to know from the report itself which CONFIG combination exactly triggers the issue. I can think of two potential ones: a) Only problems for changed lines are reported by LKP b) Header files have different rules than .c files (uapi ones in particular, I'd guess, if that's the case) Any ideas?
Hi, On 10/9/23 14:34, Ilpo Järvinen wrote: > On Mon, 9 Oct 2023, Hans de Goede wrote: >> On 10/9/23 13:40, Ilpo Järvinen wrote: >>> On Fri, 6 Oct 2023, Nikita Kravets wrote: >>> >>>> This patch adds configurations for new EC firmware from the downstream >>>> version of the driver. >>>> >>>> Cc: Aakash Singh <mail@singhaakash.dev> >>>> Cc: Jose Angel Pastrana <japp0005@red.ujaen.es> >>>> Signed-off-by: Nikita Kravets <teackot@gmail.com> >>>> --- >>>> drivers/platform/x86/msi-ec.c | 467 ++++++++++++++++++++++++++++++++++ >>>> 1 file changed, 467 insertions(+) >>>> >>>> diff --git a/drivers/platform/x86/msi-ec.c b/drivers/platform/x86/msi-ec.c >>>> index 3074aee878c1..f19504dbf164 100644 >>>> --- a/drivers/platform/x86/msi-ec.c >>>> +++ b/drivers/platform/x86/msi-ec.c >>>> @@ -667,6 +667,467 @@ static struct msi_ec_conf CONF7 __initdata = { >>>> }, >>>> }; >>>> >>>> +static const char * const ALLOWED_FW_8[] __initconst = { >>>> + "14F1EMS1.115", >>>> + NULL >>>> +}; >>>> + >>>> +static struct msi_ec_conf CONF8 __initdata = { >>>> + .allowed_fw = ALLOWED_FW_8, >>>> + .charge_control = { >>>> + .address = 0xd7, >>>> + .offset_start = 0x8a, >>>> + .offset_end = 0x80, >>>> + .range_min = 0x8a, >>>> + .range_max = 0xe4, >>>> + }, >>>> + .webcam = { >>>> + .address = 0x2e, >>>> + .block_address = MSI_EC_ADDR_UNSUPP, >>>> + .bit = 1, >>>> + }, >>>> + .fn_win_swap = { >>>> + .address = 0xe8, >>>> + .bit = 4, >>>> + }, >>>> + .cooler_boost = { >>>> + .address = 0x98, >>>> + .bit = 7, >>>> + }, >>>> + .shift_mode = { >>>> + .address = 0xd2, >>>> + .modes = { >>>> + { SM_ECO_NAME, 0xc2 }, >>>> + { SM_COMFORT_NAME, 0xc1 }, >>>> + { SM_SPORT_NAME, 0xc0 }, >>>> + MSI_EC_MODE_NULL >>>> + }, >>>> + }, >>>> + .super_battery = { >>>> + .address = 0xeb, >>>> + .mask = 0x0f, >>>> + }, >>>> + .fan_mode = { >>>> + .address = 0xd4, >>>> + .modes = { >>>> + { FM_AUTO_NAME, 0x0d }, >>>> + { FM_SILENT_NAME, 0x1d }, >>>> + { FM_BASIC_NAME, 0x4d }, >>>> + MSI_EC_MODE_NULL >>>> + }, >>>> + }, >>>> + .cpu = { >>>> + .rt_temp_address = 0x68, >>>> + .rt_fan_speed_address = 0x71, >>>> + .rt_fan_speed_base_min = 0x19, >>>> + .rt_fan_speed_base_max = 0x37, >>>> + .bs_fan_speed_address = MSI_EC_ADDR_UNSUPP, >>>> + .bs_fan_speed_base_min = 0x00, >>>> + .bs_fan_speed_base_max = 0x0f, >>>> + }, >>>> + .gpu = { >>>> + .rt_temp_address = MSI_EC_ADDR_UNKNOWN, >>>> + .rt_fan_speed_address = MSI_EC_ADDR_UNKNOWN, >>>> + }, >>>> + .leds = { >>>> + .micmute_led_address = MSI_EC_ADDR_UNSUPP, >>>> + .mute_led_address = 0x2d, >>>> + .bit = 1, >>>> + }, >>>> + .kbd_bl = { >>>> + .bl_mode_address = MSI_EC_ADDR_UNKNOWN, // ? >>>> + .bl_modes = { 0x00, 0x08 }, // ? >>>> + .max_mode = 1, // ? >>>> + .bl_state_address = MSI_EC_ADDR_UNSUPP, // not functional >>> >>> I only too patch 2/3 becase there seems to be some configuration option >>> which causes // comments to trigger warning (that can be made errors >>> with another config option) so please use only /* */ comments. >> >> Hmm, that is very weird all the: >> >> // SPDX-License-Identifier ... >> >> comments at the top of many of our .c files are c++ style comments. > > I know there are those already which is why I didn't think there would > have been any problem with them until I got burned. > > If // comments are okay, what's the explanation for this then: > > https://lore.kernel.org/oe-kbuild-all/202309270535.g9nOUvFb-lkp@intel.com/ > > It's from randconfig build so it's a bit hard to know from the report > itself which CONFIG combination exactly triggers the issue. > > I can think of two potential ones: > a) Only problems for changed lines are reported by LKP > b) Header files have different rules than .c files (uapi ones in > particular, I'd guess, if that's the case) Yes I think that the error you point at is caused by the file in question being a uapi header. It makes some sense to avoid C++ style comments there to e.g. avoid problems when userspace code is build with -ansi . So I think that uapi headers are the exception to the rule that c++ style comments are ok. Regards, Hans
On Mon, 9 Oct 2023, Hans de Goede wrote: > On 10/9/23 14:34, Ilpo Järvinen wrote: > > On Mon, 9 Oct 2023, Hans de Goede wrote: > >> On 10/9/23 13:40, Ilpo Järvinen wrote: > >>> On Fri, 6 Oct 2023, Nikita Kravets wrote: > >>> > >>>> This patch adds configurations for new EC firmware from the downstream > >>>> version of the driver. > >>>> > >>>> Cc: Aakash Singh <mail@singhaakash.dev> > >>>> Cc: Jose Angel Pastrana <japp0005@red.ujaen.es> > >>>> Signed-off-by: Nikita Kravets <teackot@gmail.com> > >>>> + .bl_state_address = MSI_EC_ADDR_UNSUPP, // not functional > >>> > >>> I only too patch 2/3 becase there seems to be some configuration option > >>> which causes // comments to trigger warning (that can be made errors > >>> with another config option) so please use only /* */ comments. > >> > >> Hmm, that is very weird all the: > >> > >> // SPDX-License-Identifier ... > >> > >> comments at the top of many of our .c files are c++ style comments. > > > > I know there are those already which is why I didn't think there would > > have been any problem with them until I got burned. > > > > If // comments are okay, what's the explanation for this then: > > > > https://lore.kernel.org/oe-kbuild-all/202309270535.g9nOUvFb-lkp@intel.com/ > > > > It's from randconfig build so it's a bit hard to know from the report > > itself which CONFIG combination exactly triggers the issue. > > > > I can think of two potential ones: > > a) Only problems for changed lines are reported by LKP > > b) Header files have different rules than .c files (uapi ones in > > particular, I'd guess, if that's the case) > > Yes I think that the error you point at is caused by the file in question > being a uapi header. It makes some sense to avoid C++ style comments there > to e.g. avoid problems when userspace code is build with -ansi . > > So I think that uapi headers are the exception to the rule that > c++ style comments are ok. Okay, if that's the case, I took this patch into review-ilpo now. Thank you Nikita for the patch (2 and 3 are now in the review-ilpo branch).
diff --git a/drivers/platform/x86/msi-ec.c b/drivers/platform/x86/msi-ec.c index 3074aee878c1..f19504dbf164 100644 --- a/drivers/platform/x86/msi-ec.c +++ b/drivers/platform/x86/msi-ec.c @@ -667,6 +667,467 @@ static struct msi_ec_conf CONF7 __initdata = { }, }; +static const char * const ALLOWED_FW_8[] __initconst = { + "14F1EMS1.115", + NULL +}; + +static struct msi_ec_conf CONF8 __initdata = { + .allowed_fw = ALLOWED_FW_8, + .charge_control = { + .address = 0xd7, + .offset_start = 0x8a, + .offset_end = 0x80, + .range_min = 0x8a, + .range_max = 0xe4, + }, + .webcam = { + .address = 0x2e, + .block_address = MSI_EC_ADDR_UNSUPP, + .bit = 1, + }, + .fn_win_swap = { + .address = 0xe8, + .bit = 4, + }, + .cooler_boost = { + .address = 0x98, + .bit = 7, + }, + .shift_mode = { + .address = 0xd2, + .modes = { + { SM_ECO_NAME, 0xc2 }, + { SM_COMFORT_NAME, 0xc1 }, + { SM_SPORT_NAME, 0xc0 }, + MSI_EC_MODE_NULL + }, + }, + .super_battery = { + .address = 0xeb, + .mask = 0x0f, + }, + .fan_mode = { + .address = 0xd4, + .modes = { + { FM_AUTO_NAME, 0x0d }, + { FM_SILENT_NAME, 0x1d }, + { FM_BASIC_NAME, 0x4d }, + MSI_EC_MODE_NULL + }, + }, + .cpu = { + .rt_temp_address = 0x68, + .rt_fan_speed_address = 0x71, + .rt_fan_speed_base_min = 0x19, + .rt_fan_speed_base_max = 0x37, + .bs_fan_speed_address = MSI_EC_ADDR_UNSUPP, + .bs_fan_speed_base_min = 0x00, + .bs_fan_speed_base_max = 0x0f, + }, + .gpu = { + .rt_temp_address = MSI_EC_ADDR_UNKNOWN, + .rt_fan_speed_address = MSI_EC_ADDR_UNKNOWN, + }, + .leds = { + .micmute_led_address = MSI_EC_ADDR_UNSUPP, + .mute_led_address = 0x2d, + .bit = 1, + }, + .kbd_bl = { + .bl_mode_address = MSI_EC_ADDR_UNKNOWN, // ? + .bl_modes = { 0x00, 0x08 }, // ? + .max_mode = 1, // ? + .bl_state_address = MSI_EC_ADDR_UNSUPP, // not functional + .state_base_value = 0x80, + .max_state = 3, + }, +}; + +static const char * const ALLOWED_FW_9[] __initconst = { + "14JKEMS1.104", + NULL +}; + +static struct msi_ec_conf CONF9 __initdata = { + .allowed_fw = ALLOWED_FW_9, + .charge_control = { + .address = 0xef, + .offset_start = 0x8a, + .offset_end = 0x80, + .range_min = 0x8a, + .range_max = 0xe4, + }, + .webcam = { + .address = 0x2e, + .block_address = 0x2f, + .bit = 1, + }, + .fn_win_swap = { + .address = 0xbf, + .bit = 4, + }, + .cooler_boost = { + .address = 0x98, + .bit = 7, + }, + .shift_mode = { + .address = 0xf2, + .modes = { + { SM_ECO_NAME, 0xc2 }, + { SM_COMFORT_NAME, 0xc1 }, + { SM_SPORT_NAME, 0xc0 }, + MSI_EC_MODE_NULL + }, + }, + .super_battery = { + .address = MSI_EC_ADDR_UNSUPP, // unsupported or enabled by ECO shift + .mask = 0x0f, + }, + .fan_mode = { + .address = 0xf4, + .modes = { + { FM_AUTO_NAME, 0x0d }, + { FM_SILENT_NAME, 0x1d }, + { FM_ADVANCED_NAME, 0x8d }, + MSI_EC_MODE_NULL + }, + }, + .cpu = { + .rt_temp_address = 0x68, + .rt_fan_speed_address = 0x71, + .rt_fan_speed_base_min = 0x00, + .rt_fan_speed_base_max = 0x96, + .bs_fan_speed_address = MSI_EC_ADDR_UNSUPP, + .bs_fan_speed_base_min = 0x00, + .bs_fan_speed_base_max = 0x0f, + }, + .gpu = { + .rt_temp_address = MSI_EC_ADDR_UNSUPP, + .rt_fan_speed_address = MSI_EC_ADDR_UNSUPP, + }, + .leds = { + .micmute_led_address = 0x2b, + .mute_led_address = 0x2c, + .bit = 2, + }, + .kbd_bl = { + .bl_mode_address = MSI_EC_ADDR_UNSUPP, // not presented in MSI app + .bl_modes = { 0x00, 0x08 }, + .max_mode = 1, + .bl_state_address = 0xf3, + .state_base_value = 0x80, + .max_state = 3, + }, +}; + +static const char * const ALLOWED_FW_10[] __initconst = { + "1582EMS1.107", // GF66 11UC + NULL +}; + +static struct msi_ec_conf CONF10 __initdata = { + .allowed_fw = ALLOWED_FW_10, + .charge_control = { + .address = 0xd7, + .offset_start = 0x8a, + .offset_end = 0x80, + .range_min = 0x8a, + .range_max = 0xe4, + }, + .webcam = { + .address = 0x2e, + .block_address = 0x2f, + .bit = 1, + }, + .fn_win_swap = { + .address = MSI_EC_ADDR_UNSUPP, + .bit = 4, + }, + .cooler_boost = { + .address = 0x98, + .bit = 7, + }, + .shift_mode = { + .address = 0xd2, + .modes = { + { SM_ECO_NAME, 0xc2 }, + { SM_COMFORT_NAME, 0xc1 }, + { SM_SPORT_NAME, 0xc0 }, + { SM_TURBO_NAME, 0xc4 }, + MSI_EC_MODE_NULL + }, + }, + .super_battery = { + .address = 0xe5, + .mask = 0x0f, + }, + .fan_mode = { + .address = 0xd4, + .modes = { + { FM_AUTO_NAME, 0x0d }, + { FM_SILENT_NAME, 0x1d }, + { FM_ADVANCED_NAME, 0x8d }, + MSI_EC_MODE_NULL + }, + }, + .cpu = { + .rt_temp_address = 0x68, + .rt_fan_speed_address = 0x71, // ? + .rt_fan_speed_base_min = 0x19, + .rt_fan_speed_base_max = 0x37, + .bs_fan_speed_address = MSI_EC_ADDR_UNKNOWN, // ? + .bs_fan_speed_base_min = 0x00, + .bs_fan_speed_base_max = 0x0f, + }, + .gpu = { + .rt_temp_address = 0x80, + .rt_fan_speed_address = 0x89, + }, + .leds = { + .micmute_led_address = 0x2c, + .mute_led_address = 0x2d, + .bit = 1, + }, + .kbd_bl = { + .bl_mode_address = 0x2c, + .bl_modes = { 0x00, 0x08 }, + .max_mode = 1, + .bl_state_address = 0xd3, + .state_base_value = 0x80, + .max_state = 3, + }, +}; + +static const char * const ALLOWED_FW_11[] __initconst = { + "16S6EMS1.111", // Prestige 15 a11scx + "1552EMS1.115", // Modern 15 a11m + NULL +}; + +static struct msi_ec_conf CONF11 __initdata = { + .allowed_fw = ALLOWED_FW_11, + .charge_control = { + .address = 0xd7, + .offset_start = 0x8a, + .offset_end = 0x80, + .range_min = 0x8a, + .range_max = 0xe4, + }, + .webcam = { + .address = 0x2e, + .block_address = MSI_EC_ADDR_UNKNOWN, + .bit = 1, + }, + .fn_win_swap = { + .address = 0xe8, + .bit = 4, + }, + .cooler_boost = { + .address = 0x98, + .bit = 7, + }, + .shift_mode = { + .address = 0xd2, + .modes = { + { SM_ECO_NAME, 0xc2 }, + { SM_COMFORT_NAME, 0xc1 }, + { SM_SPORT_NAME, 0xc0 }, + MSI_EC_MODE_NULL + }, + }, + .super_battery = { + .address = 0xeb, + .mask = 0x0f, + }, + .fan_mode = { + .address = 0xd4, + .modes = { + { FM_AUTO_NAME, 0x0d }, + { FM_SILENT_NAME, 0x1d }, + { FM_ADVANCED_NAME, 0x4d }, + MSI_EC_MODE_NULL + }, + }, + .cpu = { + .rt_temp_address = 0x68, + .rt_fan_speed_address = MSI_EC_ADDR_UNSUPP, + .bs_fan_speed_address = MSI_EC_ADDR_UNSUPP, + }, + .gpu = { + .rt_temp_address = MSI_EC_ADDR_UNSUPP, + .rt_fan_speed_address = MSI_EC_ADDR_UNSUPP, + }, + .leds = { + .micmute_led_address = 0x2c, + .mute_led_address = 0x2d, + .bit = 1, + }, + .kbd_bl = { + .bl_mode_address = MSI_EC_ADDR_UNKNOWN, + .bl_modes = {}, // ? + .max_mode = 1, // ? + .bl_state_address = 0xd3, + .state_base_value = 0x80, + .max_state = 3, + }, +}; + +static const char * const ALLOWED_FW_12[] __initconst = { + "16R6EMS1.104", // GF63 Thin 11UC + NULL +}; + +static struct msi_ec_conf CONF12 __initdata = { + .allowed_fw = ALLOWED_FW_12, + .charge_control = { + .address = 0xd7, + .offset_start = 0x8a, + .offset_end = 0x80, + .range_min = 0x8a, + .range_max = 0xe4, + }, + .webcam = { + .address = 0x2e, + .block_address = 0x2f, + .bit = 1, + }, + .fn_win_swap = { + .address = 0xe8, + .bit = 4, + }, + .cooler_boost = { + .address = 0x98, + .bit = 7, + }, + .shift_mode = { + .address = 0xd2, + .modes = { + { SM_ECO_NAME, 0xc2 }, + { SM_COMFORT_NAME, 0xc1 }, + { SM_SPORT_NAME, 0xc0 }, + { SM_TURBO_NAME, 0xc4 }, + MSI_EC_MODE_NULL + }, + }, + .super_battery = { + .address = MSI_EC_ADDR_UNSUPP, // 0xeb + .mask = 0x0f, // 00, 0f + }, + .fan_mode = { + .address = 0xd4, + .modes = { + { FM_AUTO_NAME, 0x0d }, + { FM_SILENT_NAME, 0x1d }, + { FM_ADVANCED_NAME, 0x8d }, + MSI_EC_MODE_NULL + }, + }, + .cpu = { + .rt_temp_address = 0x68, + .rt_fan_speed_address = 0x71, + .rt_fan_speed_base_min = 0x19, + .rt_fan_speed_base_max = 0x37, + .bs_fan_speed_address = MSI_EC_ADDR_UNSUPP, + .bs_fan_speed_base_min = 0x00, + .bs_fan_speed_base_max = 0x0f, + }, + .gpu = { + .rt_temp_address = MSI_EC_ADDR_UNSUPP, + .rt_fan_speed_address = 0x89, + }, + .leds = { + .micmute_led_address = MSI_EC_ADDR_UNSUPP, + .mute_led_address = 0x2d, + .bit = 1, + }, + .kbd_bl = { + .bl_mode_address = MSI_EC_ADDR_UNKNOWN, + .bl_modes = { 0x00, 0x08 }, + .max_mode = 1, + .bl_state_address = 0xd3, + .state_base_value = 0x80, + .max_state = 3, + }, +}; + +static const char * const ALLOWED_FW_13[] __initconst = { + "1594EMS1.109", // MSI Prestige 16 Studio A13VE + NULL +}; + +static struct msi_ec_conf CONF13 __initdata = { + .allowed_fw = ALLOWED_FW_13, + .charge_control = { + .address = 0xd7, + .offset_start = 0x8a, + .offset_end = 0x80, + .range_min = 0x8a, + .range_max = 0xe4, + }, + .webcam = { + .address = 0x2e, + .block_address = 0x2f, + .bit = 1, + }, + .fn_win_swap = { + .address = 0xe8, + .bit = 4, // 0x00-0x10 + }, + .cooler_boost = { + .address = 0x98, + .bit = 7, + }, + .shift_mode = { + .address = 0xd2, + .modes = { + { SM_ECO_NAME, 0xc2 }, // super battery + { SM_COMFORT_NAME, 0xc1 }, // balanced + { SM_TURBO_NAME, 0xc4 }, // extreme + MSI_EC_MODE_NULL + }, + }, + .super_battery = { + .address = MSI_EC_ADDR_UNSUPP, + .mask = 0x0f, // 00, 0f + }, + .fan_mode = { + .address = 0xd4, + .modes = { + { FM_AUTO_NAME, 0x0d }, + { FM_SILENT_NAME, 0x1d }, + { FM_ADVANCED_NAME, 0x8d }, + MSI_EC_MODE_NULL + }, + }, + .cpu = { + .rt_temp_address = 0x68, + .rt_fan_speed_address = 0x71, // 0x0-0x96 + .rt_fan_speed_base_min = 0x00, + .rt_fan_speed_base_max = 0x96, + .bs_fan_speed_address = MSI_EC_ADDR_UNSUPP, + .bs_fan_speed_base_min = 0x00, + .bs_fan_speed_base_max = 0x0f, + }, + .gpu = { + .rt_temp_address = 0x80, + .rt_fan_speed_address = 0x89, + }, + .leds = { + .micmute_led_address = 0x2c, + .mute_led_address = 0x2d, + .bit = 1, + }, + .kbd_bl = { + .bl_mode_address = 0x2c, // KB auto turn off + .bl_modes = { 0x00, 0x08 }, // always on; off after 10 sec + .max_mode = 1, + .bl_state_address = 0xd3, + .state_base_value = 0x80, + .max_state = 3, + }, +}; + static struct msi_ec_conf *CONFIGS[] __initdata = { &CONF0, &CONF1, @@ -676,6 +1137,12 @@ static struct msi_ec_conf *CONFIGS[] __initdata = { &CONF5, &CONF6, &CONF7, + &CONF8, + &CONF9, + &CONF10, + &CONF11, + &CONF12, + &CONF13, NULL };
This patch adds configurations for new EC firmware from the downstream version of the driver. Cc: Aakash Singh <mail@singhaakash.dev> Cc: Jose Angel Pastrana <japp0005@red.ujaen.es> Signed-off-by: Nikita Kravets <teackot@gmail.com> --- drivers/platform/x86/msi-ec.c | 467 ++++++++++++++++++++++++++++++++++ 1 file changed, 467 insertions(+)