From: Pavel Belous <redacted>
Date: Wed, 23 Aug 2017 17:05:05 +0300
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h
index a66aee5..fc69408a 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h
@@ -160,6 +160,19 @@ enum hal_atl_utils_fw_state_e {
MPI_POWER = 4,
};
+union hal_atl_utils_hw_mpi_state_reg {
+ u32 val;
+ struct {
+ u8 e_state;
+ u8 reserved1;
+ u8 u_speed;
+ u8 reserved2:1;
+ u8 disable_dirty_wake:1;
+ u8 reserved3:2;
+ u8 u_downshift:4;
+ };
+};
+
You need to consider endianness when declaring bitfields in C.
Seriously, I'd rather you simply fixed the shifts and masks into the
u32 value than going down this route.