]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - wl12xx/compat-wireless.git/blob - scripts/driver-select
compat-2.6: adding driver-select script support for rtl818x
[wl12xx/compat-wireless.git] / scripts / driver-select
1 #!/bin/bash
2 # Copyright 2009        Luis R. Rodriguez <mcgrof@gmail.com>
3 #
4 # This this to select your compat-wireless driver and
5 # reduce compilation time.
7 DRIVERS_MAKEFILE="drivers/net/wireless/Makefile"
8 ATH_MAKEFILE="drivers/net/wireless/ath/Makefile"
9 NET_WIRELESS_MAKEFILE="net/wireless/Makefile"
10 EEPROM_MAKEFILE="drivers/misc/eeprom/Makefile"
11 DRIVERS_NET_USB_MAKEFILE="drivers/net/usb/Makefile"
12 SSB_MAKEFILE="drivers/ssb/Makefile"
14 # used to backup files from foo to foo.${BACKUP_EXT}
15 # If you change this also modify restore_compat() and
16 # restore_file() below I couldn't find a way to use
17 # the $BACKUP_EXT there.
18 BACKUP_EXT="bk"
20 # Pretty colors
21 GREEN="\033[01;32m"
22 YELLOW="\033[01;33m"
23 NORMAL="\033[00m"
24 BLUE="\033[34m"
25 RED="\033[31m"
26 PURPLE="\033[35m"
27 CYAN="\033[36m"
28 UNDERLINE="\033[02m"
30 SUPPORTED_DRIVERS="ath5k ath9k ar9170 zd1211rw"
32 function usage {
33         echo -e "${GREEN}Usage${NORMAL}: ${CYAN}$0${NORMAL} [ ${PURPLE}<driver-name>${NORMAL} | ${PURPLE}<driver-group-name>${NORMAL} | ${GREEN}restore${NORMAL} ]"
35         # These should match the switch below.
36         echo -e "Supported drivers:"
37         for i in $SUPPORTED_DRIVERS; do
38                 echo -e "\t${PURPLE}${i}${NORMAL}"
39         done
41         # These should match the switch below.
42         echo -e "Supported group drivers:"
43         echo -e "\t${CYAN}atheros${NORMAL} < ${PURPLE} ath5k ath9k ar9170 zd1211rw ${NORMAL}>"
44         echo -e "\t${CYAN}ath${NORMAL} < ${PURPLE} ath5k ath9k ar9170 ${NORMAL}>"
45         echo -e "\t${CYAN}intel${NORMAL} < ${PURPLE} iwl3945 iwlagn ipw2100 ipw2200 ${NORMAL}>"
46         echo -e "\t${CYAN}iwlwifi${NORMAL} < ${PURPLE} iwl3945 iwlagn ${NORMAL}>"
47         echo -e "\t${CYAN}rtl818x${NORMAL} < ${PURPLE} rtl8180 rtl8187 ${NORMAL}>"
48         echo -e "\t${CYAN}wl12xx${NORMAL} < ${PURPLE} wl1251 (SPI and SDIO) wl1271 ${NORMAL}>"
50         echo -e "Restoring compat-wireless:"
51         echo -e "\t${GREEN}restore${NORMAL}: you can use this option to restore compat-wireless to the original state"
52 }
54 function backup_file {
55         if [ -f $1.${BACKUP_EXT} ]; then
56                 echo -e "Backup exists: ${CYAN}${1}.${BACKUP_EXT}${NORMAL}"
57                 return
58         fi
59         echo -e "Backing up makefile: ${CYAN}${1}.${BACKUP_EXT}${NORMAL}"
60         cp $1 $1.bk
61 }
63 function disable_makefile
64 {
65         backup_file $1
66         echo > $1
67 }
69 function select_driver 
70 {
71         backup_file $DRIVERS_MAKEFILE
72         perl -i -ne 'print if /'$1'/ ' $DRIVERS_MAKEFILE
73 }
75 function select_drivers
76 {
77         backup_file $DRIVERS_MAKEFILE
78         CONFIGS=""
79         COUNT=0
80         for i in $@; do
81                 if [[ "$CONFIGS" = "" ]]; then
82                         CONFIGS="$i"
83                 else
84                         CONFIGS="${CONFIGS}|$i"
85                 fi
86         done
87         egrep "$CONFIGS" $DRIVERS_MAKEFILE > ${DRIVERS_MAKEFILE}.tmp
88         mv ${DRIVERS_MAKEFILE}.tmp ${DRIVERS_MAKEFILE}
89 }
91 function disable_lib80211
92 {
93         backup_file $NET_WIRELESS_MAKEFILE
94         perl -i -ne 'print if ! /LIB80211/ ' $NET_WIRELESS_MAKEFILE
95 }
97 function disable_b44 {
98         perl -i -ne 'print if ! /CONFIG_B44/ ' Makefile
99 }
101 function disable_ssb
103         disable_b44
104         disable_makefile ${SSB_MAKEFILE}
105         perl -i -ne 'print if ! /drivers\/ssb\/ \\/ ' Makefile
108 function disable_eeprom
110         disable_makefile ${EEPROM_MAKEFILE}
111         perl -i -ne 'print if ! /drivers\/misc\/eeprom\/ \\/' Makefile
114 function disable_usbnet
116         disable_makefile ${DRIVERS_NET_USB_MAKEFILE}
117         perl -i -ne 'print if ! /drivers\/net\/usb\/ \\/' Makefile
120 function disable_var {
121         disable_ssb
122         disable_usbnet
123         disable_eeprom
124
126 function disable_var_01 {
127         disable_lib80211
128         disable_var
131 function disable_var_02 {
132         #var_01 with eeprom not disabled
133         disable_lib80211
134         disable_ssb
135         disable_usbnet
138 function select_ath_driver 
140         backup_file $ATH_MAKEFILE
141         perl -i -ne 'print if /'$1'/ || /CONFIG_ATH_COMMON/ || /ath-objs/ ' $ATH_MAKEFILE
142         disable_var_01
145 # iwlwifi stuff needs more work
146 function select_iwl_driver 
148         perl -i -ne 'print if /'$1'/ || /CONFIG_BLEH/ ' drivers/net/wireless/iwlwifi/Makefile
149         disable_var_01
152 function restore_file {
153         #ORIG=$(shell ${1%%.${BACKUP_EXT}})
154         ORIG=${1%%.bk}
155         cp $1 $ORIG
156         rm -f $1
157         echo -e "Restored makefile: ${CYAN}${ORIG}${NORMAL} (and removed backup)"
160 function restore_compat {
161         #FILES=$(find ./ -type f -name *.$BACKUP_EXT)
162         FILES=$(find ./ -type f -name *.bk)
163         for i in $FILES; do
164                 restore_file $i
165         done
168 if [ $# -ne 1 ]; then
169         usage
170         exit
171 fi
173 if [ ! -f compat-release ]; then
174         echo "Must run $0 from the compat-wireless top level directory"
175         exit
176 fi
178 if [[ ! -f built-in.o ]]; then
179         if [[ "$1" != "restore" ]]; then
180                 echo -e "${YELLOW}Processing new driver-select request...${NORMAL}"
181         fi
182 fi
184 # Always backup the top level Makefile, unless restoring
185 if [[ "$1" != "restore" ]]; then
186         backup_file Makefile
187 fi
189 # If a user selects a new driver make sure we clean up for them
190 # first and also restore the backup makefiles then. Otherwise
191 # we'll be trying to leave drivers on Makefiles which are not
192 # already there from a previous run.
193 if [ -f built-in.o ]; then
194         echo -e "${YELLOW}Old build found, going to clean this up first...${NORMAL}"
195         make clean
196         echo -e "${YELLOW}Restoring Makefiles...${NORMAL}"
197         ./$0 restore
198 fi
200 case $1 in
201         restore)
202                 restore_compat
203                 ;;
204         atheros)
205                 select_drivers          CONFIG_ATH_COMMON \
206                                         CONFIG_ZD1211RW
207                 disable_var_01
208                 ;;
209         ath)
210                 select_drivers          CONFIG_ATH_COMMON
211                 disable_var_01
212                 ;;
213         intel)
214                 select_drivers          CONFIG_IWLWIFI \
215                                         CONFIG_IPW
216                 disable_var
217                 ;;
218         iwlwifi)
219                 select_driver           CONFIG_IWLWIFI
220                 disable_var_01
221                 ;;
222         wl12xx)
223                 select_drivers          CONFIG_WL12XX
224                 disable_var_01
225                 ;;
226         ath5k)
227                 select_driver           CONFIG_ATH_COMMON
228                 select_ath_driver       CONFIG_ATH5K
229                 ;;
230         ath9k)
231                 select_driver           CONFIG_ATH_COMMON
232                 select_ath_driver       CONFIG_ATH9K
233                 ;;
234         ar9170)
235                 select_driver           CONFIG_ATH_COMMON
236                 select_ath_driver       CONFIG_AR9170_USB
237                 ;;
238         rtl818x)
239                 select_drivers          CONFIG_RTL8180 CONFIG_RTL8187
240                 disable_var_02
241                 ;;
242         zd1211rw)
243                 select_driver           CONFIG_ZD1211RW
244                 disable_var_01
245                 ;;
246         *)
247                 echo "Unsupported driver"
248                 exit
249                 ;;
250 esac