mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 17:25:35 +03:00
net: can: mttcan: Fix build for Linux v6.16
In Linux v6.16, the structure 'data_bittiming_params' was added to the 'can_priv' structure and all the related data bittiming parameters were moved under this new structure. Add a test to conftest to determine if this new structure is present and update the Tegra MTTCAN driver accordingly. JIRA LINQPJ14-60 Change-Id: Ibd8f6bd81a903b15a55d837023dada835a1e72ca Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3374645 (cherry picked from commit 86396ec47b78a7716a5faa8d492d74efc7f23dce) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3461874 Reviewed-by: Brad Griffis <bgriffis@nvidia.com> GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
96cae7f9de
commit
594c03645c
@@ -988,7 +988,11 @@ static int mttcan_do_set_bittiming(struct net_device *dev)
|
|||||||
int err = 0;
|
int err = 0;
|
||||||
struct mttcan_priv *priv = netdev_priv(dev);
|
struct mttcan_priv *priv = netdev_priv(dev);
|
||||||
const struct can_bittiming *bt = &priv->can.bittiming;
|
const struct can_bittiming *bt = &priv->can.bittiming;
|
||||||
|
#if defined(NV_CAN_PRIV_STRUCT_HAS_STRUCT_DATA_BITTIMING_PARAMS) /* Linux v6.16 */
|
||||||
|
const struct can_bittiming *dbt = &priv->can.fd.data_bittiming;
|
||||||
|
#else
|
||||||
const struct can_bittiming *dbt = &priv->can.data_bittiming;
|
const struct can_bittiming *dbt = &priv->can.data_bittiming;
|
||||||
|
#endif
|
||||||
|
|
||||||
memcpy(&priv->ttcan->bt_config.nominal, bt,
|
memcpy(&priv->ttcan->bt_config.nominal, bt,
|
||||||
sizeof(struct can_bittiming));
|
sizeof(struct can_bittiming));
|
||||||
@@ -1197,7 +1201,11 @@ static struct net_device *alloc_mttcan_dev(void)
|
|||||||
|
|
||||||
priv->dev = dev;
|
priv->dev = dev;
|
||||||
priv->can.bittiming_const = &mttcan_normal_bittiming_const;
|
priv->can.bittiming_const = &mttcan_normal_bittiming_const;
|
||||||
|
#if defined(NV_CAN_PRIV_STRUCT_HAS_STRUCT_DATA_BITTIMING_PARAMS) /* Linux v6.16 */
|
||||||
|
priv->can.fd.data_bittiming_const = &mttcan_data_bittiming_const;
|
||||||
|
#else
|
||||||
priv->can.data_bittiming_const = &mttcan_data_bittiming_const;
|
priv->can.data_bittiming_const = &mttcan_data_bittiming_const;
|
||||||
|
#endif
|
||||||
priv->can.do_set_bittiming = mttcan_do_set_bittiming;
|
priv->can.do_set_bittiming = mttcan_do_set_bittiming;
|
||||||
priv->can.do_set_mode = mttcan_set_mode;
|
priv->can.do_set_mode = mttcan_set_mode;
|
||||||
priv->can.do_get_berr_counter = mttcan_get_berr_counter;
|
priv->can.do_get_berr_counter = mttcan_get_berr_counter;
|
||||||
|
|||||||
@@ -106,6 +106,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_mq_f_should_merge
|
|||||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_match_has_const_drv_arg
|
NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_match_has_const_drv_arg
|
||||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_remove_has_int_return_type
|
NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_remove_has_int_return_type
|
||||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_uevent_has_const_dev_arg
|
NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_uevent_has_const_dev_arg
|
||||||
|
NV_CONFTEST_FUNCTION_COMPILE_TESTS += can_priv_struct_has_struct_data_bittiming_params
|
||||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += class_attribute_struct_has_const_struct_class_attribute
|
NV_CONFTEST_FUNCTION_COMPILE_TESTS += class_attribute_struct_has_const_struct_class_attribute
|
||||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += class_create_has_no_owner_arg
|
NV_CONFTEST_FUNCTION_COMPILE_TESTS += class_create_has_no_owner_arg
|
||||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += class_struct_devnode_has_const_dev_arg
|
NV_CONFTEST_FUNCTION_COMPILE_TESTS += class_struct_devnode_has_const_dev_arg
|
||||||
|
|||||||
@@ -6832,6 +6832,24 @@ compile_test() {
|
|||||||
compile_check_conftest "$CODE" "NV_BUS_TYPE_STRUCT_UEVENT_HAS_CONST_DEV_ARG" "" "types"
|
compile_check_conftest "$CODE" "NV_BUS_TYPE_STRUCT_UEVENT_HAS_CONST_DEV_ARG" "" "types"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
can_priv_struct_has_struct_data_bittiming_params)
|
||||||
|
#
|
||||||
|
# Determine if the 'can_priv' structure has a member of type
|
||||||
|
# 'structure data_bittiming_params'.
|
||||||
|
#
|
||||||
|
# In Linux v6.16, commit b803c4a4f788 ("can: dev: add struct
|
||||||
|
# data_bittiming_params to group FD parameters") added the
|
||||||
|
# 'data_bittiming_params' structure to the 'can_priv' structure.
|
||||||
|
#
|
||||||
|
CODE="
|
||||||
|
#include <linux/can/dev.h>
|
||||||
|
int conftest_can_priv_struct_has_struct_data_bittiming_params(void) {
|
||||||
|
return offsetof(struct can_priv, fd);
|
||||||
|
}"
|
||||||
|
|
||||||
|
compile_check_conftest "$CODE" "NV_CAN_PRIV_STRUCT_HAS_STRUCT_DATA_BITTIMING_PARAMS" "" "types"
|
||||||
|
;;
|
||||||
|
|
||||||
class_attribute_struct_has_const_struct_class_attribute)
|
class_attribute_struct_has_const_struct_class_attribute)
|
||||||
#
|
#
|
||||||
# Determine if struct class_attribute function has const type "struct class_attribute"
|
# Determine if struct class_attribute function has const type "struct class_attribute"
|
||||||
|
|||||||
Reference in New Issue
Block a user