xref: /freebsd/sys/dev/rtwn/rtl8192e/r92e_led.c (revision 685dc743dc3b5645e34836464128e1c0558b404b)
1*60b9567dSKevin Lo /*-
2*60b9567dSKevin Lo  * Copyright (c) 2017 Kevin Lo <kevlo@FreeBSD.org>
3*60b9567dSKevin Lo  * All rights reserved.
4*60b9567dSKevin Lo  *
5*60b9567dSKevin Lo  * Redistribution and use in source and binary forms, with or without
6*60b9567dSKevin Lo  * modification, are permitted provided that the following conditions
7*60b9567dSKevin Lo  * are met:
8*60b9567dSKevin Lo  * 1. Redistributions of source code must retain the above copyright
9*60b9567dSKevin Lo  *    notice, this list of conditions and the following disclaimer.
10*60b9567dSKevin Lo  * 2. Redistributions in binary form must reproduce the above copyright
11*60b9567dSKevin Lo  *    notice, this list of conditions and the following disclaimer in the
12*60b9567dSKevin Lo  *    documentation and/or other materials provided with the distribution.
13*60b9567dSKevin Lo  *
14*60b9567dSKevin Lo  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15*60b9567dSKevin Lo  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*60b9567dSKevin Lo  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*60b9567dSKevin Lo  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18*60b9567dSKevin Lo  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*60b9567dSKevin Lo  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20*60b9567dSKevin Lo  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21*60b9567dSKevin Lo  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22*60b9567dSKevin Lo  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23*60b9567dSKevin Lo  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24*60b9567dSKevin Lo  * SUCH DAMAGE.
25*60b9567dSKevin Lo  */
26*60b9567dSKevin Lo 
27*60b9567dSKevin Lo #include <sys/cdefs.h>
28*60b9567dSKevin Lo #include "opt_wlan.h"
29*60b9567dSKevin Lo 
30*60b9567dSKevin Lo #include <sys/param.h>
31*60b9567dSKevin Lo #include <sys/lock.h>
32*60b9567dSKevin Lo #include <sys/mutex.h>
33*60b9567dSKevin Lo #include <sys/mbuf.h>
34*60b9567dSKevin Lo #include <sys/kernel.h>
35*60b9567dSKevin Lo #include <sys/socket.h>
36*60b9567dSKevin Lo #include <sys/systm.h>
37*60b9567dSKevin Lo #include <sys/malloc.h>
38*60b9567dSKevin Lo #include <sys/queue.h>
39*60b9567dSKevin Lo #include <sys/taskqueue.h>
40*60b9567dSKevin Lo #include <sys/bus.h>
41*60b9567dSKevin Lo #include <sys/endian.h>
42*60b9567dSKevin Lo #include <sys/linker.h>
43*60b9567dSKevin Lo 
44*60b9567dSKevin Lo #include <net/if.h>
45*60b9567dSKevin Lo #include <net/ethernet.h>
46*60b9567dSKevin Lo #include <net/if_media.h>
47*60b9567dSKevin Lo 
48*60b9567dSKevin Lo #include <net80211/ieee80211_var.h>
49*60b9567dSKevin Lo #include <net80211/ieee80211_radiotap.h>
50*60b9567dSKevin Lo 
51*60b9567dSKevin Lo #include <dev/rtwn/if_rtwnvar.h>
52*60b9567dSKevin Lo 
53*60b9567dSKevin Lo #include <dev/rtwn/rtl8192e/r92e.h>
54*60b9567dSKevin Lo #include <dev/rtwn/rtl8192e/r92e_reg.h>
55*60b9567dSKevin Lo 
56*60b9567dSKevin Lo void
r92e_set_led(struct rtwn_softc * sc,int led,int on)57*60b9567dSKevin Lo r92e_set_led(struct rtwn_softc *sc, int led, int on)
58*60b9567dSKevin Lo {
59*60b9567dSKevin Lo 
60*60b9567dSKevin Lo 	if (led == RTWN_LED_LINK) {
61*60b9567dSKevin Lo 		if (!on)
62*60b9567dSKevin Lo 			rtwn_setbits_1(sc, R92C_LEDCFG1, 0, R92C_LEDCFG1_DIS);
63*60b9567dSKevin Lo 		else
64*60b9567dSKevin Lo 			rtwn_setbits_1(sc, R92C_LEDCFG1, R92C_LEDCFG1_DIS, 0);
65*60b9567dSKevin Lo 		sc->ledlink = on;	/* Save LED state. */
66*60b9567dSKevin Lo 	}
67*60b9567dSKevin Lo }
68