LibDriver LAN8720  1.0.0
LAN8720 full-featured driver
driver_lan8720_register_test.c
Go to the documentation of this file.
1 
38 #include <stdlib.h>
39 
40 static lan8720_handle_t gs_handle;
50 uint8_t lan8720_register_test(uint8_t addr)
51 {
52  uint8_t res;
53  uint8_t reg;
54  uint8_t reg_check;
55  uint8_t selector;
56  uint8_t selector_check;
57  uint32_t phy_id;
58  uint8_t model_number;
59  uint8_t revision_number;
60  uint32_t phy_id_check;
61  uint8_t model_number_check;
62  uint8_t revision_number_check;
63  uint16_t cnt;
64  lan8720_speed_t speed;
65  lan8720_info_t info;
66  lan8720_bool_t enable;
67  lan8720_duplex_t mode;
69  lan8720_link_t status;
70  lan8720_pause_t pause;
71  lan8720_mode_t mode_check;
72  lan8720_polarity_t polarity;
73  lan8720_speed_indication_t speed_indication;
74 
75  /* link interface function */
86 
87  /* get information */
88  res = lan8720_info(&info);
89  if (res != 0)
90  {
91  lan8720_interface_debug_print("lan8720: get info failed.\n");
92 
93  return 1;
94  }
95  else
96  {
97  /* print chip info */
98  lan8720_interface_debug_print("lan8720: chip is %s.\n", info.chip_name);
99  lan8720_interface_debug_print("lan8720: manufacturer is %s.\n", info.manufacturer_name);
100  lan8720_interface_debug_print("lan8720: interface is %s.\n", info.interface);
101  lan8720_interface_debug_print("lan8720: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
102  lan8720_interface_debug_print("lan8720: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
103  lan8720_interface_debug_print("lan8720: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
104  lan8720_interface_debug_print("lan8720: max current is %0.2fmA.\n", info.max_current_ma);
105  lan8720_interface_debug_print("lan8720: max temperature is %0.1fC.\n", info.temperature_max);
106  lan8720_interface_debug_print("lan8720: min temperature is %0.1fC.\n", info.temperature_min);
107  }
108 
109  /* start register test */
110  lan8720_interface_debug_print("lan8720: start register test.\n");
111 
112  /* lan8720_set_address/lan8720_get_address test */
113  lan8720_interface_debug_print("lan8720: lan8720_set_address/lan8720_get_address test.\n");
114 
115  /* set address */
116  reg = rand() % 0x20;
117  res = lan8720_set_address(&gs_handle, reg);
118  if (res != 0)
119  {
120  lan8720_interface_debug_print("lan8720: set address failed.\n");
121 
122  return 1;
123  }
124  lan8720_interface_debug_print("lan8720: set address 0x%02X.\n", reg);
125  res = lan8720_get_address(&gs_handle, &reg_check);
126  if (res != 0)
127  {
128  lan8720_interface_debug_print("lan8720: get address failed.\n");
129 
130  return 1;
131  }
132  lan8720_interface_debug_print("lan8720: check address %s.\n", reg == reg_check ? "ok" : "error");
133 
134  /* set address */
135  res = lan8720_set_address(&gs_handle, addr);
136  if (res != 0)
137  {
138  lan8720_interface_debug_print("lan8720: set address failed.\n");
139 
140  return 1;
141  }
142 
143  /* init */
144  res = lan8720_init(&gs_handle);
145  if (res != 0)
146  {
147  lan8720_interface_debug_print("lan8720: init failed.\n");
148 
149  return 1;
150  }
151 
152  /* lan8720_set_loop_back/lan8720_get_loop_back test */
153  lan8720_interface_debug_print("lan8720: lan8720_set_loop_back/lan8720_get_loop_back test.\n");
154 
155  /* enable loop back */
156  res = lan8720_set_loop_back(&gs_handle, LAN8720_BOOL_TRUE);
157  if (res != 0)
158  {
159  lan8720_interface_debug_print("lan8720: set loop back failed.\n");
160  (void)lan8720_deinit(&gs_handle);
161 
162  return 1;
163  }
164  lan8720_interface_debug_print("lan8720: enable loop back.\n");
165  res = lan8720_get_loop_back(&gs_handle, &enable);
166  if (res != 0)
167  {
168  lan8720_interface_debug_print("lan8720: get loop back failed.\n");
169  (void)lan8720_deinit(&gs_handle);
170 
171  return 1;
172  }
173  lan8720_interface_debug_print("lan8720: check loop back %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
174 
175  /* disable loop back */
176  res = lan8720_set_loop_back(&gs_handle, LAN8720_BOOL_FALSE);
177  if (res != 0)
178  {
179  lan8720_interface_debug_print("lan8720: set loop back failed.\n");
180  (void)lan8720_deinit(&gs_handle);
181 
182  return 1;
183  }
184  lan8720_interface_debug_print("lan8720: disable loop back.\n");
185  res = lan8720_get_loop_back(&gs_handle, &enable);
186  if (res != 0)
187  {
188  lan8720_interface_debug_print("lan8720: get loop back failed.\n");
189  (void)lan8720_deinit(&gs_handle);
190 
191  return 1;
192  }
193  lan8720_interface_debug_print("lan8720: check loop back %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
194 
195  /* lan8720_set_speed_select/lan8720_get_speed_select test */
196  lan8720_interface_debug_print("lan8720: lan8720_set_speed_select/lan8720_get_speed_select test.\n");
197 
198  /* 10M */
199  res = lan8720_set_speed_select(&gs_handle, LAN8720_SPEED_10M);
200  if (res != 0)
201  {
202  lan8720_interface_debug_print("lan8720: set speed select failed.\n");
203  (void)lan8720_deinit(&gs_handle);
204 
205  return 1;
206  }
207  lan8720_interface_debug_print("lan8720: set speed select 10mbps.\n");
208  res = lan8720_get_speed_select(&gs_handle, &speed);
209  if (res != 0)
210  {
211  lan8720_interface_debug_print("lan8720: get speed select failed.\n");
212  (void)lan8720_deinit(&gs_handle);
213 
214  return 1;
215  }
216  lan8720_interface_debug_print("lan8720: check speed select %s.\n", speed == LAN8720_SPEED_10M ? "ok" : "error");
217 
218  /* 100M */
219  res = lan8720_set_speed_select(&gs_handle, LAN8720_SPEED_100M);
220  if (res != 0)
221  {
222  lan8720_interface_debug_print("lan8720: set speed select failed.\n");
223  (void)lan8720_deinit(&gs_handle);
224 
225  return 1;
226  }
227  lan8720_interface_debug_print("lan8720: set speed select 100mbps.\n");
228  res = lan8720_get_speed_select(&gs_handle, &speed);
229  if (res != 0)
230  {
231  lan8720_interface_debug_print("lan8720: get speed select failed.\n");
232  (void)lan8720_deinit(&gs_handle);
233 
234  return 1;
235  }
236  lan8720_interface_debug_print("lan8720: check speed select %s.\n", speed == LAN8720_SPEED_100M ? "ok" : "error");
237 
238  /* lan8720_set_auto_negotiation/lan8720_get_auto_negotiation test */
239  lan8720_interface_debug_print("lan8720: lan8720_set_auto_negotiation/lan8720_get_auto_negotiation test.\n");
240 
241  /* enable auto negotiation */
243  if (res != 0)
244  {
245  lan8720_interface_debug_print("lan8720: set auto negotiation failed.\n");
246  (void)lan8720_deinit(&gs_handle);
247 
248  return 1;
249  }
250  lan8720_interface_debug_print("lan8720: enable auto negotiation failed.\n");
251  res = lan8720_get_auto_negotiation(&gs_handle, &enable);
252  if (res != 0)
253  {
254  lan8720_interface_debug_print("lan8720: get auto negotiation failed.\n");
255  (void)lan8720_deinit(&gs_handle);
256 
257  return 1;
258  }
259  lan8720_interface_debug_print("lan8720: check auto negotiation %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
260 
261  /* disable auto negotiation */
263  if (res != 0)
264  {
265  lan8720_interface_debug_print("lan8720: set auto negotiation failed.\n");
266  (void)lan8720_deinit(&gs_handle);
267 
268  return 1;
269  }
270  lan8720_interface_debug_print("lan8720: disable auto negotiation failed.\n");
271  res = lan8720_get_auto_negotiation(&gs_handle, &enable);
272  if (res != 0)
273  {
274  lan8720_interface_debug_print("lan8720: get auto negotiation failed.\n");
275  (void)lan8720_deinit(&gs_handle);
276 
277  return 1;
278  }
279  lan8720_interface_debug_print("lan8720: check auto negotiation %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
280 
281  /* lan8720_set_power_down/lan8720_get_power_down test */
282  lan8720_interface_debug_print("lan8720: lan8720_set_power_down/lan8720_get_power_down test.\n");
283 
284  /* enable power down */
285  res = lan8720_set_power_down(&gs_handle, LAN8720_BOOL_TRUE);
286  if (res != 0)
287  {
288  lan8720_interface_debug_print("lan8720: set power down failed.\n");
289  (void)lan8720_deinit(&gs_handle);
290 
291  return 1;
292  }
293  lan8720_interface_debug_print("lan8720: enable power down.\n");
294  res = lan8720_get_power_down(&gs_handle, &enable);
295  if (res != 0)
296  {
297  lan8720_interface_debug_print("lan8720: get power down failed.\n");
298  (void)lan8720_deinit(&gs_handle);
299 
300  return 1;
301  }
302  lan8720_interface_debug_print("lan8720: check power down %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
303 
304  /* disable power down */
305  res = lan8720_set_power_down(&gs_handle, LAN8720_BOOL_FALSE);
306  if (res != 0)
307  {
308  lan8720_interface_debug_print("lan8720: set power down failed.\n");
309  (void)lan8720_deinit(&gs_handle);
310 
311  return 1;
312  }
313  lan8720_interface_debug_print("lan8720: disable power down.\n");
314  res = lan8720_get_power_down(&gs_handle, &enable);
315  if (res != 0)
316  {
317  lan8720_interface_debug_print("lan8720: get power down failed.\n");
318  (void)lan8720_deinit(&gs_handle);
319 
320  return 1;
321  }
322  lan8720_interface_debug_print("lan8720: check power down %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
323 
324  /* lan8720_set_electrical_isolation/lan8720_get_electrical_isolation test */
325  lan8720_interface_debug_print("lan8720: lan8720_set_electrical_isolation/lan8720_get_electrical_isolation test.\n");
326 
327  /* enable electrical isolation */
329  if (res != 0)
330  {
331  lan8720_interface_debug_print("lan8720: set electrical isolation failed.\n");
332  (void)lan8720_deinit(&gs_handle);
333 
334  return 1;
335  }
336  lan8720_interface_debug_print("lan8720: enable electrical isolation.\n");
337  res = lan8720_get_electrical_isolation(&gs_handle, &enable);
338  if (res != 0)
339  {
340  lan8720_interface_debug_print("lan8720: get electrical isolation failed.\n");
341  (void)lan8720_deinit(&gs_handle);
342 
343  return 1;
344  }
345  lan8720_interface_debug_print("lan8720: check electrical isolation %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
346 
347  /* disable electrical isolation */
349  if (res != 0)
350  {
351  lan8720_interface_debug_print("lan8720: set electrical isolation failed.\n");
352  (void)lan8720_deinit(&gs_handle);
353 
354  return 1;
355  }
356  lan8720_interface_debug_print("lan8720: disable electrical isolation.\n");
357  res = lan8720_get_electrical_isolation(&gs_handle, &enable);
358  if (res != 0)
359  {
360  lan8720_interface_debug_print("lan8720: get electrical isolation failed.\n");
361  (void)lan8720_deinit(&gs_handle);
362 
363  return 1;
364  }
365  lan8720_interface_debug_print("lan8720: check electrical isolation %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
366 
367  /* lan8720_set_restart_auto_negotiate/lan8720_get_restart_auto_negotiate test */
368  lan8720_interface_debug_print("lan8720: lan8720_set_restart_auto_negotiate/lan8720_get_restart_auto_negotiate test.\n");
369 
370  /* enable restart auto negotiate */
372  if (res != 0)
373  {
374  lan8720_interface_debug_print("lan8720: set restart auto negotiate failed.\n");
375  (void)lan8720_deinit(&gs_handle);
376 
377  return 1;
378  }
379  lan8720_interface_debug_print("lan8720: enable restart auto negotiate.\n");
380  res = lan8720_get_restart_auto_negotiate(&gs_handle, &enable);
381  if (res != 0)
382  {
383  lan8720_interface_debug_print("lan8720: get restart auto negotiate failed.\n");
384  (void)lan8720_deinit(&gs_handle);
385 
386  return 1;
387  }
388  lan8720_interface_debug_print("lan8720: check restart auto negotiate %s.\n", res == 0 ? "ok" : "error");
389 
390  /* disable restart auto negotiate */
392  if (res != 0)
393  {
394  lan8720_interface_debug_print("lan8720: set restart auto negotiate failed.\n");
395  (void)lan8720_deinit(&gs_handle);
396 
397  return 1;
398  }
399  lan8720_interface_debug_print("lan8720: disable restart auto negotiate.\n");
400  res = lan8720_get_restart_auto_negotiate(&gs_handle, &enable);
401  if (res != 0)
402  {
403  lan8720_interface_debug_print("lan8720: get restart auto negotiate failed.\n");
404  (void)lan8720_deinit(&gs_handle);
405 
406  return 1;
407  }
408  lan8720_interface_debug_print("lan8720: check restart auto negotiate %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
409 
410  /* lan8720_set_duplex_mode/lan8720_get_duplex_mode test */
411  lan8720_interface_debug_print("lan8720: lan8720_set_duplex_mode/lan8720_get_duplex_mode test.\n");
412 
413  /* half duplex */
414  res = lan8720_set_duplex_mode(&gs_handle, LAN8720_DUPLEX_HALF);
415  if (res != 0)
416  {
417  lan8720_interface_debug_print("lan8720: set duplex mode failed.\n");
418  (void)lan8720_deinit(&gs_handle);
419 
420  return 1;
421  }
422  lan8720_interface_debug_print("lan8720: set half duplex mode.\n");
423  res = lan8720_get_duplex_mode(&gs_handle, &mode);
424  if (res != 0)
425  {
426  lan8720_interface_debug_print("lan8720: get duplex mode failed.\n");
427  (void)lan8720_deinit(&gs_handle);
428 
429  return 1;
430  }
431  lan8720_interface_debug_print("lan8720: check duplex mode %s.\n", mode == LAN8720_DUPLEX_HALF ? "ok" : "error");
432 
433  /* full duplex */
434  res = lan8720_set_duplex_mode(&gs_handle, LAN8720_DUPLEX_FULL);
435  if (res != 0)
436  {
437  lan8720_interface_debug_print("lan8720: set duplex mode failed.\n");
438  (void)lan8720_deinit(&gs_handle);
439 
440  return 1;
441  }
442  lan8720_interface_debug_print("lan8720: set full duplex mode.\n");
443  res = lan8720_get_duplex_mode(&gs_handle, &mode);
444  if (res != 0)
445  {
446  lan8720_interface_debug_print("lan8720: get duplex mode failed.\n");
447  (void)lan8720_deinit(&gs_handle);
448 
449  return 1;
450  }
451  lan8720_interface_debug_print("lan8720: check duplex mode %s.\n", mode == LAN8720_DUPLEX_FULL ? "ok" : "error");
452 
453  /* lan8720_get_100base_t4 test */
454  lan8720_interface_debug_print("lan8720: lan8720_get_100base_t4 test.\n");
455 
456  /* get 100base t4 */
457  res = lan8720_get_100base_t4(&gs_handle, &enable);
458  if (res != 0)
459  {
460  lan8720_interface_debug_print("lan8720: get 100base t4 failed.\n");
461  (void)lan8720_deinit(&gs_handle);
462 
463  return 1;
464  }
465  lan8720_interface_debug_print("lan8720: 100base t4 is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
466 
467  /* lan8720_get_100base_tx_full_duplex test */
468  lan8720_interface_debug_print("lan8720: lan8720_get_100base_tx_full_duplex test.\n");
469 
470  /* get 100base tx full duplex */
471  res = lan8720_get_100base_tx_full_duplex(&gs_handle, &enable);
472  if (res != 0)
473  {
474  lan8720_interface_debug_print("lan8720: get 100base tx full duplex failed.\n");
475  (void)lan8720_deinit(&gs_handle);
476 
477  return 1;
478  }
479  lan8720_interface_debug_print("lan8720: 100base tx full duplex is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
480 
481  /* lan8720_get_100base_tx_half_duplex test */
482  lan8720_interface_debug_print("lan8720: lan8720_get_100base_tx_half_duplex test.\n");
483 
484  /* get 100base tx half duplex */
485  res = lan8720_get_100base_tx_half_duplex(&gs_handle, &enable);
486  if (res != 0)
487  {
488  lan8720_interface_debug_print("lan8720: get 100base tx half duplex failed.\n");
489  (void)lan8720_deinit(&gs_handle);
490 
491  return 1;
492  }
493  lan8720_interface_debug_print("lan8720: 100base tx half duplex is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
494 
495  /* lan8720_get_10base_t_full_duplex test */
496  lan8720_interface_debug_print("lan8720: lan8720_get_10base_t_full_duplex test.\n");
497 
498  /* get 10base t full duplex */
499  res = lan8720_get_10base_t_full_duplex(&gs_handle, &enable);
500  if (res != 0)
501  {
502  lan8720_interface_debug_print("lan8720: get 10base t full duplex failed.\n");
503  (void)lan8720_deinit(&gs_handle);
504 
505  return 1;
506  }
507  lan8720_interface_debug_print("lan8720: 10base t full duplex is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
508 
509  /* lan8720_get_10base_t_half_duplex test */
510  lan8720_interface_debug_print("lan8720: lan8720_get_10base_t_half_duplex test.\n");
511 
512  /* get 10base t half duplex */
513  res = lan8720_get_10base_t_half_duplex(&gs_handle, &enable);
514  if (res != 0)
515  {
516  lan8720_interface_debug_print("lan8720: get 10base t half duplex failed.\n");
517  (void)lan8720_deinit(&gs_handle);
518 
519  return 1;
520  }
521  lan8720_interface_debug_print("lan8720: 10base t half duplex is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
522 
523  /* lan8720_get_100base_t2_full_duplex test */
524  lan8720_interface_debug_print("lan8720: lan8720_get_100base_t2_full_duplex test.\n");
525 
526  /* get 100base t2 full duplex */
527  res = lan8720_get_100base_t2_full_duplex(&gs_handle, &enable);
528  if (res != 0)
529  {
530  lan8720_interface_debug_print("lan8720: get 100base t2 full duplex failed.\n");
531  (void)lan8720_deinit(&gs_handle);
532 
533  return 1;
534  }
535  lan8720_interface_debug_print("lan8720: 100base t2 full duplex is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
536 
537  /* lan8720_get_100base_t2_half_duplex test */
538  lan8720_interface_debug_print("lan8720: lan8720_get_100base_t2_half_duplex test.\n");
539 
540  /* get 100base t2 half duplex */
541  res = lan8720_get_100base_t2_half_duplex(&gs_handle, &enable);
542  if (res != 0)
543  {
544  lan8720_interface_debug_print("lan8720: get 100base t2 half duplex failed.\n");
545  (void)lan8720_deinit(&gs_handle);
546 
547  return 1;
548  }
549  lan8720_interface_debug_print("lan8720: 100base t2 half duplex is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
550 
551  /* lan8720_get_extended_status_information test */
552  lan8720_interface_debug_print("lan8720: lan8720_get_extended_status_information test.\n");
553 
554  /* get extended status information */
555  res = lan8720_get_extended_status_information(&gs_handle, &enable);
556  if (res != 0)
557  {
558  lan8720_interface_debug_print("lan8720: get extended status information failed.\n");
559  (void)lan8720_deinit(&gs_handle);
560 
561  return 1;
562  }
563  lan8720_interface_debug_print("lan8720: extended status information is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
564 
565  /* lan8720_get_auto_negotiate_complete test */
566  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiate_complete test.\n");
567 
568  /* get auto negotiate complete */
569  res = lan8720_get_auto_negotiate_complete(&gs_handle, &enable);
570  if (res != 0)
571  {
572  lan8720_interface_debug_print("lan8720: get auto negotiate complete failed.\n");
573  (void)lan8720_deinit(&gs_handle);
574 
575  return 1;
576  }
577  lan8720_interface_debug_print("lan8720: auto negotiate complete is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
578 
579  /* lan8720_get_remote_fault test */
580  lan8720_interface_debug_print("lan8720: lan8720_get_remote_fault test.\n");
581 
582  /* get remote fault */
583  res = lan8720_get_remote_fault(&gs_handle, &enable);
584  if (res != 0)
585  {
586  lan8720_interface_debug_print("lan8720: get remote fault failed.\n");
587  (void)lan8720_deinit(&gs_handle);
588 
589  return 1;
590  }
591  lan8720_interface_debug_print("lan8720: remote fault is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
592 
593  /* lan8720_get_auto_negotiate_ability test */
594  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiate_ability test.\n");
595 
596  /* get auto negotiate ability */
597  res = lan8720_get_auto_negotiate_ability(&gs_handle, &enable);
598  if (res != 0)
599  {
600  lan8720_interface_debug_print("lan8720: get auto negotiate ability failed.\n");
601  (void)lan8720_deinit(&gs_handle);
602 
603  return 1;
604  }
605  lan8720_interface_debug_print("lan8720: auto negotiate ability is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
606 
607  /* lan8720_get_link_status test */
608  lan8720_interface_debug_print("lan8720: lan8720_get_link_status test.\n");
609 
610  /* get link status */
611  res = lan8720_get_link_status(&gs_handle, &status);
612  if (res != 0)
613  {
614  lan8720_interface_debug_print("lan8720: get link status failed.\n");
615  (void)lan8720_deinit(&gs_handle);
616 
617  return 1;
618  }
619  lan8720_interface_debug_print("lan8720: link status is %s.\n", status == LAN8720_LINK_DOWN ? "down" : "up");
620 
621  /* lan8720_get_jabber_detect test */
622  lan8720_interface_debug_print("lan8720: lan8720_get_jabber_detect test.\n");
623 
624  /* get jabber detect */
625  res = lan8720_get_jabber_detect(&gs_handle, &enable);
626  if (res != 0)
627  {
628  lan8720_interface_debug_print("lan8720: get jabber detect failed.\n");
629  (void)lan8720_deinit(&gs_handle);
630 
631  return 1;
632  }
633  lan8720_interface_debug_print("lan8720: jabber detect is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
634 
635  /* lan8720_get_extended_capabilities test */
636  lan8720_interface_debug_print("lan8720: lan8720_get_extended_capabilities test.\n");
637 
638  /* get extended capabilities */
639  res = lan8720_get_extended_capabilities(&gs_handle, &enable);
640  if (res != 0)
641  {
642  lan8720_interface_debug_print("lan8720: get extended capabilities failed.\n");
643  (void)lan8720_deinit(&gs_handle);
644 
645  return 1;
646  }
647  lan8720_interface_debug_print("lan8720: extended capabilities is %s.\n", enable == LAN8720_BOOL_TRUE ? "yes" : "no");
648 
649  /* lan8720_set_identifier/lan8720_get_identifier test */
650  lan8720_interface_debug_print("lan8720: lan8720_set_identifier/lan8720_get_identifier test.\n");
651 
652  /* set identifier */
653  phy_id = rand() % 0x3FFFFF;
654  model_number = rand() % 0x3F;
655  revision_number = rand() % 0xF;
656  res = lan8720_set_identifier(&gs_handle, phy_id, model_number, revision_number);
657  if (res != 0)
658  {
659  lan8720_interface_debug_print("lan8720: set identifier failed.\n");
660  (void)lan8720_deinit(&gs_handle);
661 
662  return 1;
663  }
664  lan8720_interface_debug_print("lan8720: set phy_id 0x%06X.\n", phy_id);
665  lan8720_interface_debug_print("lan8720: set model_number 0x%02X.\n", model_number);
666  lan8720_interface_debug_print("lan8720: set revision_number 0x%02X.\n", revision_number);
667  res = lan8720_get_identifier(&gs_handle, &phy_id_check, &model_number_check, &revision_number_check);
668  if (res != 0)
669  {
670  lan8720_interface_debug_print("lan8720: get identifier failed.\n");
671  (void)lan8720_deinit(&gs_handle);
672 
673  return 1;
674  }
675  lan8720_interface_debug_print("lan8720: check phy_id %s.\n", phy_id == phy_id_check ? "ok" : "error");
676  lan8720_interface_debug_print("lan8720: check model_number %s.\n", model_number == model_number_check ? "ok" : "error");
677  lan8720_interface_debug_print("lan8720: check revision_number %s.\n", revision_number == revision_number_check ? "ok" : "error");
678 
679  /* lan8720_set_auto_negotiation_advertisement_remote_fault/lan8720_get_auto_negotiation_advertisement_remote_fault test */
680  lan8720_interface_debug_print("lan8720: lan8720_set_auto_negotiation_advertisement_remote_fault/lan8720_get_auto_negotiation_advertisement_remote_fault test.\n");
681 
682  /* enable */
684  if (res != 0)
685  {
686  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement remote fault failed.\n");
687  (void)lan8720_deinit(&gs_handle);
688 
689  return 1;
690  }
691  lan8720_interface_debug_print("lan8720: enable auto negotiation advertisement remote fault.\n");
693  if (res != 0)
694  {
695  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement remote fault failed.\n");
696  (void)lan8720_deinit(&gs_handle);
697 
698  return 1;
699  }
700  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement remote fault %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
701 
702  /* disable */
704  if (res != 0)
705  {
706  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement remote fault failed.\n");
707  (void)lan8720_deinit(&gs_handle);
708 
709  return 1;
710  }
711  lan8720_interface_debug_print("lan8720: disable auto negotiation advertisement remote fault.\n");
713  if (res != 0)
714  {
715  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement remote fault failed.\n");
716  (void)lan8720_deinit(&gs_handle);
717 
718  return 1;
719  }
720  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement remote fault %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
721 
722  /* lan8720_set_auto_negotiation_advertisement_pause/lan8720_get_auto_negotiation_advertisement_pause test */
723  lan8720_interface_debug_print("lan8720: lan8720_set_auto_negotiation_advertisement_pause/lan8720_get_auto_negotiation_advertisement_pause test.\n");
724 
725  /* no pause */
727  if (res != 0)
728  {
729  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement pause failed.\n");
730  (void)lan8720_deinit(&gs_handle);
731 
732  return 1;
733  }
734  lan8720_interface_debug_print("lan8720: set no pause.\n");
735  res = lan8720_get_auto_negotiation_advertisement_pause(&gs_handle, &pause);
736  if (res != 0)
737  {
738  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement pause failed.\n");
739  (void)lan8720_deinit(&gs_handle);
740 
741  return 1;
742  }
743  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement pause %s.\n", pause == LAN8720_PAUSE_NO ? "ok" : "error");
744 
745  /* symmetric pause */
747  if (res != 0)
748  {
749  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement pause failed.\n");
750  (void)lan8720_deinit(&gs_handle);
751 
752  return 1;
753  }
754  lan8720_interface_debug_print("lan8720: set symmetric pause.\n");
755  res = lan8720_get_auto_negotiation_advertisement_pause(&gs_handle, &pause);
756  if (res != 0)
757  {
758  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement pause failed.\n");
759  (void)lan8720_deinit(&gs_handle);
760 
761  return 1;
762  }
763  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement pause %s.\n", pause == LAN8720_PAUSE_SYMMETRIC ? "ok" : "error");
764 
765  /* asymmetric pause */
767  if (res != 0)
768  {
769  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement pause failed.\n");
770  (void)lan8720_deinit(&gs_handle);
771 
772  return 1;
773  }
774  lan8720_interface_debug_print("lan8720: set asymmetric pause.\n");
775  res = lan8720_get_auto_negotiation_advertisement_pause(&gs_handle, &pause);
776  if (res != 0)
777  {
778  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement pause failed.\n");
779  (void)lan8720_deinit(&gs_handle);
780 
781  return 1;
782  }
783  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement pause %s.\n", pause == LAN8720_PAUSE_ASYMMETRIC ? "ok" : "error");
784 
785  /* both pause */
787  if (res != 0)
788  {
789  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement pause failed.\n");
790  (void)lan8720_deinit(&gs_handle);
791 
792  return 1;
793  }
794  lan8720_interface_debug_print("lan8720: set both pause.\n");
795  res = lan8720_get_auto_negotiation_advertisement_pause(&gs_handle, &pause);
796  if (res != 0)
797  {
798  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement pause failed.\n");
799  (void)lan8720_deinit(&gs_handle);
800 
801  return 1;
802  }
803  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement pause %s.\n", pause == LAN8720_PAUSE_BOTH ? "ok" : "error");
804 
805  /* lan8720_set_auto_negotiation_advertisement_100base_tx_full_duplex/lan8720_get_auto_negotiation_advertisement_100base_tx_full_duplex test */
806  lan8720_interface_debug_print("lan8720: lan8720_set_auto_negotiation_advertisement_100base_tx_full_duplex/lan8720_get_auto_negotiation_advertisement_100base_tx_full_duplex test.\n");
807 
808  /* enable */
810  if (res != 0)
811  {
812  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement 100base tx full duplex failed.\n");
813  (void)lan8720_deinit(&gs_handle);
814 
815  return 1;
816  }
817  lan8720_interface_debug_print("lan8720: enable auto negotiation advertisement 100base tx full duplex.\n");
819  if (res != 0)
820  {
821  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement 100base tx full duplex failed.\n");
822  (void)lan8720_deinit(&gs_handle);
823 
824  return 1;
825  }
826  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement 100base tx full duplex %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
827 
828  /* disable */
830  if (res != 0)
831  {
832  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement 100base tx full duplex failed.\n");
833  (void)lan8720_deinit(&gs_handle);
834 
835  return 1;
836  }
837  lan8720_interface_debug_print("lan8720: disable auto negotiation advertisement 100base tx full duplex.\n");
839  if (res != 0)
840  {
841  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement 100base tx full duplex failed.\n");
842  (void)lan8720_deinit(&gs_handle);
843 
844  return 1;
845  }
846  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement 100base tx full duplex %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
847 
848  /* lan8720_set_auto_negotiation_advertisement_100base_tx/lan8720_get_auto_negotiation_advertisement_100base_tx test */
849  lan8720_interface_debug_print("lan8720: lan8720_set_auto_negotiation_advertisement_100base_tx/lan8720_get_auto_negotiation_advertisement_100base_tx test.\n");
850 
851  /* enable */
853  if (res != 0)
854  {
855  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement 100base tx failed.\n");
856  (void)lan8720_deinit(&gs_handle);
857 
858  return 1;
859  }
860  lan8720_interface_debug_print("lan8720: enable auto negotiation advertisement 100base tx.\n");
862  if (res != 0)
863  {
864  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement 100base tx failed.\n");
865  (void)lan8720_deinit(&gs_handle);
866 
867  return 1;
868  }
869  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement 100base tx %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
870 
871  /* disable */
873  if (res != 0)
874  {
875  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement 100base tx failed.\n");
876  (void)lan8720_deinit(&gs_handle);
877 
878  return 1;
879  }
880  lan8720_interface_debug_print("lan8720: disable auto negotiation advertisement 100base tx.\n");
882  if (res != 0)
883  {
884  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement 100base tx failed.\n");
885  (void)lan8720_deinit(&gs_handle);
886 
887  return 1;
888  }
889  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement 100base tx %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
890 
891  /* lan8720_set_auto_negotiation_advertisement_10base_t_full_duplex/lan8720_get_auto_negotiation_advertisement_10base_t_full_duplex test */
892  lan8720_interface_debug_print("lan8720: lan8720_set_auto_negotiation_advertisement_10base_t_full_duplex/lan8720_get_auto_negotiation_advertisement_10base_t_full_duplex test.\n");
893 
894  /* enable */
896  if (res != 0)
897  {
898  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement 10base t full duplex failed.\n");
899  (void)lan8720_deinit(&gs_handle);
900 
901  return 1;
902  }
903  lan8720_interface_debug_print("lan8720: enable auto negotiation advertisement 10base t full duplex failed.\n");
905  if (res != 0)
906  {
907  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement 10base t full duplex failed.\n");
908  (void)lan8720_deinit(&gs_handle);
909 
910  return 1;
911  }
912  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement 10base t full duplex %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
913 
914  /* disable */
916  if (res != 0)
917  {
918  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement 10base t full duplex failed.\n");
919  (void)lan8720_deinit(&gs_handle);
920 
921  return 1;
922  }
923  lan8720_interface_debug_print("lan8720: disable auto negotiation advertisement 10base t full duplex failed.\n");
925  if (res != 0)
926  {
927  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement 10base t full duplex failed.\n");
928  (void)lan8720_deinit(&gs_handle);
929 
930  return 1;
931  }
932  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement 10base t full duplex %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
933 
934  /* lan8720_set_auto_negotiation_advertisement_10base_t/lan8720_get_auto_negotiation_advertisement_10base_t test */
935  lan8720_interface_debug_print("lan8720: lan8720_set_auto_negotiation_advertisement_10base_t/lan8720_get_auto_negotiation_advertisement_10base_t test.\n");
936 
937  /* enable */
939  if (res != 0)
940  {
941  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement 10base t failed.\n");
942  (void)lan8720_deinit(&gs_handle);
943 
944  return 1;
945  }
946  lan8720_interface_debug_print("lan8720: enable auto negotiation advertisement 10base t.\n");
947  res = lan8720_get_auto_negotiation_advertisement_10base_t(&gs_handle, &enable);
948  if (res != 0)
949  {
950  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement 10base t failed.\n");
951  (void)lan8720_deinit(&gs_handle);
952 
953  return 1;
954  }
955  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement 10base t %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
956 
957  /* disable */
959  if (res != 0)
960  {
961  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement 10base t failed.\n");
962  (void)lan8720_deinit(&gs_handle);
963 
964  return 1;
965  }
966  lan8720_interface_debug_print("lan8720: disable auto negotiation advertisement 10base t.\n");
967  res = lan8720_get_auto_negotiation_advertisement_10base_t(&gs_handle, &enable);
968  if (res != 0)
969  {
970  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement 10base t failed.\n");
971  (void)lan8720_deinit(&gs_handle);
972 
973  return 1;
974  }
975  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement 10base t %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
976 
977  /* lan8720_set_auto_negotiation_advertisement_selector_field/lan8720_get_auto_negotiation_advertisement_selector_field test */
978  lan8720_interface_debug_print("lan8720: lan8720_set_auto_negotiation_advertisement_selector_field/lan8720_get_auto_negotiation_advertisement_selector_field test.\n");
979 
980  selector = rand() % 0x1F;
982  if (res != 0)
983  {
984  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement selector field failed.\n");
985  (void)lan8720_deinit(&gs_handle);
986 
987  return 1;
988  }
989  lan8720_interface_debug_print("lan8720: set auto negotiation advertisement selector field 0x%02X.\n", selector);
990  res = lan8720_get_auto_negotiation_advertisement_selector_field(&gs_handle, &selector_check);
991  if (res != 0)
992  {
993  lan8720_interface_debug_print("lan8720: get auto negotiation advertisement selector field failed.\n");
994  (void)lan8720_deinit(&gs_handle);
995 
996  return 1;
997  }
998  lan8720_interface_debug_print("lan8720: check auto negotiation advertisement selector field %s.\n", selector_check == selector ? "ok" : "error");
999 
1000  /* lan8720_get_auto_negotiation_link_partner_ability_next_page test */
1001  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_link_partner_ability_next_page test.\n");
1002 
1003  /* get auto negotiation link partner ability next page */
1005  if (res != 0)
1006  {
1007  lan8720_interface_debug_print("lan8720: get auto negotiation link partner ability next page failed.\n");
1008  (void)lan8720_deinit(&gs_handle);
1009 
1010  return 1;
1011  }
1012  lan8720_interface_debug_print("lan8720: check auto negotiation link partner ability next page %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1013 
1014  /* lan8720_get_auto_negotiation_link_partner_ability_acknowledge test */
1015  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_link_partner_ability_acknowledge test.\n");
1016 
1017  /* get auto negotiation link partner ability acknowledge */
1019  if (res != 0)
1020  {
1021  lan8720_interface_debug_print("lan8720: get auto negotiation link partner ability acknowledge failed.\n");
1022  (void)lan8720_deinit(&gs_handle);
1023 
1024  return 1;
1025  }
1026  lan8720_interface_debug_print("lan8720: check auto negotiation link partner ability acknowledge %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1027 
1028  /* lan8720_get_auto_negotiation_link_partner_ability_remote_fault test */
1029  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_link_partner_ability_remote_fault test.\n");
1030 
1031  /* get auto negotiation link partner ability remote fault */
1033  if (res != 0)
1034  {
1035  lan8720_interface_debug_print("lan8720: get auto negotiation link partner ability remote fault failed.\n");
1036  (void)lan8720_deinit(&gs_handle);
1037 
1038  return 1;
1039  }
1040  lan8720_interface_debug_print("lan8720: check auto negotiation link partner ability remote fault %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1041 
1042  /* lan8720_get_auto_negotiation_link_partner_ability_pause test */
1043  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_link_partner_ability_pause test.\n");
1044 
1045  /* get auto negotiation link partner ability pause */
1047  if (res != 0)
1048  {
1049  lan8720_interface_debug_print("lan8720: get auto negotiation link partner ability pause failed.\n");
1050  (void)lan8720_deinit(&gs_handle);
1051 
1052  return 1;
1053  }
1054  lan8720_interface_debug_print("lan8720: check auto negotiation link partner ability pause %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1055 
1056  /* lan8720_get_auto_negotiation_link_partner_ability_100base_t4 test */
1057  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_link_partner_ability_100base_t4 test.\n");
1058 
1059  /* get auto negotiation link partner ability 100base t4 */
1061  if (res != 0)
1062  {
1063  lan8720_interface_debug_print("lan8720: get auto negotiation link partner ability 100base t4 failed.\n");
1064  (void)lan8720_deinit(&gs_handle);
1065 
1066  return 1;
1067  }
1068  lan8720_interface_debug_print("lan8720: check auto negotiation link partner ability 100base t4 %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1069 
1070  /* lan8720_get_auto_negotiation_link_partner_ability_100base_tx_full_duplex test */
1071  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_link_partner_ability_100base_tx_full_duplex test.\n");
1072 
1073  /* get auto negotiation link partner ability 100base tx full duplex */
1075  if (res != 0)
1076  {
1077  lan8720_interface_debug_print("lan8720: get auto negotiation link partner ability 100base tx full duplex failed.\n");
1078  (void)lan8720_deinit(&gs_handle);
1079 
1080  return 1;
1081  }
1082  lan8720_interface_debug_print("lan8720: check auto negotiation link partner ability 100base tx full duplex %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1083 
1084  /* lan8720_get_auto_negotiation_link_partner_ability_100base_tx test */
1085  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_link_partner_ability_100base_tx test.\n");
1086 
1087  /* get auto negotiation link partner ability 100base tx */
1089  if (res != 0)
1090  {
1091  lan8720_interface_debug_print("lan8720: get auto negotiation link partner ability 100base tx failed.\n");
1092  (void)lan8720_deinit(&gs_handle);
1093 
1094  return 1;
1095  }
1096  lan8720_interface_debug_print("lan8720: check auto negotiation link partner ability 100base tx %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1097 
1098  /* lan8720_get_auto_negotiation_link_partner_ability_10base_t_full_duplex test */
1099  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_link_partner_ability_10base_t_full_duplex test.\n");
1100 
1101  /* get auto negotiation link partner ability 10base t full duplex */
1103  if (res != 0)
1104  {
1105  lan8720_interface_debug_print("lan8720: get auto negotiation link partner ability 10base t full duplex failed.\n");
1106  (void)lan8720_deinit(&gs_handle);
1107 
1108  return 1;
1109  }
1110  lan8720_interface_debug_print("lan8720: check auto negotiation link partner ability 10base t full duplex %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1111 
1112  /* lan8720_get_auto_negotiation_link_partner_ability_10base_t test */
1113  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_link_partner_ability_10base_t test.\n");
1114 
1115  /* get auto negotiation link partner ability 10base t */
1117  if (res != 0)
1118  {
1119  lan8720_interface_debug_print("lan8720: get auto negotiation link partner ability 10base t failed.\n");
1120  (void)lan8720_deinit(&gs_handle);
1121 
1122  return 1;
1123  }
1124  lan8720_interface_debug_print("lan8720: check auto negotiation link partner ability 10base t %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1125 
1126  /* lan8720_get_auto_negotiation_link_partner_ability_selector_field test */
1127  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_link_partner_ability_selector_field test.\n");
1128 
1129  /* get auto negotiation link partner ability selector field */
1131  if (res != 0)
1132  {
1133  lan8720_interface_debug_print("lan8720: get auto negotiation link partner ability selector field failed.\n");
1134  (void)lan8720_deinit(&gs_handle);
1135 
1136  return 1;
1137  }
1138  lan8720_interface_debug_print("lan8720: auto negotiation link partner ability selector field is 0x%02X.\n", selector);
1139 
1140  /* lan8720_get_auto_negotiation_expansion_parallel_detection_fault test */
1141  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_expansion_parallel_detection_fault test.\n");
1142 
1143  /* get auto negotiation expansion parallel detection fault */
1145  if (res != 0)
1146  {
1147  lan8720_interface_debug_print("lan8720: get auto negotiation expansion parallel detection fault failed.\n");
1148  (void)lan8720_deinit(&gs_handle);
1149 
1150  return 1;
1151  }
1152  lan8720_interface_debug_print("lan8720: check auto negotiation expansion parallel detection fault %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1153 
1154  /* lan8720_get_auto_negotiation_expansion_link_partner_next_page_able test */
1155  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_expansion_link_partner_next_page_able test.\n");
1156 
1157  /* get auto negotiation expansion link partner next page able */
1159  if (res != 0)
1160  {
1161  lan8720_interface_debug_print("lan8720: get auto negotiation expansion link partner next page able failed.\n");
1162  (void)lan8720_deinit(&gs_handle);
1163 
1164  return 1;
1165  }
1166  lan8720_interface_debug_print("lan8720: check auto negotiation expansion link partner next page able %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1167 
1168  /* lan8720_get_auto_negotiation_expansion_next_page_able test */
1169  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_expansion_next_page_able test.\n");
1170 
1171  /* get auto negotiation expansion next page able */
1172  res = lan8720_get_auto_negotiation_expansion_next_page_able(&gs_handle, &enable);
1173  if (res != 0)
1174  {
1175  lan8720_interface_debug_print("lan8720: get auto negotiation expansion next page able failed.\n");
1176  (void)lan8720_deinit(&gs_handle);
1177 
1178  return 1;
1179  }
1180  lan8720_interface_debug_print("lan8720: check auto negotiation expansion next page able %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1181 
1182  /* lan8720_get_auto_negotiation_expansion_page_received test */
1183  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_expansion_page_received test.\n");
1184 
1185  /* get auto negotiation expansion page received */
1186  res = lan8720_get_auto_negotiation_expansion_page_received(&gs_handle, &enable);
1187  if (res != 0)
1188  {
1189  lan8720_interface_debug_print("lan8720: get auto negotiation expansion page received failed.\n");
1190  (void)lan8720_deinit(&gs_handle);
1191 
1192  return 1;
1193  }
1194  lan8720_interface_debug_print("lan8720: check auto negotiation expansion page received %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1195 
1196  /* lan8720_get_auto_negotiation_expansion_link_partner_auto_negotiation_able test */
1197  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_expansion_link_partner_auto_negotiation_able test.\n");
1198 
1199  /* get auto negotiation expansion link partner auto negotiation able */
1201  if (res != 0)
1202  {
1203  lan8720_interface_debug_print("lan8720: get auto negotiation expansion link partner auto negotiation able failed.\n");
1204  (void)lan8720_deinit(&gs_handle);
1205 
1206  return 1;
1207  }
1208  lan8720_interface_debug_print("lan8720: check auto negotiation expansion link partner auto negotiation able %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1209 
1210  /* lan8720_set_energy_detect_power_down_mode/lan8720_get_energy_detect_power_down_mode test */
1211  lan8720_interface_debug_print("lan8720: lan8720_set_energy_detect_power_down_mode/lan8720_get_energy_detect_power_down_mode test.\n");
1212 
1213  /* enable */
1215  if (res != 0)
1216  {
1217  lan8720_interface_debug_print("lan8720: set energy detect power down mode failed.\n");
1218  (void)lan8720_deinit(&gs_handle);
1219 
1220  return 1;
1221  }
1222  lan8720_interface_debug_print("lan8720: enable energy detect power down mode.\n");
1223  res = lan8720_get_energy_detect_power_down_mode(&gs_handle, &enable);
1224  if (res != 0)
1225  {
1226  lan8720_interface_debug_print("lan8720: get energy detect power down mode failed.\n");
1227  (void)lan8720_deinit(&gs_handle);
1228 
1229  return 1;
1230  }
1231  lan8720_interface_debug_print("lan8720: check energy detect power down mode %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
1232 
1233  /* disable */
1235  if (res != 0)
1236  {
1237  lan8720_interface_debug_print("lan8720: set energy detect power down mode failed.\n");
1238  (void)lan8720_deinit(&gs_handle);
1239 
1240  return 1;
1241  }
1242  lan8720_interface_debug_print("lan8720: disable energy detect power down mode.\n");
1243  res = lan8720_get_energy_detect_power_down_mode(&gs_handle, &enable);
1244  if (res != 0)
1245  {
1246  lan8720_interface_debug_print("lan8720: get energy detect power down mode failed.\n");
1247  (void)lan8720_deinit(&gs_handle);
1248 
1249  return 1;
1250  }
1251  lan8720_interface_debug_print("lan8720: check energy detect power down mode %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
1252 
1253  /* lan8720_set_far_loop_back/lan8720_get_far_loop_back test */
1254  lan8720_interface_debug_print("lan8720: lan8720_set_far_loop_back/lan8720_get_far_loop_back test.\n");
1255 
1256  /* enable */
1257  res = lan8720_set_far_loop_back(&gs_handle, LAN8720_BOOL_TRUE);
1258  if (res != 0)
1259  {
1260  lan8720_interface_debug_print("lan8720: set far loop back failed.\n");
1261  (void)lan8720_deinit(&gs_handle);
1262 
1263  return 1;
1264  }
1265  lan8720_interface_debug_print("lan8720: enable far loop back.\n");
1266  res = lan8720_get_far_loop_back(&gs_handle, &enable);
1267  if (res != 0)
1268  {
1269  lan8720_interface_debug_print("lan8720: get far loop back failed.\n");
1270  (void)lan8720_deinit(&gs_handle);
1271 
1272  return 1;
1273  }
1274  lan8720_interface_debug_print("lan8720: check far loop back %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
1275 
1276  /* disable */
1277  res = lan8720_set_far_loop_back(&gs_handle, LAN8720_BOOL_FALSE);
1278  if (res != 0)
1279  {
1280  lan8720_interface_debug_print("lan8720: set far loop back failed.\n");
1281  (void)lan8720_deinit(&gs_handle);
1282 
1283  return 1;
1284  }
1285  lan8720_interface_debug_print("lan8720: disable far loop back.\n");
1286  res = lan8720_get_far_loop_back(&gs_handle, &enable);
1287  if (res != 0)
1288  {
1289  lan8720_interface_debug_print("lan8720: get far loop back failed.\n");
1290  (void)lan8720_deinit(&gs_handle);
1291 
1292  return 1;
1293  }
1294  lan8720_interface_debug_print("lan8720: check far loop back %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
1295 
1296  /* lan8720_set_alternate_interrupt_mode/lan8720_get_alternate_interrupt_mode test */
1297  lan8720_interface_debug_print("lan8720: lan8720_set_alternate_interrupt_mode/lan8720_get_alternate_interrupt_mode test.\n");
1298 
1299  /* enable */
1301  if (res != 0)
1302  {
1303  lan8720_interface_debug_print("lan8720: set alternate interrupt mode failed.\n");
1304  (void)lan8720_deinit(&gs_handle);
1305 
1306  return 1;
1307  }
1308  lan8720_interface_debug_print("lan8720: enable alternate interrupt mode.\n");
1309  res = lan8720_get_alternate_interrupt_mode(&gs_handle, &enable);
1310  if (res != 0)
1311  {
1312  lan8720_interface_debug_print("lan8720: get alternate interrupt mode failed.\n");
1313  (void)lan8720_deinit(&gs_handle);
1314 
1315  return 1;
1316  }
1317  lan8720_interface_debug_print("lan8720: check alternate interrupt mode %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
1318 
1319  /* disable */
1321  if (res != 0)
1322  {
1323  lan8720_interface_debug_print("lan8720: set alternate interrupt mode failed.\n");
1324  (void)lan8720_deinit(&gs_handle);
1325 
1326  return 1;
1327  }
1328  lan8720_interface_debug_print("lan8720: disable alternate interrupt mode.\n");
1329  res = lan8720_get_alternate_interrupt_mode(&gs_handle, &enable);
1330  if (res != 0)
1331  {
1332  lan8720_interface_debug_print("lan8720: get alternate interrupt mode failed.\n");
1333  (void)lan8720_deinit(&gs_handle);
1334 
1335  return 1;
1336  }
1337  lan8720_interface_debug_print("lan8720: check alternate interrupt mode %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
1338 
1339  /* lan8720_get_energy_detected test */
1340  lan8720_interface_debug_print("lan8720: lan8720_get_energy_detected test.\n");
1341 
1342  /* get energy detected */
1343  res = lan8720_get_energy_detected(&gs_handle, &enable);
1344  if (res != 0)
1345  {
1346  lan8720_interface_debug_print("lan8720: get energy detected failed.\n");
1347  (void)lan8720_deinit(&gs_handle);
1348 
1349  return 1;
1350  }
1351  lan8720_interface_debug_print("lan8720: check energy detected %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
1352 
1353  /* lan8720_set_mode/lan8720_get_mode test */
1354  lan8720_interface_debug_print("lan8720: lan8720_set_mode/lan8720_get_mode test.\n");
1355 
1356  /* 10base-t half duplex */
1358  if (res != 0)
1359  {
1360  lan8720_interface_debug_print("lan8720: set mode failed.\n");
1361  (void)lan8720_deinit(&gs_handle);
1362 
1363  return 1;
1364  }
1365  lan8720_interface_debug_print("lan8720: set 10base-t half duplex.\n");
1366  res = lan8720_get_mode(&gs_handle, &mode_check);
1367  if (res != 0)
1368  {
1369  lan8720_interface_debug_print("lan8720: get mode failed.\n");
1370  (void)lan8720_deinit(&gs_handle);
1371 
1372  return 1;
1373  }
1374  lan8720_interface_debug_print("lan8720: check mode %s.\n", mode_check == LAN8720_MODE_10BASE_T_HALF_DUPLEX ? "ok" : "error");
1375 
1376  /* 10base-t full duplex */
1378  if (res != 0)
1379  {
1380  lan8720_interface_debug_print("lan8720: set mode failed.\n");
1381  (void)lan8720_deinit(&gs_handle);
1382 
1383  return 1;
1384  }
1385  lan8720_interface_debug_print("lan8720: set 10base-t full duplex.\n");
1386  res = lan8720_get_mode(&gs_handle, &mode_check);
1387  if (res != 0)
1388  {
1389  lan8720_interface_debug_print("lan8720: get mode failed.\n");
1390  (void)lan8720_deinit(&gs_handle);
1391 
1392  return 1;
1393  }
1394  lan8720_interface_debug_print("lan8720: check mode %s.\n", mode_check == LAN8720_MODE_10BASE_T_FULL_DUPLEX ? "ok" : "error");
1395 
1396  /* 100base-tx half duplex */
1398  if (res != 0)
1399  {
1400  lan8720_interface_debug_print("lan8720: set mode failed.\n");
1401  (void)lan8720_deinit(&gs_handle);
1402 
1403  return 1;
1404  }
1405  lan8720_interface_debug_print("lan8720: set 100base-tx half duplex.\n");
1406  res = lan8720_get_mode(&gs_handle, &mode_check);
1407  if (res != 0)
1408  {
1409  lan8720_interface_debug_print("lan8720: get mode failed.\n");
1410  (void)lan8720_deinit(&gs_handle);
1411 
1412  return 1;
1413  }
1414  lan8720_interface_debug_print("lan8720: check mode %s.\n", mode_check == LAN8720_MODE_100BASE_TX_HALF_DUPLEX ? "ok" : "error");
1415 
1416  /* 100base-tx full duplex */
1418  if (res != 0)
1419  {
1420  lan8720_interface_debug_print("lan8720: set mode failed.\n");
1421  (void)lan8720_deinit(&gs_handle);
1422 
1423  return 1;
1424  }
1425  lan8720_interface_debug_print("lan8720: set 100base-tx full duplex.\n");
1426  res = lan8720_get_mode(&gs_handle, &mode_check);
1427  if (res != 0)
1428  {
1429  lan8720_interface_debug_print("lan8720: get mode failed.\n");
1430  (void)lan8720_deinit(&gs_handle);
1431 
1432  return 1;
1433  }
1434  lan8720_interface_debug_print("lan8720: check mode %s.\n", mode_check == LAN8720_MODE_100BASE_TX_FULL_DUPLEX ? "ok" : "error");
1435 
1436  /* 100base-tx half duplex is advertised */
1438  if (res != 0)
1439  {
1440  lan8720_interface_debug_print("lan8720: set mode failed.\n");
1441  (void)lan8720_deinit(&gs_handle);
1442 
1443  return 1;
1444  }
1445  lan8720_interface_debug_print("lan8720: set 100base-tx half duplex advertised.\n");
1446  res = lan8720_get_mode(&gs_handle, &mode_check);
1447  if (res != 0)
1448  {
1449  lan8720_interface_debug_print("lan8720: get mode failed.\n");
1450  (void)lan8720_deinit(&gs_handle);
1451 
1452  return 1;
1453  }
1454  lan8720_interface_debug_print("lan8720: check mode %s.\n", mode_check == LAN8720_MODE_100BASE_TX_HALF_DUPLEX_ADVERTISED ? "ok" : "error");
1455 
1456  /* repeater mode */
1457  res = lan8720_set_mode(&gs_handle, LAN8720_MODE_REPEATER_MODE);
1458  if (res != 0)
1459  {
1460  lan8720_interface_debug_print("lan8720: set mode failed.\n");
1461  (void)lan8720_deinit(&gs_handle);
1462 
1463  return 1;
1464  }
1465  lan8720_interface_debug_print("lan8720: set repeater mode.\n");
1466  res = lan8720_get_mode(&gs_handle, &mode_check);
1467  if (res != 0)
1468  {
1469  lan8720_interface_debug_print("lan8720: get mode failed.\n");
1470  (void)lan8720_deinit(&gs_handle);
1471 
1472  return 1;
1473  }
1474  lan8720_interface_debug_print("lan8720: check mode %s.\n", mode_check == LAN8720_MODE_REPEATER_MODE ? "ok" : "error");
1475 
1476  /* power down mode */
1478  if (res != 0)
1479  {
1480  lan8720_interface_debug_print("lan8720: set mode failed.\n");
1481  (void)lan8720_deinit(&gs_handle);
1482 
1483  return 1;
1484  }
1485  lan8720_interface_debug_print("lan8720: set power down mode.\n");
1486  res = lan8720_get_mode(&gs_handle, &mode_check);
1487  if (res != 0)
1488  {
1489  lan8720_interface_debug_print("lan8720: get mode failed.\n");
1490  (void)lan8720_deinit(&gs_handle);
1491 
1492  return 1;
1493  }
1494  lan8720_interface_debug_print("lan8720: check mode %s.\n", mode_check == LAN8720_MODE_POWER_DOWN_MODE ? "ok" : "error");
1495 
1496  /* all capable */
1497  res = lan8720_set_mode(&gs_handle, LAN8720_MODE_ALL_CAPABLE);
1498  if (res != 0)
1499  {
1500  lan8720_interface_debug_print("lan8720: set mode failed.\n");
1501  (void)lan8720_deinit(&gs_handle);
1502 
1503  return 1;
1504  }
1505  lan8720_interface_debug_print("lan8720: set all capable.\n");
1506  res = lan8720_get_mode(&gs_handle, &mode_check);
1507  if (res != 0)
1508  {
1509  lan8720_interface_debug_print("lan8720: get mode failed.\n");
1510  (void)lan8720_deinit(&gs_handle);
1511 
1512  return 1;
1513  }
1514  lan8720_interface_debug_print("lan8720: check mode %s.\n", mode_check == LAN8720_MODE_ALL_CAPABLE ? "ok" : "error");
1515 
1516  /* lan8720_set_phy_address/lan8720_get_phy_address test */
1517  lan8720_interface_debug_print("lan8720: lan8720_set_phy_address/lan8720_get_phy_address test.\n");
1518 
1519  /* set phy address */
1520  res = lan8720_set_phy_address(&gs_handle, 0x01);
1521  if (res != 0)
1522  {
1523  lan8720_interface_debug_print("lan8720: set phy address failed.\n");
1524  (void)lan8720_deinit(&gs_handle);
1525 
1526  return 1;
1527  }
1528  lan8720_interface_debug_print("lan8720: set phy address 0x01.\n");
1529  res = lan8720_get_phy_address(&gs_handle, &reg_check);
1530  if (res != 0)
1531  {
1532  lan8720_interface_debug_print("lan8720: get phy address failed.\n");
1533  (void)lan8720_deinit(&gs_handle);
1534 
1535  return 1;
1536  }
1537  lan8720_interface_debug_print("lan8720: check phy address %s.\n", reg_check == 0x01 ? "ok" : "error");
1538 
1539  /* lan8720_get_symbol_error_counter test */
1540  lan8720_interface_debug_print("lan8720: lan8720_get_symbol_error_counter test.\n");
1541 
1542  /* get symbol error counter */
1543  res = lan8720_get_symbol_error_counter(&gs_handle, &cnt);
1544  if (res != 0)
1545  {
1546  lan8720_interface_debug_print("lan8720: get symbol error counter failed.\n");
1547  (void)lan8720_deinit(&gs_handle);
1548 
1549  return 1;
1550  }
1551  lan8720_interface_debug_print("lan8720: symbol error counter is %d.\n", cnt);
1552 
1553  /* lan8720_set_auto_mdix/lan8720_get_auto_mdix test */
1554  lan8720_interface_debug_print("lan8720: lan8720_set_auto_mdix/lan8720_get_auto_mdix test.\n");
1555 
1556  /* enable */
1557  res = lan8720_set_auto_mdix(&gs_handle, LAN8720_BOOL_TRUE);
1558  if (res != 0)
1559  {
1560  lan8720_interface_debug_print("lan8720: set auto mdix failed.\n");
1561  (void)lan8720_deinit(&gs_handle);
1562 
1563  return 1;
1564  }
1565  lan8720_interface_debug_print("lan8720: enable auto mdix.\n");
1566  res = lan8720_get_auto_mdix(&gs_handle, &enable);
1567  if (res != 0)
1568  {
1569  lan8720_interface_debug_print("lan8720: get auto mdix failed.\n");
1570  (void)lan8720_deinit(&gs_handle);
1571 
1572  return 1;
1573  }
1574  lan8720_interface_debug_print("lan8720: check auto mdix %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
1575 
1576  /* disable */
1577  res = lan8720_set_auto_mdix(&gs_handle, LAN8720_BOOL_FALSE);
1578  if (res != 0)
1579  {
1580  lan8720_interface_debug_print("lan8720: set auto mdix failed.\n");
1581  (void)lan8720_deinit(&gs_handle);
1582 
1583  return 1;
1584  }
1585  lan8720_interface_debug_print("lan8720: disable auto mdix.\n");
1586  res = lan8720_get_auto_mdix(&gs_handle, &enable);
1587  if (res != 0)
1588  {
1589  lan8720_interface_debug_print("lan8720: get auto mdix failed.\n");
1590  (void)lan8720_deinit(&gs_handle);
1591 
1592  return 1;
1593  }
1594  lan8720_interface_debug_print("lan8720: check auto mdix %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
1595 
1596  /* lan8720_set_manual_channel_select/lan8720_get_manual_channel_select test */
1597  lan8720_interface_debug_print("lan8720: lan8720_set_manual_channel_select/lan8720_get_manual_channel_select test.\n");
1598 
1599  /* tx transmits, rx receives */
1601  if (res != 0)
1602  {
1603  lan8720_interface_debug_print("lan8720: set manual channel select failed.\n");
1604  (void)lan8720_deinit(&gs_handle);
1605 
1606  return 1;
1607  }
1608  lan8720_interface_debug_print("lan8720: set tx transmits, rx receives.\n");
1609  res = lan8720_get_manual_channel_select(&gs_handle, &select);
1610  if (res != 0)
1611  {
1612  lan8720_interface_debug_print("lan8720: get manual channel select failed.\n");
1613  (void)lan8720_deinit(&gs_handle);
1614 
1615  return 1;
1616  }
1617  lan8720_interface_debug_print("lan8720: check manual channel select %s.\n", select == LAN8720_MANUAL_CHANNEL_SELECT_MDI ? "ok" : "error");
1618 
1619  /* tx receives, rx transmits */
1621  if (res != 0)
1622  {
1623  lan8720_interface_debug_print("lan8720: set manual channel select failed.\n");
1624  (void)lan8720_deinit(&gs_handle);
1625 
1626  return 1;
1627  }
1628  lan8720_interface_debug_print("lan8720: set tx receives, rx transmits.\n");
1629  res = lan8720_get_manual_channel_select(&gs_handle, &select);
1630  if (res != 0)
1631  {
1632  lan8720_interface_debug_print("lan8720: get manual channel select failed.\n");
1633  (void)lan8720_deinit(&gs_handle);
1634 
1635  return 1;
1636  }
1637  lan8720_interface_debug_print("lan8720: check manual channel select %s.\n", select == LAN8720_MANUAL_CHANNEL_SELECT_MDIX ? "ok" : "error");
1638 
1639  /* lan8720_set_sqe_test_off/lan8720_get_sqe_test_off test */
1640  lan8720_interface_debug_print("lan8720: lan8720_set_sqe_test_off/lan8720_get_sqe_test_off test.\n");
1641 
1642  /* enable */
1643  res = lan8720_set_sqe_test_off(&gs_handle, LAN8720_BOOL_TRUE);
1644  if (res != 0)
1645  {
1646  lan8720_interface_debug_print("lan8720: set sqe test off failed.\n");
1647  (void)lan8720_deinit(&gs_handle);
1648 
1649  return 1;
1650  }
1651  lan8720_interface_debug_print("lan8720: enable sqe test off.\n");
1652  res = lan8720_get_sqe_test_off(&gs_handle, &enable);
1653  if (res != 0)
1654  {
1655  lan8720_interface_debug_print("lan8720: get sqe test off failed.\n");
1656  (void)lan8720_deinit(&gs_handle);
1657 
1658  return 1;
1659  }
1660  lan8720_interface_debug_print("lan8720: check sqe test off %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
1661 
1662  /* disable */
1663  res = lan8720_set_sqe_test_off(&gs_handle, LAN8720_BOOL_FALSE);
1664  if (res != 0)
1665  {
1666  lan8720_interface_debug_print("lan8720: set sqe test off failed.\n");
1667  (void)lan8720_deinit(&gs_handle);
1668 
1669  return 1;
1670  }
1671  lan8720_interface_debug_print("lan8720: disable sqe test off.\n");
1672  res = lan8720_get_sqe_test_off(&gs_handle, &enable);
1673  if (res != 0)
1674  {
1675  lan8720_interface_debug_print("lan8720: get sqe test off failed.\n");
1676  (void)lan8720_deinit(&gs_handle);
1677 
1678  return 1;
1679  }
1680  lan8720_interface_debug_print("lan8720: check sqe test off %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
1681 
1682  /* lan8720_get_polarity test */
1683  lan8720_interface_debug_print("lan8720: lan8720_get_polarity test.\n");
1684 
1685  /* get polarity */
1686  res = lan8720_get_polarity(&gs_handle, &polarity);
1687  if (res != 0)
1688  {
1689  lan8720_interface_debug_print("lan8720: get polarity failed.\n");
1690  (void)lan8720_deinit(&gs_handle);
1691 
1692  return 1;
1693  }
1694  lan8720_interface_debug_print("lan8720: check polarity %s.\n", polarity == LAN8720_POLARITY_NORMAL ? "normal polarity" : "reversed polarity");
1695 
1696  /* lan8720_get_interrupt_flag test */
1697  lan8720_interface_debug_print("lan8720: lan8720_get_interrupt_flag test.\n");
1698 
1699  /* energy on generated */
1700  res = lan8720_get_interrupt_flag(&gs_handle, LAN8720_INTERRUPT_ENERGY_ON, &enable);
1701  if (res != 0)
1702  {
1703  lan8720_interface_debug_print("lan8720: get interrupt flag failed.\n");
1704  (void)lan8720_deinit(&gs_handle);
1705 
1706  return 1;
1707  }
1708  lan8720_interface_debug_print("lan8720: check energy on generated interrupt flag %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1709 
1710  /* auto negotiation complete */
1712  if (res != 0)
1713  {
1714  lan8720_interface_debug_print("lan8720: get interrupt flag failed.\n");
1715  (void)lan8720_deinit(&gs_handle);
1716 
1717  return 1;
1718  }
1719  lan8720_interface_debug_print("lan8720: check auto negotiation complete interrupt flag %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1720 
1721  /* remote fault detected */
1722  res = lan8720_get_interrupt_flag(&gs_handle, LAN8720_INTERRUPT_REMOTE_FAULT, &enable);
1723  if (res != 0)
1724  {
1725  lan8720_interface_debug_print("lan8720: get interrupt flag failed.\n");
1726  (void)lan8720_deinit(&gs_handle);
1727 
1728  return 1;
1729  }
1730  lan8720_interface_debug_print("lan8720: check remote fault detected interrupt flag %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1731 
1732  /* link down */
1733  res = lan8720_get_interrupt_flag(&gs_handle, LAN8720_INTERRUPT_LINK_DOWN, &enable);
1734  if (res != 0)
1735  {
1736  lan8720_interface_debug_print("lan8720: get interrupt flag failed.\n");
1737  (void)lan8720_deinit(&gs_handle);
1738 
1739  return 1;
1740  }
1741  lan8720_interface_debug_print("lan8720: check link down interrupt flag %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1742 
1743  /* auto negotiation lp acknowledge */
1745  if (res != 0)
1746  {
1747  lan8720_interface_debug_print("lan8720: get interrupt flag failed.\n");
1748  (void)lan8720_deinit(&gs_handle);
1749 
1750  return 1;
1751  }
1752  lan8720_interface_debug_print("lan8720: check auto negotiation lp acknowledge interrupt flag %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1753 
1754  /* parallel detection fault */
1756  if (res != 0)
1757  {
1758  lan8720_interface_debug_print("lan8720: get interrupt flag failed.\n");
1759  (void)lan8720_deinit(&gs_handle);
1760 
1761  return 1;
1762  }
1763  lan8720_interface_debug_print("lan8720: check parallel detection fault interrupt flag %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1764 
1765  /* auto negotiation page received */
1767  if (res != 0)
1768  {
1769  lan8720_interface_debug_print("lan8720: get interrupt flag failed.\n");
1770  (void)lan8720_deinit(&gs_handle);
1771 
1772  return 1;
1773  }
1774  lan8720_interface_debug_print("lan8720: check auto negotiation page received interrupt flag %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
1775 
1776  /* lan8720_set_interrupt_mask/lan8720_get_interrupt_mask test */
1777  lan8720_interface_debug_print("lan8720: lan8720_set_interrupt_mask/lan8720_get_interrupt_mask test.\n");
1778 
1779  /* enable energy on generated */
1781  if (res != 0)
1782  {
1783  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
1784  (void)lan8720_deinit(&gs_handle);
1785 
1786  return 1;
1787  }
1788  lan8720_interface_debug_print("lan8720: enable energy on generated.\n");
1789  res = lan8720_get_interrupt_mask(&gs_handle, LAN8720_INTERRUPT_ENERGY_ON, &enable);
1790  if (res != 0)
1791  {
1792  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
1793  (void)lan8720_deinit(&gs_handle);
1794 
1795  return 1;
1796  }
1797  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
1798 
1799  /* disable energy on generated */
1801  if (res != 0)
1802  {
1803  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
1804  (void)lan8720_deinit(&gs_handle);
1805 
1806  return 1;
1807  }
1808  lan8720_interface_debug_print("lan8720: disable energy on generated.\n");
1809  res = lan8720_get_interrupt_mask(&gs_handle, LAN8720_INTERRUPT_ENERGY_ON, &enable);
1810  if (res != 0)
1811  {
1812  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
1813  (void)lan8720_deinit(&gs_handle);
1814 
1815  return 1;
1816  }
1817  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
1818 
1819  /* enable auto negotiation complete */
1821  if (res != 0)
1822  {
1823  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
1824  (void)lan8720_deinit(&gs_handle);
1825 
1826  return 1;
1827  }
1828  lan8720_interface_debug_print("lan8720: enable auto negotiation complete.\n");
1830  if (res != 0)
1831  {
1832  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
1833  (void)lan8720_deinit(&gs_handle);
1834 
1835  return 1;
1836  }
1837  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
1838 
1839  /* disable auto negotiation complete */
1841  if (res != 0)
1842  {
1843  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
1844  (void)lan8720_deinit(&gs_handle);
1845 
1846  return 1;
1847  }
1848  lan8720_interface_debug_print("lan8720: disable auto negotiation complete.\n");
1850  if (res != 0)
1851  {
1852  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
1853  (void)lan8720_deinit(&gs_handle);
1854 
1855  return 1;
1856  }
1857  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
1858 
1859  /* enable remote fault detected */
1861  if (res != 0)
1862  {
1863  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
1864  (void)lan8720_deinit(&gs_handle);
1865 
1866  return 1;
1867  }
1868  lan8720_interface_debug_print("lan8720: enable remote fault detected.\n");
1869  res = lan8720_get_interrupt_mask(&gs_handle, LAN8720_INTERRUPT_REMOTE_FAULT, &enable);
1870  if (res != 0)
1871  {
1872  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
1873  (void)lan8720_deinit(&gs_handle);
1874 
1875  return 1;
1876  }
1877  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
1878 
1879  /* disable remote fault detected */
1881  if (res != 0)
1882  {
1883  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
1884  (void)lan8720_deinit(&gs_handle);
1885 
1886  return 1;
1887  }
1888  lan8720_interface_debug_print("lan8720: disable remote fault detected.\n");
1889  res = lan8720_get_interrupt_mask(&gs_handle, LAN8720_INTERRUPT_REMOTE_FAULT, &enable);
1890  if (res != 0)
1891  {
1892  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
1893  (void)lan8720_deinit(&gs_handle);
1894 
1895  return 1;
1896  }
1897  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
1898 
1899  /* enable link down */
1901  if (res != 0)
1902  {
1903  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
1904  (void)lan8720_deinit(&gs_handle);
1905 
1906  return 1;
1907  }
1908  lan8720_interface_debug_print("lan8720: enable link down.\n");
1909  res = lan8720_get_interrupt_mask(&gs_handle, LAN8720_INTERRUPT_LINK_DOWN, &enable);
1910  if (res != 0)
1911  {
1912  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
1913  (void)lan8720_deinit(&gs_handle);
1914 
1915  return 1;
1916  }
1917  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
1918 
1919  /* disable link down */
1921  if (res != 0)
1922  {
1923  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
1924  (void)lan8720_deinit(&gs_handle);
1925 
1926  return 1;
1927  }
1928  lan8720_interface_debug_print("lan8720: disable link down.\n");
1929  res = lan8720_get_interrupt_mask(&gs_handle, LAN8720_INTERRUPT_LINK_DOWN, &enable);
1930  if (res != 0)
1931  {
1932  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
1933  (void)lan8720_deinit(&gs_handle);
1934 
1935  return 1;
1936  }
1937  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
1938 
1939  /* enable auto negotiation lp acknowledge */
1941  if (res != 0)
1942  {
1943  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
1944  (void)lan8720_deinit(&gs_handle);
1945 
1946  return 1;
1947  }
1948  lan8720_interface_debug_print("lan8720: enable auto negotiation lp acknowledge.\n");
1950  if (res != 0)
1951  {
1952  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
1953  (void)lan8720_deinit(&gs_handle);
1954 
1955  return 1;
1956  }
1957  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
1958 
1959  /* disable auto negotiation lp acknowledge */
1961  if (res != 0)
1962  {
1963  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
1964  (void)lan8720_deinit(&gs_handle);
1965 
1966  return 1;
1967  }
1968  lan8720_interface_debug_print("lan8720: disable auto negotiation lp acknowledge.\n");
1970  if (res != 0)
1971  {
1972  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
1973  (void)lan8720_deinit(&gs_handle);
1974 
1975  return 1;
1976  }
1977  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
1978 
1979  /* enable parallel detection fault */
1981  if (res != 0)
1982  {
1983  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
1984  (void)lan8720_deinit(&gs_handle);
1985 
1986  return 1;
1987  }
1988  lan8720_interface_debug_print("lan8720: enable parallel detection fault.\n");
1990  if (res != 0)
1991  {
1992  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
1993  (void)lan8720_deinit(&gs_handle);
1994 
1995  return 1;
1996  }
1997  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
1998 
1999  /* disable parallel detection fault */
2001  if (res != 0)
2002  {
2003  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
2004  (void)lan8720_deinit(&gs_handle);
2005 
2006  return 1;
2007  }
2008  lan8720_interface_debug_print("lan8720: disable parallel detection fault.\n");
2010  if (res != 0)
2011  {
2012  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
2013  (void)lan8720_deinit(&gs_handle);
2014 
2015  return 1;
2016  }
2017  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
2018 
2019  /* enable auto negotiation page received */
2021  if (res != 0)
2022  {
2023  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
2024  (void)lan8720_deinit(&gs_handle);
2025 
2026  return 1;
2027  }
2028  lan8720_interface_debug_print("lan8720: enable auto negotiation page received.\n");
2030  if (res != 0)
2031  {
2032  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
2033  (void)lan8720_deinit(&gs_handle);
2034 
2035  return 1;
2036  }
2037  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_TRUE ? "ok" : "error");
2038 
2039  /* disable auto negotiation page received */
2041  if (res != 0)
2042  {
2043  lan8720_interface_debug_print("lan8720: set interrupt mask failed.\n");
2044  (void)lan8720_deinit(&gs_handle);
2045 
2046  return 1;
2047  }
2048  lan8720_interface_debug_print("lan8720: disable auto negotiation page received.\n");
2050  if (res != 0)
2051  {
2052  lan8720_interface_debug_print("lan8720: get interrupt mask failed.\n");
2053  (void)lan8720_deinit(&gs_handle);
2054 
2055  return 1;
2056  }
2057  lan8720_interface_debug_print("lan8720: check interrupt mask %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
2058 
2059  /* lan8720_get_auto_negotiation_done test */
2060  lan8720_interface_debug_print("lan8720: lan8720_get_auto_negotiation_done test.\n");
2061 
2062  /* get auto negotiation done */
2063  res = lan8720_get_auto_negotiation_done(&gs_handle, &enable);
2064  if (res != 0)
2065  {
2066  lan8720_interface_debug_print("lan8720: get auto negotiation done failed.\n");
2067  (void)lan8720_deinit(&gs_handle);
2068 
2069  return 1;
2070  }
2071  lan8720_interface_debug_print("lan8720: check auto negotiation done %s.\n", enable == LAN8720_BOOL_TRUE ? "true" : "false");
2072 
2073  /* lan8720_get_speed_indication test */
2074  lan8720_interface_debug_print("lan8720: lan8720_get_speed_indication test.\n");
2075 
2076  /* get speed indication */
2077  res = lan8720_get_speed_indication(&gs_handle, &speed_indication);
2078  if (res != 0)
2079  {
2080  lan8720_interface_debug_print("lan8720: get speed indication failed.\n");
2081  (void)lan8720_deinit(&gs_handle);
2082 
2083  return 1;
2084  }
2085  lan8720_interface_debug_print("lan8720: check speed indication 0x%02X.\n", speed_indication);
2086 
2087  /* lan8720_set_soft_reset/lan8720_get_soft_reset test */
2088  lan8720_interface_debug_print("lan8720: lan8720_set_soft_reset/lan8720_get_soft_reset test.\n");
2089 
2090  /* enable soft reset */
2091  res = lan8720_set_soft_reset(&gs_handle, LAN8720_BOOL_TRUE);
2092  if (res != 0)
2093  {
2094  lan8720_interface_debug_print("lan8720: set soft reset failed.\n");
2095  (void)lan8720_deinit(&gs_handle);
2096 
2097  return 1;
2098  }
2099  lan8720_interface_debug_print("lan8720: enable soft reset.\n");
2101  res = lan8720_get_soft_reset(&gs_handle, &enable);
2102  if (res != 0)
2103  {
2104  lan8720_interface_debug_print("lan8720: get soft reset failed.\n");
2105  (void)lan8720_deinit(&gs_handle);
2106 
2107  return 1;
2108  }
2109  lan8720_interface_debug_print("lan8720: check soft reset %s.\n", enable == LAN8720_BOOL_FALSE ? "ok" : "error");
2110 
2111  /* finish register */
2112  lan8720_interface_debug_print("lan8720: finish register test.\n");
2113  (void)lan8720_deinit(&gs_handle);
2114 
2115  return 0;
2116 }
driver lan8720 register test header file
uint8_t lan8720_get_auto_negotiation_expansion_link_partner_auto_negotiation_able(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation expansion link partner auto negotiation able status
uint8_t lan8720_get_auto_negotiation_link_partner_ability_remote_fault(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation link partner ability remote fault status
uint8_t lan8720_get_auto_negotiation_done(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation done status
uint8_t lan8720_set_energy_detect_power_down_mode(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable energy detect power down mode
uint8_t lan8720_get_auto_negotiation_advertisement_100base_tx_full_duplex(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation advertisement 100base tx full duplex status
uint8_t lan8720_get_auto_negotiation_link_partner_ability_selector_field(lan8720_handle_t *handle, uint8_t *selector)
get auto negotiation link partner ability selector field
uint8_t lan8720_get_auto_mdix(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto mdix status
uint8_t lan8720_get_auto_negotiation_advertisement_10base_t_full_duplex(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation advertisement 10base t full duplex status
uint8_t lan8720_get_interrupt_mask(lan8720_handle_t *handle, lan8720_interrupt_t interrupt, lan8720_bool_t *enable)
get interrupt mask status
uint8_t lan8720_get_energy_detected(lan8720_handle_t *handle, lan8720_bool_t *enable)
get energy detected status
uint8_t lan8720_get_phy_address(lan8720_handle_t *handle, uint8_t *addr)
get phy address
uint8_t lan8720_get_auto_negotiation_link_partner_ability_100base_tx(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation link partner ability 100base tx status
uint8_t lan8720_get_auto_negotiation_advertisement_remote_fault(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation advertisement remote fault status
uint8_t lan8720_set_interrupt_mask(lan8720_handle_t *handle, lan8720_interrupt_t interrupt, lan8720_bool_t enable)
set interrupt mask
uint8_t lan8720_set_auto_negotiation_advertisement_pause(lan8720_handle_t *handle, lan8720_pause_t pause)
set auto negotiation advertisement pause
uint8_t lan8720_set_auto_negotiation_advertisement_10base_t(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable auto negotiation advertisement 10base t
lan8720_polarity_t
lan8720 polarity enumeration definition
uint8_t lan8720_get_symbol_error_counter(lan8720_handle_t *handle, uint16_t *cnt)
get symbol error counter
uint8_t lan8720_get_auto_negotiation_advertisement_100base_tx(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation advertisement 100base tx status
uint8_t lan8720_get_energy_detect_power_down_mode(lan8720_handle_t *handle, lan8720_bool_t *enable)
get energy detect power down mode status
uint8_t lan8720_get_auto_negotiation_advertisement_selector_field(lan8720_handle_t *handle, uint8_t *selector)
get auto negotiation advertisement selector field
uint8_t lan8720_set_auto_negotiation_advertisement_100base_tx_full_duplex(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable auto negotiation advertisement 100base tx full duplex
lan8720_mode_t
lan8720 mode enumeration definition
uint8_t lan8720_get_auto_negotiation_link_partner_ability_next_page(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation link partner ability next page status
uint8_t lan8720_get_auto_negotiation_link_partner_ability_10base_t(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation link partner ability 10base t status
uint8_t lan8720_get_auto_negotiation_link_partner_ability_10base_t_full_duplex(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation link partner ability 10base t full duplex status
uint8_t lan8720_get_polarity(lan8720_handle_t *handle, lan8720_polarity_t *polarity)
get polarity
uint8_t lan8720_set_auto_negotiation_advertisement_100base_tx(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable auto negotiation advertisement 100base tx
lan8720_manual_channel_select_t
lan8720 manual channel select enumeration definition
uint8_t lan8720_get_auto_negotiation_expansion_page_received(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation expansion page received status
uint8_t lan8720_get_auto_negotiation_expansion_link_partner_next_page_able(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation expansion link partner next page able status
uint8_t lan8720_set_phy_address(lan8720_handle_t *handle, uint8_t addr)
set phy address
uint8_t lan8720_set_auto_negotiation_advertisement_selector_field(lan8720_handle_t *handle, uint8_t selector)
set auto negotiation advertisement selector field
uint8_t lan8720_get_far_loop_back(lan8720_handle_t *handle, lan8720_bool_t *enable)
get far loop back status
uint8_t lan8720_set_identifier(lan8720_handle_t *handle, uint32_t phy_id, uint8_t model_number, uint8_t revision_number)
set identifier
uint8_t lan8720_get_auto_negotiation_link_partner_ability_100base_t4(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation link partner ability 100base t4 status
uint8_t lan8720_set_far_loop_back(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable far loop back
uint8_t lan8720_get_identifier(lan8720_handle_t *handle, uint32_t *phy_id, uint8_t *model_number, uint8_t *revision_number)
get identifier
uint8_t lan8720_set_mode(lan8720_handle_t *handle, lan8720_mode_t mode)
set mode
uint8_t lan8720_set_manual_channel_select(lan8720_handle_t *handle, lan8720_manual_channel_select_t select)
set manual channel select
uint8_t lan8720_get_auto_negotiation_link_partner_ability_100base_tx_full_duplex(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation link partner ability 100base tx full duplex status
uint8_t lan8720_get_auto_negotiation_link_partner_ability_acknowledge(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation link partner ability acknowledge status
uint8_t lan8720_set_auto_negotiation_advertisement_remote_fault(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable auto negotiation advertisement remote fault
uint8_t lan8720_get_interrupt_flag(lan8720_handle_t *handle, lan8720_interrupt_t interrupt, lan8720_bool_t *enable)
get interrupt flag status
uint8_t lan8720_get_speed_indication(lan8720_handle_t *handle, lan8720_speed_indication_t *speed)
get speed indication
uint8_t lan8720_get_auto_negotiation_link_partner_ability_pause(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation link partner ability pause status
uint8_t lan8720_get_auto_negotiation_expansion_parallel_detection_fault(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation expansion parallel detection fault status
uint8_t lan8720_get_auto_negotiation_advertisement_pause(lan8720_handle_t *handle, lan8720_pause_t *pause)
get auto negotiation advertisement pause
uint8_t lan8720_set_auto_negotiation_advertisement_10base_t_full_duplex(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable auto negotiation advertisement 10base t full duplex
uint8_t lan8720_get_sqe_test_off(lan8720_handle_t *handle, lan8720_bool_t *enable)
get sqe test off status
lan8720_speed_indication_t
lan8720 speed indication enumeration definition
uint8_t lan8720_get_manual_channel_select(lan8720_handle_t *handle, lan8720_manual_channel_select_t *select)
get manual channel select
uint8_t lan8720_get_alternate_interrupt_mode(lan8720_handle_t *handle, lan8720_bool_t *enable)
get alternate interrupt mode status
uint8_t lan8720_set_auto_mdix(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable auto mdix
uint8_t lan8720_set_alternate_interrupt_mode(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable alternate interrupt mode
uint8_t lan8720_get_auto_negotiation_expansion_next_page_able(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation expansion next page able status
uint8_t lan8720_get_mode(lan8720_handle_t *handle, lan8720_mode_t *mode)
get mode
uint8_t lan8720_get_auto_negotiation_advertisement_10base_t(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation advertisement 10base t status
lan8720_pause_t
lan8720 pause enumeration definition
uint8_t lan8720_set_sqe_test_off(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable sqe test off
@ LAN8720_POLARITY_NORMAL
@ LAN8720_MODE_100BASE_TX_HALF_DUPLEX
@ LAN8720_MODE_10BASE_T_HALF_DUPLEX
@ LAN8720_MODE_ALL_CAPABLE
@ LAN8720_MODE_100BASE_TX_HALF_DUPLEX_ADVERTISED
@ LAN8720_MODE_10BASE_T_FULL_DUPLEX
@ LAN8720_MODE_POWER_DOWN_MODE
@ LAN8720_MODE_REPEATER_MODE
@ LAN8720_MODE_100BASE_TX_FULL_DUPLEX
@ LAN8720_MANUAL_CHANNEL_SELECT_MDIX
@ LAN8720_MANUAL_CHANNEL_SELECT_MDI
@ LAN8720_INTERRUPT_ENERGY_ON
@ LAN8720_INTERRUPT_PARALLEL_DETECTION_FAULT
@ LAN8720_INTERRUPT_LINK_DOWN
@ LAN8720_INTERRUPT_REMOTE_FAULT
@ LAN8720_INTERRUPT_AUTO_NEGOTIATION_COMPLETE
@ LAN8720_INTERRUPT_AUTO_NEGOTIATION_PAGE_RECEIVED
@ LAN8720_INTERRUPT_AUTO_NEGOTIATION_LP_ACK
@ LAN8720_PAUSE_BOTH
@ LAN8720_PAUSE_NO
@ LAN8720_PAUSE_ASYMMETRIC
@ LAN8720_PAUSE_SYMMETRIC
uint8_t lan8720_set_duplex_mode(lan8720_handle_t *handle, lan8720_duplex_t mode)
set duplex mode
uint8_t lan8720_get_auto_negotiate_ability(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiate ability status
uint8_t lan8720_get_extended_status_information(lan8720_handle_t *handle, lan8720_bool_t *enable)
get extended status information status
uint8_t lan8720_get_electrical_isolation(lan8720_handle_t *handle, lan8720_bool_t *enable)
get electrical isolation status
uint8_t lan8720_get_100base_t4(lan8720_handle_t *handle, lan8720_bool_t *enable)
get 100base t4 status
uint8_t lan8720_set_loop_back(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable loop back
uint8_t lan8720_get_address(lan8720_handle_t *handle, uint8_t *addr)
get the chip address
uint8_t lan8720_get_link_status(lan8720_handle_t *handle, lan8720_link_t *status)
get link status
uint8_t lan8720_set_speed_select(lan8720_handle_t *handle, lan8720_speed_t speed)
set speed select
uint8_t lan8720_get_restart_auto_negotiate(lan8720_handle_t *handle, lan8720_bool_t *enable)
get restart auto negotiate status
uint8_t lan8720_init(lan8720_handle_t *handle)
initialize the chip
uint8_t lan8720_get_duplex_mode(lan8720_handle_t *handle, lan8720_duplex_t *mode)
get duplex mode
uint8_t lan8720_get_100base_tx_full_duplex(lan8720_handle_t *handle, lan8720_bool_t *enable)
get 100base tx full duplex status
lan8720_bool_t
lan8720 bool enumeration definition
uint8_t lan8720_deinit(lan8720_handle_t *handle)
close the chip
uint8_t lan8720_get_auto_negotiation(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiation status
uint8_t lan8720_get_remote_fault(lan8720_handle_t *handle, lan8720_bool_t *enable)
get remote fault status
lan8720_duplex_t
lan8720 duplex enumeration definition
uint8_t lan8720_set_restart_auto_negotiate(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable restart auto negotiate
uint8_t lan8720_get_100base_t2_half_duplex(lan8720_handle_t *handle, lan8720_bool_t *enable)
get 100base t2 half duplex status
uint8_t lan8720_get_100base_tx_half_duplex(lan8720_handle_t *handle, lan8720_bool_t *enable)
get 100base tx half duplex status
uint8_t lan8720_get_loop_back(lan8720_handle_t *handle, lan8720_bool_t *enable)
get loop back status
uint8_t lan8720_get_10base_t_full_duplex(lan8720_handle_t *handle, lan8720_bool_t *enable)
get 10base t full duplex status
uint8_t lan8720_set_soft_reset(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable soft reset
uint8_t lan8720_get_speed_select(lan8720_handle_t *handle, lan8720_speed_t *speed)
get speed select status
lan8720_link_t
lan8720 link enumeration definition
uint8_t lan8720_set_auto_negotiation(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable auto negotiation
uint8_t lan8720_get_soft_reset(lan8720_handle_t *handle, lan8720_bool_t *enable)
get soft reset status
uint8_t lan8720_get_auto_negotiate_complete(lan8720_handle_t *handle, lan8720_bool_t *enable)
get auto negotiate complete status
uint8_t lan8720_get_100base_t2_full_duplex(lan8720_handle_t *handle, lan8720_bool_t *enable)
get 100base t2 full duplex status
uint8_t lan8720_get_10base_t_half_duplex(lan8720_handle_t *handle, lan8720_bool_t *enable)
get 10base t half duplex status
uint8_t lan8720_info(lan8720_info_t *info)
get chip's information
uint8_t lan8720_set_power_down(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable power down
uint8_t lan8720_get_extended_capabilities(lan8720_handle_t *handle, lan8720_bool_t *enable)
get extended capabilities status
uint8_t lan8720_get_jabber_detect(lan8720_handle_t *handle, lan8720_bool_t *enable)
get jabber detect status
lan8720_speed_t
lan8720 speed enumeration definition
uint8_t lan8720_set_address(lan8720_handle_t *handle, uint8_t addr)
set the chip address
uint8_t lan8720_get_power_down(lan8720_handle_t *handle, lan8720_bool_t *enable)
get power down status
uint8_t lan8720_set_electrical_isolation(lan8720_handle_t *handle, lan8720_bool_t enable)
enable or disable electrical isolation
@ LAN8720_BOOL_FALSE
@ LAN8720_BOOL_TRUE
@ LAN8720_DUPLEX_FULL
@ LAN8720_DUPLEX_HALF
@ LAN8720_LINK_DOWN
@ LAN8720_SPEED_10M
@ LAN8720_SPEED_100M
uint8_t lan8720_interface_reset_gpio_deinit(void)
interface reset gpio deinit
uint8_t lan8720_interface_reset_gpio_write(uint8_t level)
interface reset gpio write
void lan8720_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t lan8720_interface_smi_deinit(void)
interface smi bus deinit
uint8_t lan8720_interface_smi_init(void)
interface smi bus init
uint8_t lan8720_interface_smi_read(uint8_t addr, uint8_t reg, uint16_t *data)
interface smi bus read
void lan8720_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t lan8720_interface_reset_gpio_init(void)
interface reset gpio init
uint8_t lan8720_interface_smi_write(uint8_t addr, uint8_t reg, uint16_t data)
interface smi bus write
uint8_t lan8720_register_test(uint8_t addr)
register test
lan8720 handle structure definition
lan8720 information structure definition
float supply_voltage_max_v
uint32_t driver_version
char interface[16]
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]