2 * Copyright (C) 2013 Realtek Semiconductor Corp.
5 * Unless you and Realtek execute a separate written software license
6 * agreement governing use of this software, this software is licensed
7 * to you under the terms of the GNU General Public License version 2,
8 * available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
11 * $Date: 2017-03-08 15:13:58 +0800 (週三, 08 三月 2017) $
13 * Purpose : RTL8367C switch high-level API for RTL8367C
14 * Feature : LED related functions
17 #include <rtl8367c_asicdrv_led.h>
19 * rtl8367c_setAsicLedIndicateInfoConfig
21 * Set Leds indicated information mode
23 * ledno - LED group number. There are 1 to 1 led mapping to each port in each led group
24 * config - Support 16 types configuration
29 * RT_ERR_SMI - SMI access error
30 * RT_ERR_OUT_OF_RANGE - input parameter out of range
32 * The API can set LED indicated information configuration for each LED group with 1 to 1 led mapping to each port.
33 * Definition LED Statuses Description
34 * 0000 LED_Off LED pin Tri-State.
35 * 0001 Dup/Col Collision, Full duplex Indicator. Blinking every 43ms when collision happens. Low for full duplex, and high for half duplex mode.
36 * 0010 Link/Act Link, Activity Indicator. Low for link established. Link/Act Blinks every 43ms when the corresponding port is transmitting or receiving.
37 * 0011 Spd1000 1000Mb/s Speed Indicator. Low for 1000Mb/s.
38 * 0100 Spd100 100Mb/s Speed Indicator. Low for 100Mb/s.
39 * 0101 Spd10 10Mb/s Speed Indicator. Low for 10Mb/s.
40 * 0110 Spd1000/Act 1000Mb/s Speed/Activity Indicator. Low for 1000Mb/s. Blinks every 43ms when the corresponding port is transmitting or receiving.
41 * 0111 Spd100/Act 100Mb/s Speed/Activity Indicator. Low for 100Mb/s. Blinks every 43ms when the corresponding port is transmitting or receiving.
42 * 1000 Spd10/Act 10Mb/s Speed/Activity Indicator. Low for 10Mb/s. Blinks every 43ms when the corresponding port is transmitting or receiving.
43 * 1001 Spd100 (10)/Act 10/100Mb/s Speed/Activity Indicator. Low for 10/100Mb/s. Blinks every 43ms when the corresponding port is transmitting or receiving.
44 * 1010 Fiber Fiber link Indicator. Low for Fiber.
45 * 1011 Fault Auto-negotiation Fault Indicator. Low for Fault.
46 * 1100 Link/Rx Link, Activity Indicator. Low for link established. Link/Rx Blinks every 43ms when the corresponding port is transmitting.
47 * 1101 Link/Tx Link, Activity Indicator. Low for link established. Link/Tx Blinks every 43ms when the corresponding port is receiving.
48 * 1110 Master Link on Master Indicator. Low for link Master established.
49 * 1111 LED_Force Force LED output, LED output value reference
51 ret_t
rtl8367c_setAsicLedIndicateInfoConfig(rtk_uint32 ledno
, rtk_uint32 config
)
54 CONST rtk_uint16 bits
[RTL8367C_LEDGROUPNO
] = {RTL8367C_LED0_CFG_MASK
, RTL8367C_LED1_CFG_MASK
, RTL8367C_LED2_CFG_MASK
};
56 if(ledno
>= RTL8367C_LEDGROUPNO
)
57 return RT_ERR_OUT_OF_RANGE
;
59 if(config
>= LEDCONF_END
)
60 return RT_ERR_OUT_OF_RANGE
;
62 retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_LED_CONFIGURATION
, RTL8367C_LED_CONFIG_SEL_OFFSET
, 0);
63 if(retVal
!= RT_ERR_OK
)
66 return rtl8367c_setAsicRegBits(RTL8367C_REG_LED_CONFIGURATION
, bits
[ledno
], config
);
69 * rtl8367c_getAsicLedIndicateInfoConfig
71 * Get Leds indicated information mode
73 * ledno - LED group number. There are 1 to 1 led mapping to each port in each led group
74 * pConfig - Support 16 types configuration
79 * RT_ERR_SMI - SMI access error
80 * RT_ERR_OUT_OF_RANGE - input parameter out of range
84 ret_t
rtl8367c_getAsicLedIndicateInfoConfig(rtk_uint32 ledno
, rtk_uint32
* pConfig
)
86 CONST rtk_uint16 bits
[RTL8367C_LEDGROUPNO
]= {RTL8367C_LED0_CFG_MASK
, RTL8367C_LED1_CFG_MASK
, RTL8367C_LED2_CFG_MASK
};
88 if(ledno
>= RTL8367C_LEDGROUPNO
)
89 return RT_ERR_OUT_OF_RANGE
;
91 /* Get register value */
92 return rtl8367c_getAsicRegBits(RTL8367C_REG_LED_CONFIGURATION
, bits
[ledno
], pConfig
);
95 * rtl8367c_setAsicLedGroupMode
103 * RT_ERR_OK - Success
104 * RT_ERR_SMI - SMI access error
105 * RT_ERR_OUT_OF_RANGE - input parameter out of range
109 ret_t
rtl8367c_setAsicLedGroupMode(rtk_uint32 mode
)
113 /* Invalid input parameter */
114 if(mode
>= RTL8367C_LED_MODE_END
)
115 return RT_ERR_OUT_OF_RANGE
;
117 retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_LED_CONFIGURATION
, RTL8367C_LED_CONFIG_SEL_OFFSET
, 1);
118 if(retVal
!= RT_ERR_OK
)
121 return rtl8367c_setAsicRegBits(RTL8367C_REG_LED_CONFIGURATION
, RTL8367C_DATA_LED_MASK
, mode
);
124 * rtl8367c_getAsicLedGroupMode
132 * RT_ERR_OK - Success
133 * RT_ERR_SMI - SMI access error
137 ret_t
rtl8367c_getAsicLedGroupMode(rtk_uint32
* pMode
)
142 retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_LED_CONFIGURATION
, RTL8367C_LED_CONFIG_SEL_OFFSET
, ®Data
);
143 if(retVal
!= RT_ERR_OK
)
147 return RT_ERR_FAILED
;
149 return rtl8367c_getAsicRegBits(RTL8367C_REG_LED_CONFIGURATION
, RTL8367C_DATA_LED_MASK
, pMode
);
152 * rtl8367c_setAsicForceLeds
156 * port - Physical port number (0~7)
157 * group - LED group number
162 * RT_ERR_OK - Success
163 * RT_ERR_SMI - SMI access error
164 * RT_ERR_PORT_ID - Invalid port number
165 * RT_ERR_OUT_OF_RANGE - input parameter out of range
169 ret_t
rtl8367c_setAsicForceLed(rtk_uint32 port
, rtk_uint32 group
, rtk_uint32 mode
)
174 /* Invalid input parameter */
175 if(port
> RTL8367C_PORTIDMAX
)
176 return RT_ERR_PORT_ID
;
178 if(group
>= RTL8367C_LEDGROUPNO
)
179 return RT_ERR_OUT_OF_RANGE
;
181 if(mode
>= LEDFORCEMODE_END
)
182 return RT_ERR_OUT_OF_RANGE
;
183 /* Set Related Registers */
185 regAddr
= RTL8367C_LED_FORCE_MODE_BASE
+ (group
<< 1);
186 if((retVal
= rtl8367c_setAsicRegBits(regAddr
, 0x3 << (port
* 2), mode
)) != RT_ERR_OK
)
189 regAddr
= RTL8367C_REG_CPU_FORCE_LED0_CFG1
+ (group
<< 1);
190 if((retVal
= rtl8367c_setAsicRegBits(regAddr
, 0x3 << ((port
-8) * 2), mode
)) != RT_ERR_OK
)
197 * rtl8367c_getAsicForceLed
201 * port - Physical port number (0~7)
202 * group - LED group number
207 * RT_ERR_OK - Success
208 * RT_ERR_SMI - SMI access error
209 * RT_ERR_PORT_ID - Invalid port number
210 * RT_ERR_OUT_OF_RANGE - input parameter out of range
214 ret_t
rtl8367c_getAsicForceLed(rtk_uint32 port
, rtk_uint32 group
, rtk_uint32
* pMode
)
219 /* Invalid input parameter */
220 if(port
> RTL8367C_PORTIDMAX
)
221 return RT_ERR_PORT_ID
;
223 if(group
>= RTL8367C_LEDGROUPNO
)
226 /* Get Related Registers */
228 regAddr
= RTL8367C_LED_FORCE_MODE_BASE
+ (group
<< 1);
229 if((retVal
= rtl8367c_getAsicRegBits(regAddr
, 0x3 << (port
* 2), pMode
)) != RT_ERR_OK
)
232 regAddr
= RTL8367C_REG_CPU_FORCE_LED0_CFG1
+ (group
<< 1);
233 if((retVal
= rtl8367c_getAsicRegBits(regAddr
, 0x3 << ((port
-8) * 2), pMode
)) != RT_ERR_OK
)
240 * rtl8367c_setAsicForceGroupLed
242 * Turn on/off Led of all ports
244 * group - LED group number
245 * mode - 0b00:normal mode, 0b01:force blink, 0b10:force off, 0b11:force on
249 * RT_ERR_OK - Success
250 * RT_ERR_SMI - SMI access error
251 * RT_ERR_OUT_OF_RANGE - input parameter out of range
255 ret_t
rtl8367c_setAsicForceGroupLed(rtk_uint32 groupmask
, rtk_uint32 mode
)
258 rtk_uint32 i
,bitmask
;
259 CONST rtk_uint16 bits
[3]= {0x0004,0x0010,0x0040};
261 /* Invalid input parameter */
262 if(groupmask
> RTL8367C_LEDGROUPMASK
)
263 return RT_ERR_OUT_OF_RANGE
;
265 if(mode
>= LEDFORCEMODE_END
)
266 return RT_ERR_OUT_OF_RANGE
;
269 for(i
= 0; i
< RTL8367C_LEDGROUPNO
; i
++)
271 if(groupmask
& (1 << i
))
273 bitmask
= bitmask
| bits
[i
];
278 retVal
= rtl8367c_setAsicRegBits(RTL8367C_LED_FORCE_CTRL
, RTL8367C_LED_FORCE_MODE_MASK
, bitmask
);
280 retVal
= rtl8367c_setAsicRegBits(RTL8367C_LED_FORCE_CTRL
, RTL8367C_FORCE_MODE_MASK
, mode
);
282 if(LEDFORCEMODE_NORMAL
== mode
)
283 retVal
= rtl8367c_setAsicRegBits(RTL8367C_LED_FORCE_CTRL
, RTL8367C_LED_FORCE_MODE_MASK
, 0);
288 * rtl8367c_getAsicForceGroupLed
290 * Turn on/off Led of all ports
292 * group - LED group number
293 * pMode - 0b00:normal mode, 0b01:force blink, 0b10:force off, 0b11:force on
297 * RT_ERR_OK - Success
298 * RT_ERR_SMI - SMI access error
302 ret_t
rtl8367c_getAsicForceGroupLed(rtk_uint32
* groupmask
, rtk_uint32
* pMode
)
305 rtk_uint32 i
,regData
;
306 CONST rtk_uint16 bits
[3] = {0x0004,0x0010,0x0040};
308 /* Get Related Registers */
309 if((retVal
= rtl8367c_getAsicRegBits(RTL8367C_LED_FORCE_CTRL
, RTL8367C_LED_FORCE_MODE_MASK
, ®Data
)) != RT_ERR_OK
)
312 for(i
= 0; i
< RTL8367C_LEDGROUPNO
; i
++)
314 if((regData
& bits
[i
]) == bits
[i
])
316 *groupmask
= *groupmask
| (1 << i
);
320 return rtl8367c_getAsicRegBits(RTL8367C_LED_FORCE_CTRL
, RTL8367C_FORCE_MODE_MASK
, pMode
);
323 * rtl8367c_setAsicLedBlinkRate
325 * Set led blinking rate at mode 0 to mode 3
327 * blinkRate - Support 6 blink rates
331 * RT_ERR_OK - Success
332 * RT_ERR_SMI - SMI access error
333 * RT_ERR_OUT_OF_RANGE - input parameter out of range
335 * LED blink rate can be at 43ms, 84ms, 120ms, 170ms, 340ms and 670ms
337 ret_t
rtl8367c_setAsicLedBlinkRate(rtk_uint32 blinkRate
)
339 if(blinkRate
>= LEDBLINKRATE_END
)
340 return RT_ERR_OUT_OF_RANGE
;
342 return rtl8367c_setAsicRegBits(RTL8367C_REG_LED_MODE
, RTL8367C_SEL_LEDRATE_MASK
, blinkRate
);
345 * rtl8367c_getAsicLedBlinkRate
347 * Get led blinking rate at mode 0 to mode 3
349 * pBlinkRate - Support 6 blink rates
353 * RT_ERR_OK - Success
354 * RT_ERR_SMI - SMI access error
358 ret_t
rtl8367c_getAsicLedBlinkRate(rtk_uint32
* pBlinkRate
)
360 return rtl8367c_getAsicRegBits(RTL8367C_REG_LED_MODE
, RTL8367C_SEL_LEDRATE_MASK
, pBlinkRate
);
363 * rtl8367c_setAsicLedForceBlinkRate
365 * Set LEd blinking rate for force mode led
367 * blinkRate - Support 6 blink rates
371 * RT_ERR_OK - Success
372 * RT_ERR_SMI - SMI access error
373 * RT_ERR_OUT_OF_RANGE - input parameter out of range
377 ret_t
rtl8367c_setAsicLedForceBlinkRate(rtk_uint32 blinkRate
)
379 if(blinkRate
>= LEDFORCERATE_END
)
380 return RT_ERR_OUT_OF_RANGE
;
382 return rtl8367c_setAsicRegBits(RTL8367C_REG_LED_MODE
, RTL8367C_FORCE_RATE_MASK
, blinkRate
);
385 * rtl8367c_getAsicLedForceBlinkRate
387 * Get LED blinking rate for force mode led
389 * pBlinkRate - Support 6 blink rates
393 * RT_ERR_OK - Success
394 * RT_ERR_SMI - SMI access error
398 ret_t
rtl8367c_getAsicLedForceBlinkRate(rtk_uint32
* pBlinkRate
)
400 return rtl8367c_getAsicRegBits(RTL8367C_REG_LED_MODE
, RTL8367C_FORCE_RATE_MASK
, pBlinkRate
);
404 @func ret_t | rtl8367c_setAsicLedGroupEnable | Turn on/off Led of all system ports
405 @parm rtk_uint32 | group | LED group id.
406 @parm rtk_uint32 | portmask | LED port mask.
407 @rvalue RT_ERR_OK | Success.
408 @rvalue RT_ERR_SMI | SMI access error.
409 @rvalue RT_ERR_PORT_ID | Invalid port number.
410 @rvalue RT_ERR_INPUT | Invalid input value.
412 The API can turn on/off leds of dedicated port while indicated information configuration of LED group is set to force mode.
414 ret_t
rtl8367c_setAsicLedGroupEnable(rtk_uint32 group
, rtk_uint32 portmask
)
418 rtk_uint32 regDataMask
;
420 if ( group
>= RTL8367C_LEDGROUPNO
)
423 regAddr
= RTL8367C_REG_PARA_LED_IO_EN1
+ group
/2;
424 regDataMask
= 0xFF << ((group
%2)*8);
425 retVal
= rtl8367c_setAsicRegBits(regAddr
, regDataMask
, portmask
&0xff);
426 if(retVal
!= RT_ERR_OK
)
429 regAddr
= RTL8367C_REG_PARA_LED_IO_EN3
;
430 regDataMask
= 0x3 << (group
*2);
431 retVal
= rtl8367c_setAsicRegBits(regAddr
, regDataMask
, (portmask
>>8)&0x7);
432 if(retVal
!= RT_ERR_OK
)
440 @func ret_t | rtl8367c_getAsicLedGroupEnable | Get on/off status of Led of all system ports
441 @parm rtk_uint32 | group | LED group id.
442 @parm rtk_uint32 | *portmask | LED port mask.
443 @rvalue RT_ERR_OK | Success.
444 @rvalue RT_ERR_SMI | SMI access error.
445 @rvalue RT_ERR_PORT_ID | Invalid port number.
446 @rvalue RT_ERR_INPUT | Invalid input value.
448 The API can turn on/off leds of dedicated port while indicated information configuration of LED group is set to force mode.
450 ret_t
rtl8367c_getAsicLedGroupEnable(rtk_uint32 group
, rtk_uint32
*portmask
)
454 rtk_uint32 regDataMask
,regData
;
456 if ( group
>= RTL8367C_LEDGROUPNO
)
459 regAddr
= RTL8367C_REG_PARA_LED_IO_EN1
+ group
/2;
460 regDataMask
= 0xFF << ((group
%2)*8);
461 retVal
= rtl8367c_getAsicRegBits(regAddr
, regDataMask
, portmask
);
462 if(retVal
!= RT_ERR_OK
)
466 regAddr
= RTL8367C_REG_PARA_LED_IO_EN3
;
467 regDataMask
= 0x3 << (group
*2);
468 retVal
= rtl8367c_getAsicRegBits(regAddr
, regDataMask
, ®Data
);
469 if(retVal
!= RT_ERR_OK
)
472 *portmask
= (regData
<< 8) | *portmask
;
478 @func ret_t | rtl8367c_setAsicLedOperationMode | Set LED operation mode
479 @parm rtk_uint32 | mode | LED mode. 1:scan mode 1, 2:parallel mode, 3:mdx mode (serial mode)
480 @rvalue RT_ERR_OK | Success.
481 @rvalue RT_ERR_SMI | SMI access error.
482 @rvalue RT_ERR_INPUT | Invalid input value.
484 The API can turn on/off led serial mode and set signal to active high/low.
486 ret_t
rtl8367c_setAsicLedOperationMode(rtk_uint32 mode
)
490 /* Invalid input parameter */
491 if( mode
>= LEDOP_END
)
497 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_LED_SYS_CONFIG
, RTL8367C_LED_SELECT_OFFSET
, 0))!= RT_ERR_OK
)
499 /*Disable serial CLK mode*/
500 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SCAN0_LED_IO_EN1
,RTL8367C_LED_SERI_CLK_EN_OFFSET
, 0))!= RT_ERR_OK
)
502 /*Disable serial DATA mode*/
503 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SCAN0_LED_IO_EN1
,RTL8367C_LED_SERI_DATA_EN_OFFSET
, 0))!= RT_ERR_OK
)
507 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_LED_SYS_CONFIG
, RTL8367C_LED_SELECT_OFFSET
, 1))!= RT_ERR_OK
)
509 /*Enable serial CLK mode*/
510 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SCAN0_LED_IO_EN1
,RTL8367C_LED_SERI_CLK_EN_OFFSET
, 1))!= RT_ERR_OK
)
512 /*Enable serial DATA mode*/
513 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_SCAN0_LED_IO_EN1
,RTL8367C_LED_SERI_DATA_EN_OFFSET
, 1))!= RT_ERR_OK
)
526 @func ret_t | rtl8367c_getAsicLedOperationMode | Get LED OP mode setup
527 @parm rtk_uint32*| mode | LED mode. 1:scan mode 1, 2:parallel mode, 3:mdx mode (serial mode)
528 @rvalue RT_ERR_OK | Success.
529 @rvalue RT_ERR_SMI | SMI access error.
530 @rvalue RT_ERR_INPUT | Invalid input value.
532 The API can get LED serial mode setup and get signal active high/low.
534 ret_t
rtl8367c_getAsicLedOperationMode(rtk_uint32
*mode
)
539 if((retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_LED_SYS_CONFIG
, RTL8367C_LED_SELECT_OFFSET
, ®Data
))!= RT_ERR_OK
)
543 *mode
= LEDOP_SERIAL
;
544 else if (regData
== 0)
545 *mode
= LEDOP_PARALLEL
;
547 return RT_ERR_FAILED
;
553 @func ret_t | rtl8367c_setAsicLedSerialModeConfig | Set LED serial mode
554 @parm rtk_uint32 | active | Active High or Low.
555 @rvalue RT_ERR_OK | Success.
556 @rvalue RT_ERR_SMI | SMI access error.
557 @rvalue RT_ERR_INPUT | Invalid input value.
559 The API can turn on/off led serial mode and set signal to active high/low.
561 ret_t
rtl8367c_setAsicLedSerialModeConfig(rtk_uint32 active
, rtk_uint32 serimode
)
565 /* Invalid input parameter */
566 if( active
>= LEDSERACT_MAX
)
568 if( serimode
>= LEDSER_MAX
)
571 /* Set Active High or Low */
572 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_LED_SYS_CONFIG
, RTL8367C_SERI_LED_ACT_LOW_OFFSET
, active
)) != RT_ERR_OK
)
575 /*set to 8G mode (not 16G mode)*/
576 if((retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_LED_MODE
, RTL8367C_DLINK_TIME_OFFSET
, serimode
))!= RT_ERR_OK
)
585 @func ret_t | rtl8367c_getAsicLedSerialModeConfig | Get LED serial mode setup
586 @parm rtk_uint32*| active | Active High or Low.
587 @rvalue RT_ERR_OK | Success.
588 @rvalue RT_ERR_SMI | SMI access error.
589 @rvalue RT_ERR_INPUT | Invalid input value.
591 The API can get LED serial mode setup and get signal active high/low.
593 ret_t
rtl8367c_getAsicLedSerialModeConfig(rtk_uint32
*active
, rtk_uint32
*serimode
)
597 if((retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_LED_SYS_CONFIG
, RTL8367C_SERI_LED_ACT_LOW_OFFSET
, active
))!= RT_ERR_OK
)
600 /*get to 8G mode (not 16G mode)*/
601 if((retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_LED_MODE
, RTL8367C_DLINK_TIME_OFFSET
, serimode
))!= RT_ERR_OK
)
609 @func ret_t | rtl8367c_setAsicLedOutputEnable | Set LED output enable
610 @parm rtk_uint32 | enabled | enable or disalbe.
611 @rvalue RT_ERR_OK | Success.
612 @rvalue RT_ERR_SMI | SMI access error.
613 @rvalue RT_ERR_INPUT | Invalid input value.
615 The API can turn on/off LED output Enable
617 ret_t
rtl8367c_setAsicLedOutputEnable(rtk_uint32 enabled
)
627 /* Enable/Disable H/W IGMP/MLD */
628 retVal
= rtl8367c_setAsicRegBit(RTL8367C_REG_LED_SYS_CONFIG
, RTL8367C_LED_IO_DISABLE_OFFSET
, regdata
);
635 @func ret_t | rtl8367c_getAsicLedOutputEnable | Get LED serial mode setup
636 @parm rtk_uint32*| active | Active High or Low.
637 @rvalue RT_ERR_OK | Success.
638 @rvalue RT_ERR_SMI | SMI access error.
639 @rvalue RT_ERR_INPUT | Invalid input value.
641 The API can get LED serial mode setup and get signal active high/low.
643 ret_t
rtl8367c_getAsicLedOutputEnable(rtk_uint32
*ptr_enabled
)
648 retVal
= rtl8367c_getAsicRegBit(RTL8367C_REG_LED_SYS_CONFIG
, RTL8367C_LED_IO_DISABLE_OFFSET
, ®data
);
649 if (retVal
!= RT_ERR_OK
)
661 * rtl8367c_setAsicLedSerialOutput
663 * Set serial LED output group and portmask.
665 * output - Serial LED output group
666 * pmask - Serial LED output portmask
670 * RT_ERR_OK - Success
671 * RT_ERR_SMI - SMI access error
672 * RT_ERR_OUT_OF_RANGE - input parameter out of range
676 ret_t
rtl8367c_setAsicLedSerialOutput(rtk_uint32 output
, rtk_uint32 pmask
)
680 retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_SERIAL_LED_CTRL
, RTL8367C_SERIAL_LED_GROUP_NUM_MASK
, output
);
681 if (retVal
!= RT_ERR_OK
)
684 retVal
= rtl8367c_setAsicRegBits(RTL8367C_REG_SERIAL_LED_CTRL
, RTL8367C_SERIAL_LED_PORT_EN_MASK
, pmask
);
685 if (retVal
!= RT_ERR_OK
)
692 * rtl8367c_getAsicLedSerialOutput
694 * Get serial LED output group and portmask.
698 * pOutput - Serial LED output group
699 * pPmask - Serial LED output portmask
701 * RT_ERR_OK - Success
702 * RT_ERR_SMI - SMI access error
703 * RT_ERR_OUT_OF_RANGE - input parameter out of range
707 ret_t
rtl8367c_getAsicLedSerialOutput(rtk_uint32
*pOutput
, rtk_uint32
*pPmask
)
712 return RT_ERR_NULL_POINTER
;
715 return RT_ERR_NULL_POINTER
;
717 retVal
= rtl8367c_getAsicRegBits(RTL8367C_REG_SERIAL_LED_CTRL
, RTL8367C_SERIAL_LED_GROUP_NUM_MASK
, pOutput
);
718 if (retVal
!= RT_ERR_OK
)
721 retVal
= rtl8367c_getAsicRegBits(RTL8367C_REG_SERIAL_LED_CTRL
, RTL8367C_SERIAL_LED_PORT_EN_MASK
, pPmask
);
722 if (retVal
!= RT_ERR_OK
)