Commit 03ee3183 authored by Maximilian Luz's avatar Maximilian Luz Committed by Hans de Goede

platform/surface: aggregator: Make SSAM_DEFINE_SYNC_REQUEST_x define static functions

The SSAM_DEFINE_SYNC_REQUEST_x() macros are intended to reduce
boiler-plate code for SSAM request definitions by defining a wrapper
function for the specified request. The client device variants of those
macros, i.e. SSAM_DEFINE_SYNC_REQUEST_CL_x() in particular rely on the
multi-device (MD) variants, e.g.:

    #define SSAM_DEFINE_SYNC_REQUEST_CL_R(name, rtype, spec...)   \
        SSAM_DEFINE_SYNC_REQUEST_MD_R(__raw_##name, rtype, spec)  \
        int name(struct ssam_device *sdev, rtype *ret)            \
        {                                                         \
            return __raw_##name(sdev->ctrl, sdev->uid.target,     \
                                sdev->uid.instance, ret);         \
        }

This now creates the problem that it is not possible to declare the
generated functions static via

    static SSAM_DEFINE_SYNC_REQUEST_CL_R(...)

as this will only apply to the function defined by the multi-device
macro, i.e. SSAM_DEFINE_SYNC_REQUEST_MD_R(). Thus compiling with
`-Wmissing-prototypes' rightfully complains that there is a 'static'
keyword missing.

To solve this, make all SSAM_DEFINE_SYNC_REQUEST_x() macros define
static functions. Non-client-device macros are also changed for
consistency. In general, we expect those functions to be only used
locally in the respective drivers for the corresponding interfaces, so
having to define a wrapper function to be able to export this should be
the odd case out.
Reported-by: default avatarkernel test robot <lkp@intel.com>
Fixes: b78b4982 ("platform/surface: Add platform profile driver")
Signed-off-by: default avatarMaximilian Luz <luzmaximilian@gmail.com>
Link: https://lore.kernel.org/r/20210304190524.1172197-1-luzmaximilian@gmail.comSigned-off-by: default avatarHans de Goede <hdegoede@redhat.com>
parent b78b4982
...@@ -248,7 +248,7 @@ This example defines a function ...@@ -248,7 +248,7 @@ This example defines a function
.. code-block:: c .. code-block:: c
int __ssam_tmp_perf_mode_set(struct ssam_controller *ctrl, const __le32 *arg); static int __ssam_tmp_perf_mode_set(struct ssam_controller *ctrl, const __le32 *arg);
executing the specified request, with the controller passed in when calling executing the specified request, with the controller passed in when calling
said function. In this example, the argument is provided via the ``arg`` said function. In this example, the argument is provided via the ``arg``
...@@ -296,7 +296,7 @@ This invocation of the macro defines a function ...@@ -296,7 +296,7 @@ This invocation of the macro defines a function
.. code-block:: c .. code-block:: c
int ssam_bat_get_sta(struct ssam_device *sdev, __le32 *ret); static int ssam_bat_get_sta(struct ssam_device *sdev, __le32 *ret);
executing the specified request, using the device IDs and controller given executing the specified request, using the device IDs and controller given
in the client device. The full list of such macros for client devices is: in the client device. The full list of such macros for client devices is:
......
...@@ -1750,35 +1750,35 @@ EXPORT_SYMBOL_GPL(ssam_request_sync_with_buffer); ...@@ -1750,35 +1750,35 @@ EXPORT_SYMBOL_GPL(ssam_request_sync_with_buffer);
/* -- Internal SAM requests. ------------------------------------------------ */ /* -- Internal SAM requests. ------------------------------------------------ */
static SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_get_firmware_version, __le32, { SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_get_firmware_version, __le32, {
.target_category = SSAM_SSH_TC_SAM, .target_category = SSAM_SSH_TC_SAM,
.target_id = 0x01, .target_id = 0x01,
.command_id = 0x13, .command_id = 0x13,
.instance_id = 0x00, .instance_id = 0x00,
}); });
static SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_display_off, u8, { SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_display_off, u8, {
.target_category = SSAM_SSH_TC_SAM, .target_category = SSAM_SSH_TC_SAM,
.target_id = 0x01, .target_id = 0x01,
.command_id = 0x15, .command_id = 0x15,
.instance_id = 0x00, .instance_id = 0x00,
}); });
static SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_display_on, u8, { SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_display_on, u8, {
.target_category = SSAM_SSH_TC_SAM, .target_category = SSAM_SSH_TC_SAM,
.target_id = 0x01, .target_id = 0x01,
.command_id = 0x16, .command_id = 0x16,
.instance_id = 0x00, .instance_id = 0x00,
}); });
static SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_d0_exit, u8, { SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_d0_exit, u8, {
.target_category = SSAM_SSH_TC_SAM, .target_category = SSAM_SSH_TC_SAM,
.target_id = 0x01, .target_id = 0x01,
.command_id = 0x33, .command_id = 0x33,
.instance_id = 0x00, .instance_id = 0x00,
}); });
static SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_d0_entry, u8, { SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_d0_entry, u8, {
.target_category = SSAM_SSH_TC_SAM, .target_category = SSAM_SSH_TC_SAM,
.target_id = 0x01, .target_id = 0x01,
.command_id = 0x34, .command_id = 0x34,
......
...@@ -302,7 +302,7 @@ struct ssam_base_hub { ...@@ -302,7 +302,7 @@ struct ssam_base_hub {
struct ssam_event_notifier notif; struct ssam_event_notifier notif;
}; };
static SSAM_DEFINE_SYNC_REQUEST_R(ssam_bas_query_opmode, u8, { SSAM_DEFINE_SYNC_REQUEST_R(ssam_bas_query_opmode, u8, {
.target_category = SSAM_SSH_TC_BAS, .target_category = SSAM_SSH_TC_BAS,
.target_id = 0x01, .target_id = 0x01,
.command_id = 0x0d, .command_id = 0x0d,
......
...@@ -32,12 +32,12 @@ struct ssam_tmp_profile_device { ...@@ -32,12 +32,12 @@ struct ssam_tmp_profile_device {
struct platform_profile_handler handler; struct platform_profile_handler handler;
}; };
static SSAM_DEFINE_SYNC_REQUEST_CL_R(__ssam_tmp_profile_get, struct ssam_tmp_profile_info, { SSAM_DEFINE_SYNC_REQUEST_CL_R(__ssam_tmp_profile_get, struct ssam_tmp_profile_info, {
.target_category = SSAM_SSH_TC_TMP, .target_category = SSAM_SSH_TC_TMP,
.command_id = 0x02, .command_id = 0x02,
}); });
static SSAM_DEFINE_SYNC_REQUEST_CL_W(__ssam_tmp_profile_set, __le32, { SSAM_DEFINE_SYNC_REQUEST_CL_W(__ssam_tmp_profile_set, __le32, {
.target_category = SSAM_SSH_TC_TMP, .target_category = SSAM_SSH_TC_TMP,
.command_id = 0x03, .command_id = 0x03,
}); });
......
...@@ -344,16 +344,16 @@ struct ssam_request_spec_md { ...@@ -344,16 +344,16 @@ struct ssam_request_spec_md {
* request has been fully completed. The required transport buffer will be * request has been fully completed. The required transport buffer will be
* allocated on the stack. * allocated on the stack.
* *
* The generated function is defined as ``int name(struct ssam_controller * The generated function is defined as ``static int name(struct
* *ctrl)``, returning the status of the request, which is zero on success and * ssam_controller *ctrl)``, returning the status of the request, which is
* negative on failure. The ``ctrl`` parameter is the controller via which the * zero on success and negative on failure. The ``ctrl`` parameter is the
* request is being sent. * controller via which the request is being sent.
* *
* Refer to ssam_request_sync_onstack() for more details on the behavior of * Refer to ssam_request_sync_onstack() for more details on the behavior of
* the generated function. * the generated function.
*/ */
#define SSAM_DEFINE_SYNC_REQUEST_N(name, spec...) \ #define SSAM_DEFINE_SYNC_REQUEST_N(name, spec...) \
int name(struct ssam_controller *ctrl) \ static int name(struct ssam_controller *ctrl) \
{ \ { \
struct ssam_request_spec s = (struct ssam_request_spec)spec; \ struct ssam_request_spec s = (struct ssam_request_spec)spec; \
struct ssam_request rqst; \ struct ssam_request rqst; \
...@@ -383,17 +383,17 @@ struct ssam_request_spec_md { ...@@ -383,17 +383,17 @@ struct ssam_request_spec_md {
* returning once the request has been fully completed. The required transport * returning once the request has been fully completed. The required transport
* buffer will be allocated on the stack. * buffer will be allocated on the stack.
* *
* The generated function is defined as ``int name(struct ssam_controller * The generated function is defined as ``static int name(struct
* *ctrl, const atype *arg)``, returning the status of the request, which is * ssam_controller *ctrl, const atype *arg)``, returning the status of the
* zero on success and negative on failure. The ``ctrl`` parameter is the * request, which is zero on success and negative on failure. The ``ctrl``
* controller via which the request is sent. The request argument is specified * parameter is the controller via which the request is sent. The request
* via the ``arg`` pointer. * argument is specified via the ``arg`` pointer.
* *
* Refer to ssam_request_sync_onstack() for more details on the behavior of * Refer to ssam_request_sync_onstack() for more details on the behavior of
* the generated function. * the generated function.
*/ */
#define SSAM_DEFINE_SYNC_REQUEST_W(name, atype, spec...) \ #define SSAM_DEFINE_SYNC_REQUEST_W(name, atype, spec...) \
int name(struct ssam_controller *ctrl, const atype *arg) \ static int name(struct ssam_controller *ctrl, const atype *arg) \
{ \ { \
struct ssam_request_spec s = (struct ssam_request_spec)spec; \ struct ssam_request_spec s = (struct ssam_request_spec)spec; \
struct ssam_request rqst; \ struct ssam_request rqst; \
...@@ -424,17 +424,17 @@ struct ssam_request_spec_md { ...@@ -424,17 +424,17 @@ struct ssam_request_spec_md {
* request itself, returning once the request has been fully completed. The * request itself, returning once the request has been fully completed. The
* required transport buffer will be allocated on the stack. * required transport buffer will be allocated on the stack.
* *
* The generated function is defined as ``int name(struct ssam_controller * The generated function is defined as ``static int name(struct
* *ctrl, rtype *ret)``, returning the status of the request, which is zero on * ssam_controller *ctrl, rtype *ret)``, returning the status of the request,
* success and negative on failure. The ``ctrl`` parameter is the controller * which is zero on success and negative on failure. The ``ctrl`` parameter is
* via which the request is sent. The request's return value is written to the * the controller via which the request is sent. The request's return value is
* memory pointed to by the ``ret`` parameter. * written to the memory pointed to by the ``ret`` parameter.
* *
* Refer to ssam_request_sync_onstack() for more details on the behavior of * Refer to ssam_request_sync_onstack() for more details on the behavior of
* the generated function. * the generated function.
*/ */
#define SSAM_DEFINE_SYNC_REQUEST_R(name, rtype, spec...) \ #define SSAM_DEFINE_SYNC_REQUEST_R(name, rtype, spec...) \
int name(struct ssam_controller *ctrl, rtype *ret) \ static int name(struct ssam_controller *ctrl, rtype *ret) \
{ \ { \
struct ssam_request_spec s = (struct ssam_request_spec)spec; \ struct ssam_request_spec s = (struct ssam_request_spec)spec; \
struct ssam_request rqst; \ struct ssam_request rqst; \
...@@ -483,17 +483,17 @@ struct ssam_request_spec_md { ...@@ -483,17 +483,17 @@ struct ssam_request_spec_md {
* returning once the request has been fully completed. The required transport * returning once the request has been fully completed. The required transport
* buffer will be allocated on the stack. * buffer will be allocated on the stack.
* *
* The generated function is defined as ``int name(struct ssam_controller * The generated function is defined as ``static int name(struct
* *ctrl, u8 tid, u8 iid)``, returning the status of the request, which is * ssam_controller *ctrl, u8 tid, u8 iid)``, returning the status of the
* zero on success and negative on failure. The ``ctrl`` parameter is the * request, which is zero on success and negative on failure. The ``ctrl``
* controller via which the request is sent, ``tid`` the target ID for the * parameter is the controller via which the request is sent, ``tid`` the
* request, and ``iid`` the instance ID. * target ID for the request, and ``iid`` the instance ID.
* *
* Refer to ssam_request_sync_onstack() for more details on the behavior of * Refer to ssam_request_sync_onstack() for more details on the behavior of
* the generated function. * the generated function.
*/ */
#define SSAM_DEFINE_SYNC_REQUEST_MD_N(name, spec...) \ #define SSAM_DEFINE_SYNC_REQUEST_MD_N(name, spec...) \
int name(struct ssam_controller *ctrl, u8 tid, u8 iid) \ static int name(struct ssam_controller *ctrl, u8 tid, u8 iid) \
{ \ { \
struct ssam_request_spec_md s = (struct ssam_request_spec_md)spec; \ struct ssam_request_spec_md s = (struct ssam_request_spec_md)spec; \
struct ssam_request rqst; \ struct ssam_request rqst; \
...@@ -524,18 +524,18 @@ struct ssam_request_spec_md { ...@@ -524,18 +524,18 @@ struct ssam_request_spec_md {
* the request itself, returning once the request has been fully completed. * the request itself, returning once the request has been fully completed.
* The required transport buffer will be allocated on the stack. * The required transport buffer will be allocated on the stack.
* *
* The generated function is defined as ``int name(struct ssam_controller * The generated function is defined as ``static int name(struct
* *ctrl, u8 tid, u8 iid, const atype *arg)``, returning the status of the * ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg)``, returning the
* request, which is zero on success and negative on failure. The ``ctrl`` * status of the request, which is zero on success and negative on failure.
* parameter is the controller via which the request is sent, ``tid`` the * The ``ctrl`` parameter is the controller via which the request is sent,
* target ID for the request, and ``iid`` the instance ID. The request argument * ``tid`` the target ID for the request, and ``iid`` the instance ID. The
* is specified via the ``arg`` pointer. * request argument is specified via the ``arg`` pointer.
* *
* Refer to ssam_request_sync_onstack() for more details on the behavior of * Refer to ssam_request_sync_onstack() for more details on the behavior of
* the generated function. * the generated function.
*/ */
#define SSAM_DEFINE_SYNC_REQUEST_MD_W(name, atype, spec...) \ #define SSAM_DEFINE_SYNC_REQUEST_MD_W(name, atype, spec...) \
int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg)\ static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg) \
{ \ { \
struct ssam_request_spec_md s = (struct ssam_request_spec_md)spec; \ struct ssam_request_spec_md s = (struct ssam_request_spec_md)spec; \
struct ssam_request rqst; \ struct ssam_request rqst; \
...@@ -567,18 +567,18 @@ struct ssam_request_spec_md { ...@@ -567,18 +567,18 @@ struct ssam_request_spec_md {
* execution of the request itself, returning once the request has been fully * execution of the request itself, returning once the request has been fully
* completed. The required transport buffer will be allocated on the stack. * completed. The required transport buffer will be allocated on the stack.
* *
* The generated function is defined as ``int name(struct ssam_controller * The generated function is defined as ``static int name(struct
* *ctrl, u8 tid, u8 iid, rtype *ret)``, returning the status of the request, * ssam_controller *ctrl, u8 tid, u8 iid, rtype *ret)``, returning the status
* which is zero on success and negative on failure. The ``ctrl`` parameter is * of the request, which is zero on success and negative on failure. The
* the controller via which the request is sent, ``tid`` the target ID for the * ``ctrl`` parameter is the controller via which the request is sent, ``tid``
* request, and ``iid`` the instance ID. The request's return value is written * the target ID for the request, and ``iid`` the instance ID. The request's
* to the memory pointed to by the ``ret`` parameter. * return value is written to the memory pointed to by the ``ret`` parameter.
* *
* Refer to ssam_request_sync_onstack() for more details on the behavior of * Refer to ssam_request_sync_onstack() for more details on the behavior of
* the generated function. * the generated function.
*/ */
#define SSAM_DEFINE_SYNC_REQUEST_MD_R(name, rtype, spec...) \ #define SSAM_DEFINE_SYNC_REQUEST_MD_R(name, rtype, spec...) \
int name(struct ssam_controller *ctrl, u8 tid, u8 iid, rtype *ret) \ static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, rtype *ret) \
{ \ { \
struct ssam_request_spec_md s = (struct ssam_request_spec_md)spec; \ struct ssam_request_spec_md s = (struct ssam_request_spec_md)spec; \
struct ssam_request rqst; \ struct ssam_request rqst; \
......
...@@ -336,17 +336,18 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d); ...@@ -336,17 +336,18 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d);
* request has been fully completed. The required transport buffer will be * request has been fully completed. The required transport buffer will be
* allocated on the stack. * allocated on the stack.
* *
* The generated function is defined as ``int name(struct ssam_device *sdev)``, * The generated function is defined as ``static int name(struct ssam_device
* returning the status of the request, which is zero on success and negative * *sdev)``, returning the status of the request, which is zero on success and
* on failure. The ``sdev`` parameter specifies both the target device of the * negative on failure. The ``sdev`` parameter specifies both the target
* request and by association the controller via which the request is sent. * device of the request and by association the controller via which the
* request is sent.
* *
* Refer to ssam_request_sync_onstack() for more details on the behavior of * Refer to ssam_request_sync_onstack() for more details on the behavior of
* the generated function. * the generated function.
*/ */
#define SSAM_DEFINE_SYNC_REQUEST_CL_N(name, spec...) \ #define SSAM_DEFINE_SYNC_REQUEST_CL_N(name, spec...) \
SSAM_DEFINE_SYNC_REQUEST_MD_N(__raw_##name, spec) \ SSAM_DEFINE_SYNC_REQUEST_MD_N(__raw_##name, spec) \
int name(struct ssam_device *sdev) \ static int name(struct ssam_device *sdev) \
{ \ { \
return __raw_##name(sdev->ctrl, sdev->uid.target, \ return __raw_##name(sdev->ctrl, sdev->uid.target, \
sdev->uid.instance); \ sdev->uid.instance); \
...@@ -368,19 +369,19 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d); ...@@ -368,19 +369,19 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d);
* itself, returning once the request has been fully completed. The required * itself, returning once the request has been fully completed. The required
* transport buffer will be allocated on the stack. * transport buffer will be allocated on the stack.
* *
* The generated function is defined as ``int name(struct ssam_device *sdev, * The generated function is defined as ``static int name(struct ssam_device
* const atype *arg)``, returning the status of the request, which is zero on * *sdev, const atype *arg)``, returning the status of the request, which is
* success and negative on failure. The ``sdev`` parameter specifies both the * zero on success and negative on failure. The ``sdev`` parameter specifies
* target device of the request and by association the controller via which * both the target device of the request and by association the controller via
* the request is sent. The request's argument is specified via the ``arg`` * which the request is sent. The request's argument is specified via the
* pointer. * ``arg`` pointer.
* *
* Refer to ssam_request_sync_onstack() for more details on the behavior of * Refer to ssam_request_sync_onstack() for more details on the behavior of
* the generated function. * the generated function.
*/ */
#define SSAM_DEFINE_SYNC_REQUEST_CL_W(name, atype, spec...) \ #define SSAM_DEFINE_SYNC_REQUEST_CL_W(name, atype, spec...) \
SSAM_DEFINE_SYNC_REQUEST_MD_W(__raw_##name, atype, spec) \ SSAM_DEFINE_SYNC_REQUEST_MD_W(__raw_##name, atype, spec) \
int name(struct ssam_device *sdev, const atype *arg) \ static int name(struct ssam_device *sdev, const atype *arg) \
{ \ { \
return __raw_##name(sdev->ctrl, sdev->uid.target, \ return __raw_##name(sdev->ctrl, sdev->uid.target, \
sdev->uid.instance, arg); \ sdev->uid.instance, arg); \
...@@ -402,8 +403,8 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d); ...@@ -402,8 +403,8 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d);
* itself, returning once the request has been fully completed. The required * itself, returning once the request has been fully completed. The required
* transport buffer will be allocated on the stack. * transport buffer will be allocated on the stack.
* *
* The generated function is defined as ``int name(struct ssam_device *sdev, * The generated function is defined as ``static int name(struct ssam_device
* rtype *ret)``, returning the status of the request, which is zero on * *sdev, rtype *ret)``, returning the status of the request, which is zero on
* success and negative on failure. The ``sdev`` parameter specifies both the * success and negative on failure. The ``sdev`` parameter specifies both the
* target device of the request and by association the controller via which * target device of the request and by association the controller via which
* the request is sent. The request's return value is written to the memory * the request is sent. The request's return value is written to the memory
...@@ -414,7 +415,7 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d); ...@@ -414,7 +415,7 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d);
*/ */
#define SSAM_DEFINE_SYNC_REQUEST_CL_R(name, rtype, spec...) \ #define SSAM_DEFINE_SYNC_REQUEST_CL_R(name, rtype, spec...) \
SSAM_DEFINE_SYNC_REQUEST_MD_R(__raw_##name, rtype, spec) \ SSAM_DEFINE_SYNC_REQUEST_MD_R(__raw_##name, rtype, spec) \
int name(struct ssam_device *sdev, rtype *ret) \ static int name(struct ssam_device *sdev, rtype *ret) \
{ \ { \
return __raw_##name(sdev->ctrl, sdev->uid.target, \ return __raw_##name(sdev->ctrl, sdev->uid.target, \
sdev->uid.instance, ret); \ sdev->uid.instance, ret); \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment