@@ -248,6 +248,29 @@ static void deserialize_phy_packet_self_id_extended(u32 quadlet, unsigned int *p
248
248
* has_more_packets = phy_packet_self_id_get_more_packets (quadlet );
249
249
}
250
250
251
+ static void serialize_phy_packet_phy_config (u32 * quadlet , unsigned int packet_identifier ,
252
+ unsigned int root_id , bool has_force_root_node ,
253
+ bool has_gap_count_optimization , unsigned int gap_count )
254
+ {
255
+ phy_packet_set_packet_identifier (quadlet , packet_identifier );
256
+ phy_packet_phy_config_set_root_id (quadlet , root_id );
257
+ phy_packet_phy_config_set_force_root_node (quadlet , has_force_root_node );
258
+ phy_packet_phy_config_set_gap_count_optimization (quadlet , has_gap_count_optimization );
259
+ phy_packet_phy_config_set_gap_count (quadlet , gap_count );
260
+ }
261
+
262
+ static void deserialize_phy_packet_phy_config (u32 quadlet , unsigned int * packet_identifier ,
263
+ unsigned int * root_id , bool * has_force_root_node ,
264
+ bool * has_gap_count_optimization ,
265
+ unsigned int * gap_count )
266
+ {
267
+ * packet_identifier = phy_packet_get_packet_identifier (quadlet );
268
+ * root_id = phy_packet_phy_config_get_root_id (quadlet );
269
+ * has_force_root_node = phy_packet_phy_config_get_force_root_node (quadlet );
270
+ * has_gap_count_optimization = phy_packet_phy_config_get_gap_count_optimization (quadlet );
271
+ * gap_count = phy_packet_phy_config_get_gap_count (quadlet );
272
+ }
273
+
251
274
static void test_async_header_write_quadlet_request (struct kunit * test )
252
275
{
253
276
static const u32 expected [ASYNC_HEADER_QUADLET_COUNT ] = {
@@ -811,6 +834,60 @@ static void test_phy_packet_self_id_zero_and_one(struct kunit *test)
811
834
KUNIT_EXPECT_MEMEQ (test , quadlets , expected , sizeof (expected ));
812
835
}
813
836
837
+ static void test_phy_packet_phy_config_force_root_node (struct kunit * test )
838
+ {
839
+ const u32 expected = 0x02800000 ;
840
+ u32 quadlet = 0 ;
841
+
842
+ unsigned int packet_identifier ;
843
+ unsigned int root_id ;
844
+ bool has_force_root_node ;
845
+ bool has_gap_count_optimization ;
846
+ unsigned int gap_count ;
847
+
848
+ deserialize_phy_packet_phy_config (expected , & packet_identifier , & root_id ,
849
+ & has_force_root_node , & has_gap_count_optimization ,
850
+ & gap_count );
851
+
852
+ KUNIT_EXPECT_EQ (test , PHY_PACKET_PACKET_IDENTIFIER_PHY_CONFIG , packet_identifier );
853
+ KUNIT_EXPECT_EQ (test , 0x02 , root_id );
854
+ KUNIT_EXPECT_TRUE (test , has_force_root_node );
855
+ KUNIT_EXPECT_FALSE (test , has_gap_count_optimization );
856
+ KUNIT_EXPECT_EQ (test , 0 , gap_count );
857
+
858
+ serialize_phy_packet_phy_config (& quadlet , packet_identifier , root_id , has_force_root_node ,
859
+ has_gap_count_optimization , gap_count );
860
+
861
+ KUNIT_EXPECT_EQ (test , quadlet , expected );
862
+ }
863
+
864
+ static void test_phy_packet_phy_config_gap_count_optimization (struct kunit * test )
865
+ {
866
+ const u32 expected = 0x034f0000 ;
867
+ u32 quadlet = 0 ;
868
+
869
+ unsigned int packet_identifier ;
870
+ unsigned int root_id ;
871
+ bool has_force_root_node ;
872
+ bool has_gap_count_optimization ;
873
+ unsigned int gap_count ;
874
+
875
+ deserialize_phy_packet_phy_config (expected , & packet_identifier , & root_id ,
876
+ & has_force_root_node , & has_gap_count_optimization ,
877
+ & gap_count );
878
+
879
+ KUNIT_EXPECT_EQ (test , PHY_PACKET_PACKET_IDENTIFIER_PHY_CONFIG , packet_identifier );
880
+ KUNIT_EXPECT_EQ (test , 0x03 , root_id );
881
+ KUNIT_EXPECT_FALSE (test , has_force_root_node );
882
+ KUNIT_EXPECT_TRUE (test , has_gap_count_optimization );
883
+ KUNIT_EXPECT_EQ (test , 0x0f , gap_count );
884
+
885
+ serialize_phy_packet_phy_config (& quadlet , packet_identifier , root_id , has_force_root_node ,
886
+ has_gap_count_optimization , gap_count );
887
+
888
+ KUNIT_EXPECT_EQ (test , quadlet , expected );
889
+ }
890
+
814
891
static struct kunit_case packet_serdes_test_cases [] = {
815
892
KUNIT_CASE (test_async_header_write_quadlet_request ),
816
893
KUNIT_CASE (test_async_header_write_block_request ),
@@ -825,6 +902,8 @@ static struct kunit_case packet_serdes_test_cases[] = {
825
902
KUNIT_CASE (test_phy_packet_self_id_zero_case0 ),
826
903
KUNIT_CASE (test_phy_packet_self_id_zero_case1 ),
827
904
KUNIT_CASE (test_phy_packet_self_id_zero_and_one ),
905
+ KUNIT_CASE (test_phy_packet_phy_config_force_root_node ),
906
+ KUNIT_CASE (test_phy_packet_phy_config_gap_count_optimization ),
828
907
{}
829
908
};
830
909
0 commit comments