Hello,
These two patches enable checking and enabling the new optional
notification types defined in UCSI v2.0 and greater. For that, patch 1
defines the new optional capability bits and patch 2 adds the logic for
checking/enabling these new notification types.
Diogo Ivo (2):
usb: typec: ucsi: Add new capability bits
usb: typec: ucsi: Enable UCSI v2.0 notifications
drivers/usb/typec/ucsi/ucsi.c | 19 ++++++++++++++++++-
drivers/usb/typec/ucsi/ucsi.h | 8 +++++++-
2 files changed, 25 insertions(+), 2 deletions(-)
--
2.45.1
Newer UCSI versions defined additional optional capability bits. Add
their definitions.
Signed-off-by: Diogo Ivo <[email protected]>
---
drivers/usb/typec/ucsi/ucsi.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h
index e70cf5b15562..ca4a879d9606 100644
--- a/drivers/usb/typec/ucsi/ucsi.h
+++ b/drivers/usb/typec/ucsi/ucsi.h
@@ -225,7 +225,13 @@ struct ucsi_capability {
#define UCSI_CAP_CABLE_DETAILS BIT(5)
#define UCSI_CAP_EXT_SUPPLY_NOTIFICATIONS BIT(6)
#define UCSI_CAP_PD_RESET BIT(7)
-#define UCSI_CAP_GET_PD_MESSAGE BIT(8)
+#define UCSI_CAP_GET_PD_MESSAGE BIT(8)
+#define UCSI_CAP_GET_ATTENTION_VDO BIT(9)
+#define UCSI_CAP_FW_UPDATE_REQUEST BIT(10)
+#define UCSI_CAP_NEGOTIATED_PWR_LEVEL_CHANGE BIT(11)
+#define UCSI_CAP_SECURITY_REQUEST BIT(12)
+#define UCSI_CAP_SET_RETIMER_MODE BIT(13)
+#define UCSI_CAP_CHUNKING_SUPPORT BIT(14)
u8 reserved_1;
u8 num_alt_modes;
u8 reserved_2;
--
2.45.1
UCSI version 2.0 and above define new PPM notifications. Update the
logic to determine which notifications to enable taking into account
these changes.
Signed-off-by: Diogo Ivo <[email protected]>
---
drivers/usb/typec/ucsi/ucsi.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c
index cb52e7b0a2c5..0cc1c49da4a0 100644
--- a/drivers/usb/typec/ucsi/ucsi.c
+++ b/drivers/usb/typec/ucsi/ucsi.c
@@ -1664,7 +1664,7 @@ static int ucsi_register_port(struct ucsi *ucsi, struct ucsi_connector *con)
static u64 ucsi_get_supported_notifications(struct ucsi *ucsi)
{
- u8 features = ucsi->cap.features;
+ u16 features = ucsi->cap.features;
u64 ntfy = UCSI_ENABLE_NTFY_ALL;
if (!(features & UCSI_CAP_ALT_MODE_DETAILS))
@@ -1680,6 +1680,23 @@ static u64 ucsi_get_supported_notifications(struct ucsi *ucsi)
if (!(features & UCSI_CAP_PD_RESET))
ntfy &= ~UCSI_ENABLE_NTFY_PD_RESET_COMPLETE;
+ if (ucsi->version <= UCSI_VERSION_1_2)
+ return ntfy;
+
+ ntfy |= UCSI_ENABLE_NTFY_SINK_PATH_STS_CHANGE;
+
+ if (features & UCSI_CAP_GET_ATTENTION_VDO)
+ ntfy |= UCSI_ENABLE_NTFY_ATTENTION;
+
+ if (features & UCSI_CAP_FW_UPDATE_REQUEST)
+ ntfy |= UCSI_ENABLE_NTFY_LPM_FW_UPDATE_REQ;
+
+ if (features & UCSI_CAP_SECURITY_REQUEST)
+ ntfy |= UCSI_ENABLE_NTFY_SECURITY_REQ_PARTNER;
+
+ if (features & UCSI_CAP_SET_RETIMER_MODE)
+ ntfy |= UCSI_ENABLE_NTFY_SET_RETIMER_MODE;
+
return ntfy;
}
--
2.45.1
Hi Diogo,
kernel test robot noticed the following build errors:
[auto build test ERROR on usb/usb-testing]
[also build test ERROR on usb/usb-next usb/usb-linus linus/master next-20240523]
[cannot apply to v6.9]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Diogo-Ivo/usb-typec-ucsi-Add-new-capability-bits/20240524-190924
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
patch link: https://lore.kernel.org/r/20240524105837.15342-3-diogo.ivo%40tecnico.ulisboa.pt
patch subject: [PATCH 2/2] usb: typec: ucsi: Enable UCSI v2.0 notifications
config: arm-defconfig (https://download.01.org/0day-ci/archive/20240524/[email protected]/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240524/[email protected]/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
All errors (new ones prefixed by >>):
>> drivers/usb/typec/ucsi/ucsi.c:1686:10: error: use of undeclared identifier 'UCSI_ENABLE_NTFY_SINK_PATH_STS_CHANGE'
ntfy |= UCSI_ENABLE_NTFY_SINK_PATH_STS_CHANGE;
^
>> drivers/usb/typec/ucsi/ucsi.c:1689:11: error: use of undeclared identifier 'UCSI_ENABLE_NTFY_ATTENTION'
ntfy |= UCSI_ENABLE_NTFY_ATTENTION;
^
>> drivers/usb/typec/ucsi/ucsi.c:1692:11: error: use of undeclared identifier 'UCSI_ENABLE_NTFY_LPM_FW_UPDATE_REQ'
ntfy |= UCSI_ENABLE_NTFY_LPM_FW_UPDATE_REQ;
^
>> drivers/usb/typec/ucsi/ucsi.c:1695:11: error: use of undeclared identifier 'UCSI_ENABLE_NTFY_SECURITY_REQ_PARTNER'
ntfy |= UCSI_ENABLE_NTFY_SECURITY_REQ_PARTNER;
^
>> drivers/usb/typec/ucsi/ucsi.c:1698:11: error: use of undeclared identifier 'UCSI_ENABLE_NTFY_SET_RETIMER_MODE'
ntfy |= UCSI_ENABLE_NTFY_SET_RETIMER_MODE;
^
5 errors generated.
vim +/UCSI_ENABLE_NTFY_SINK_PATH_STS_CHANGE +1686 drivers/usb/typec/ucsi/ucsi.c
1664
1665 static u64 ucsi_get_supported_notifications(struct ucsi *ucsi)
1666 {
1667 u16 features = ucsi->cap.features;
1668 u64 ntfy = UCSI_ENABLE_NTFY_ALL;
1669
1670 if (!(features & UCSI_CAP_ALT_MODE_DETAILS))
1671 ntfy &= ~UCSI_ENABLE_NTFY_CAM_CHANGE;
1672
1673 if (!(features & UCSI_CAP_PDO_DETAILS))
1674 ntfy &= ~(UCSI_ENABLE_NTFY_PWR_LEVEL_CHANGE |
1675 UCSI_ENABLE_NTFY_CAP_CHANGE);
1676
1677 if (!(features & UCSI_CAP_EXT_SUPPLY_NOTIFICATIONS))
1678 ntfy &= ~UCSI_ENABLE_NTFY_EXT_PWR_SRC_CHANGE;
1679
1680 if (!(features & UCSI_CAP_PD_RESET))
1681 ntfy &= ~UCSI_ENABLE_NTFY_PD_RESET_COMPLETE;
1682
1683 if (ucsi->version <= UCSI_VERSION_1_2)
1684 return ntfy;
1685
> 1686 ntfy |= UCSI_ENABLE_NTFY_SINK_PATH_STS_CHANGE;
1687
1688 if (features & UCSI_CAP_GET_ATTENTION_VDO)
> 1689 ntfy |= UCSI_ENABLE_NTFY_ATTENTION;
1690
1691 if (features & UCSI_CAP_FW_UPDATE_REQUEST)
> 1692 ntfy |= UCSI_ENABLE_NTFY_LPM_FW_UPDATE_REQ;
1693
1694 if (features & UCSI_CAP_SECURITY_REQUEST)
> 1695 ntfy |= UCSI_ENABLE_NTFY_SECURITY_REQ_PARTNER;
1696
1697 if (features & UCSI_CAP_SET_RETIMER_MODE)
> 1698 ntfy |= UCSI_ENABLE_NTFY_SET_RETIMER_MODE;
1699
1700 return ntfy;
1701 }
1702
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Hi Diogo,
kernel test robot noticed the following build errors:
[auto build test ERROR on usb/usb-testing]
[also build test ERROR on usb/usb-next usb/usb-linus linus/master next-20240523]
[cannot apply to v6.9]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Diogo-Ivo/usb-typec-ucsi-Add-new-capability-bits/20240524-190924
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
patch link: https://lore.kernel.org/r/20240524105837.15342-3-diogo.ivo%40tecnico.ulisboa.pt
patch subject: [PATCH 2/2] usb: typec: ucsi: Enable UCSI v2.0 notifications
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20240524/[email protected]/config)
compiler: alpha-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240524/[email protected]/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
All errors (new ones prefixed by >>):
drivers/usb/typec/ucsi/ucsi.c: In function 'ucsi_get_supported_notifications':
>> drivers/usb/typec/ucsi/ucsi.c:1686:17: error: 'UCSI_ENABLE_NTFY_SINK_PATH_STS_CHANGE' undeclared (first use in this function); did you mean 'UCSI_ENABLE_NTFY_EXT_PWR_SRC_CHANGE'?
1686 | ntfy |= UCSI_ENABLE_NTFY_SINK_PATH_STS_CHANGE;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| UCSI_ENABLE_NTFY_EXT_PWR_SRC_CHANGE
drivers/usb/typec/ucsi/ucsi.c:1686:17: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/usb/typec/ucsi/ucsi.c:1689:25: error: 'UCSI_ENABLE_NTFY_ATTENTION' undeclared (first use in this function); did you mean 'UCSI_ENABLE_NTFY_ERROR'?
1689 | ntfy |= UCSI_ENABLE_NTFY_ATTENTION;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| UCSI_ENABLE_NTFY_ERROR
>> drivers/usb/typec/ucsi/ucsi.c:1692:25: error: 'UCSI_ENABLE_NTFY_LPM_FW_UPDATE_REQ' undeclared (first use in this function)
1692 | ntfy |= UCSI_ENABLE_NTFY_LPM_FW_UPDATE_REQ;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/usb/typec/ucsi/ucsi.c:1695:25: error: 'UCSI_ENABLE_NTFY_SECURITY_REQ_PARTNER' undeclared (first use in this function)
1695 | ntfy |= UCSI_ENABLE_NTFY_SECURITY_REQ_PARTNER;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/usb/typec/ucsi/ucsi.c:1698:25: error: 'UCSI_ENABLE_NTFY_SET_RETIMER_MODE' undeclared (first use in this function); did you mean 'UCSI_CAP_SET_RETIMER_MODE'?
1698 | ntfy |= UCSI_ENABLE_NTFY_SET_RETIMER_MODE;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| UCSI_CAP_SET_RETIMER_MODE
vim +1686 drivers/usb/typec/ucsi/ucsi.c
1664
1665 static u64 ucsi_get_supported_notifications(struct ucsi *ucsi)
1666 {
1667 u16 features = ucsi->cap.features;
1668 u64 ntfy = UCSI_ENABLE_NTFY_ALL;
1669
1670 if (!(features & UCSI_CAP_ALT_MODE_DETAILS))
1671 ntfy &= ~UCSI_ENABLE_NTFY_CAM_CHANGE;
1672
1673 if (!(features & UCSI_CAP_PDO_DETAILS))
1674 ntfy &= ~(UCSI_ENABLE_NTFY_PWR_LEVEL_CHANGE |
1675 UCSI_ENABLE_NTFY_CAP_CHANGE);
1676
1677 if (!(features & UCSI_CAP_EXT_SUPPLY_NOTIFICATIONS))
1678 ntfy &= ~UCSI_ENABLE_NTFY_EXT_PWR_SRC_CHANGE;
1679
1680 if (!(features & UCSI_CAP_PD_RESET))
1681 ntfy &= ~UCSI_ENABLE_NTFY_PD_RESET_COMPLETE;
1682
1683 if (ucsi->version <= UCSI_VERSION_1_2)
1684 return ntfy;
1685
> 1686 ntfy |= UCSI_ENABLE_NTFY_SINK_PATH_STS_CHANGE;
1687
1688 if (features & UCSI_CAP_GET_ATTENTION_VDO)
> 1689 ntfy |= UCSI_ENABLE_NTFY_ATTENTION;
1690
1691 if (features & UCSI_CAP_FW_UPDATE_REQUEST)
> 1692 ntfy |= UCSI_ENABLE_NTFY_LPM_FW_UPDATE_REQ;
1693
1694 if (features & UCSI_CAP_SECURITY_REQUEST)
> 1695 ntfy |= UCSI_ENABLE_NTFY_SECURITY_REQ_PARTNER;
1696
1697 if (features & UCSI_CAP_SET_RETIMER_MODE)
> 1698 ntfy |= UCSI_ENABLE_NTFY_SET_RETIMER_MODE;
1699
1700 return ntfy;
1701 }
1702
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
On Fri, May 24, 2024 at 11:58:19AM +0100, Diogo Ivo wrote:
> Hello,
>
> These two patches enable checking and enabling the new optional
> notification types defined in UCSI v2.0 and greater. For that, patch 1
> defines the new optional capability bits and patch 2 adds the logic for
> checking/enabling these new notification types.
>
> Diogo Ivo (2):
> usb: typec: ucsi: Add new capability bits
> usb: typec: ucsi: Enable UCSI v2.0 notifications
>
> drivers/usb/typec/ucsi/ucsi.c | 19 ++++++++++++++++++-
> drivers/usb/typec/ucsi/ucsi.h | 8 +++++++-
> 2 files changed, 25 insertions(+), 2 deletions(-)
You didn't declare dependency on [1], you didn't use --base when
formatting patches, so LKP has no way to know that there is a
dependency. In future please consider sending definitions together with
the patches actually using those defs.
[1] https://lore.kernel.org/all/3filrg6mbh6m3galir7ew5juakd25uvksimr7mqd7uc5td3xza@fdvxcewozqeh
--
With best wishes
Dmitry
On Fri, May 24, 2024 at 11:58:21AM +0100, Diogo Ivo wrote:
> UCSI version 2.0 and above define new PPM notifications. Update the
> logic to determine which notifications to enable taking into account
> these changes.
>
> Signed-off-by: Diogo Ivo <[email protected]>
> ---
> drivers/usb/typec/ucsi/ucsi.c | 19 ++++++++++++++++++-
> 1 file changed, 18 insertions(+), 1 deletion(-)
>
Reviewed-by: Dmitry Baryshkov <[email protected]>
--
With best wishes
Dmitry
On Fri, May 24, 2024 at 11:58:21AM +0100, Diogo Ivo wrote:
> UCSI version 2.0 and above define new PPM notifications. Update the
> logic to determine which notifications to enable taking into account
> these changes.
>
> Signed-off-by: Diogo Ivo <[email protected]>
Reviewed-by: Heikki Krogerus <[email protected]>
> ---
> drivers/usb/typec/ucsi/ucsi.c | 19 ++++++++++++++++++-
> 1 file changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c
> index cb52e7b0a2c5..0cc1c49da4a0 100644
> --- a/drivers/usb/typec/ucsi/ucsi.c
> +++ b/drivers/usb/typec/ucsi/ucsi.c
> @@ -1664,7 +1664,7 @@ static int ucsi_register_port(struct ucsi *ucsi, struct ucsi_connector *con)
>
> static u64 ucsi_get_supported_notifications(struct ucsi *ucsi)
> {
> - u8 features = ucsi->cap.features;
> + u16 features = ucsi->cap.features;
> u64 ntfy = UCSI_ENABLE_NTFY_ALL;
>
> if (!(features & UCSI_CAP_ALT_MODE_DETAILS))
> @@ -1680,6 +1680,23 @@ static u64 ucsi_get_supported_notifications(struct ucsi *ucsi)
> if (!(features & UCSI_CAP_PD_RESET))
> ntfy &= ~UCSI_ENABLE_NTFY_PD_RESET_COMPLETE;
>
> + if (ucsi->version <= UCSI_VERSION_1_2)
> + return ntfy;
> +
> + ntfy |= UCSI_ENABLE_NTFY_SINK_PATH_STS_CHANGE;
> +
> + if (features & UCSI_CAP_GET_ATTENTION_VDO)
> + ntfy |= UCSI_ENABLE_NTFY_ATTENTION;
> +
> + if (features & UCSI_CAP_FW_UPDATE_REQUEST)
> + ntfy |= UCSI_ENABLE_NTFY_LPM_FW_UPDATE_REQ;
> +
> + if (features & UCSI_CAP_SECURITY_REQUEST)
> + ntfy |= UCSI_ENABLE_NTFY_SECURITY_REQ_PARTNER;
> +
> + if (features & UCSI_CAP_SET_RETIMER_MODE)
> + ntfy |= UCSI_ENABLE_NTFY_SET_RETIMER_MODE;
> +
> return ntfy;
> }
>
> --
> 2.45.1
--
heikki
On Fri, May 24, 2024 at 11:58:20AM +0100, Diogo Ivo wrote:
> Newer UCSI versions defined additional optional capability bits. Add
> their definitions.
>
> Signed-off-by: Diogo Ivo <[email protected]>
Reviewed-by: Heikki Krogerus <[email protected]>
> ---
> drivers/usb/typec/ucsi/ucsi.h | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h
> index e70cf5b15562..ca4a879d9606 100644
> --- a/drivers/usb/typec/ucsi/ucsi.h
> +++ b/drivers/usb/typec/ucsi/ucsi.h
> @@ -225,7 +225,13 @@ struct ucsi_capability {
> #define UCSI_CAP_CABLE_DETAILS BIT(5)
> #define UCSI_CAP_EXT_SUPPLY_NOTIFICATIONS BIT(6)
> #define UCSI_CAP_PD_RESET BIT(7)
> -#define UCSI_CAP_GET_PD_MESSAGE BIT(8)
> +#define UCSI_CAP_GET_PD_MESSAGE BIT(8)
> +#define UCSI_CAP_GET_ATTENTION_VDO BIT(9)
> +#define UCSI_CAP_FW_UPDATE_REQUEST BIT(10)
> +#define UCSI_CAP_NEGOTIATED_PWR_LEVEL_CHANGE BIT(11)
> +#define UCSI_CAP_SECURITY_REQUEST BIT(12)
> +#define UCSI_CAP_SET_RETIMER_MODE BIT(13)
> +#define UCSI_CAP_CHUNKING_SUPPORT BIT(14)
> u8 reserved_1;
> u8 num_alt_modes;
> u8 reserved_2;
> --
> 2.45.1
--
heikki