Blame view

firmware/Makefile 11.5 KB
4d2acfbfd   David Woodhouse   firmware: Add CON...
1
2
3
4
5
6
7
8
9
10
  #
  # kbuild file for firmware/
  #
  
  # Create $(fwabs) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a
  # leading /, it's relative to $(srctree).
  fwdir := $(subst ",,$(CONFIG_EXTRA_FIRMWARE_DIR))
  fwabs := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir))
  
  fw-external-y := $(subst ",,$(CONFIG_EXTRA_FIRMWARE))
88ecf814c   David Woodhouse   firmware: Add fir...
11
12
13
14
15
16
  # There are three cases to care about:
  # 1. Building kernel with CONFIG_FIRMWARE_IN_KERNEL=y -- $(fw-shipped-y) should
  #    include the firmware files to include, according to .config
  # 2. 'make modules_install', which will install firmware for modules, and 
  #    _also_ for the in-kernel drivers when CONFIG_FIRMWARE_IN_KERNEL=n
  # 3. 'make firmware_install', which installs all firmware, unconditionally.
d172e7f5c   David Woodhouse   firmware: Add CON...
17

88ecf814c   David Woodhouse   firmware: Add fir...
18
19
20
  # For the former two cases we want $(fw-shipped-y) and $(fw-shipped-m) to be
  # accurate. In the latter case it doesn't matter -- it'll use $(fw-shipped-all).
  # But be aware that the config file might not be included at all.
949b42544   Jaswinder Singh   firmware: convert...
21
22
23
24
25
26
27
  ifdef CONFIG_ACENIC_OMIT_TIGON_I
  acenic-objs := acenic/tg2.bin
  fw-shipped- += acenic/tg1.bin
  else
  acenic-objs := acenic/tg1.bin acenic/tg2.bin
  endif
  fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs)
cfc3a44c3   Jaswinder Singh Rajput   starfire: use req...
28
29
  fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \
  					 adaptec/starfire_tx.bin
7f127d5ed   Jaswinder Singh   dsp56k: use reque...
30
  fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin
27d202fff   David Woodhouse   firmware: convert...
31
  fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw
96b8e1a0e   Dmitry Kravkov   bnx2x: Update fir...
32
33
34
  fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.9.0.fw \
  			      bnx2x/bnx2x-e1h-6.2.9.0.fw \
  			      bnx2x/bnx2x-e2-6.2.9.0.fw
dc187cb38   Michael Chan   bnx2: Update firm...
35
  fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \
22fa159d3   Michael Chan   bnx2: Update firm...
36
37
  			     bnx2/bnx2-rv2p-09-6.0.17.fw \
  			     bnx2/bnx2-rv2p-09ax-6.0.17.fw \
0268102d5   Michael Chan   bnx2: Update firm...
38
  			     bnx2/bnx2-mips-06-6.2.1.fw \
22fa159d3   Michael Chan   bnx2: Update firm...
39
  			     bnx2/bnx2-rv2p-06-6.0.15.fw
fcaa40669   Jaswinder Singh   cassini: use requ...
40
  fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin
ad58633c8   Divy Le Ray   cxgb3: integrate ...
41
42
  fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
  				   cxgb3/t3c_psram-1.1.0.bin \
2e8c07c35   Divy Le Ray   cxgb3: use reques...
43
44
45
  				   cxgb3/ael2005_opt_edc.bin \
  				   cxgb3/ael2005_twx_edc.bin \
  				   cxgb3/ael2020_twx_edc.bin
ece2be799   Ben Hutchings   drm/mga: Use requ...
46
  fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw
52f97df5d   Ben Hutchings   drm/r128: Use req...
47
  fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin
70967ab9c   Ben Hutchings   radeon: Use reque...
48
49
50
51
52
53
54
55
56
57
58
59
60
61
  fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \
  				   radeon/R300_cp.bin radeon/R420_cp.bin \
  				   radeon/RS690_cp.bin radeon/RS600_cp.bin \
  				   radeon/R520_cp.bin \
  				   radeon/R600_pfp.bin radeon/R600_me.bin \
  				   radeon/RV610_pfp.bin radeon/RV610_me.bin \
  				   radeon/RV630_pfp.bin radeon/RV630_me.bin \
  				   radeon/RV620_pfp.bin radeon/RV620_me.bin \
  				   radeon/RV635_pfp.bin radeon/RV635_me.bin \
  				   radeon/RV670_pfp.bin radeon/RV670_me.bin \
  				   radeon/RS780_pfp.bin radeon/RS780_me.bin \
  				   radeon/RV770_pfp.bin radeon/RV770_me.bin \
  				   radeon/RV730_pfp.bin radeon/RV730_me.bin \
  				   radeon/RV710_pfp.bin radeon/RV710_me.bin
9137f05f7   Jaswinder Singh   firmware: convert...
62
  fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
0a2a736af   David Woodhouse   ttusb-budget: use...
63
  fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
9ac32e1bc   Jaswinder Singh Rajput   firmware: convert...
64
65
  fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
  			     e100/d102e_ucode.bin
cd36e9efa   Jaswinder Singh Rajput   myri_sbus: use re...
66
  fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin
bf6fda63c   Ken Kawasaki   pcnet_cs: add cis...
67
68
  fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis cis/PCMLM28.cis \
  				     cis/DP83903.cis cis/NE2K.cis \
abe880690   Ken Kawasaki   pcnet_cs: add cis...
69
70
  				     cis/tamarack.cis cis/PE-200.cis \
  				     cis/PE520.cis
f0a3a1538   Ken Kawasaki   3c589_cs: add cis...
71
72
  fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis
  fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis
bf6fda63c   Ken Kawasaki   pcnet_cs: add cis...
73
  fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \
63ca2d74e   Ken Kawasaki   pcnet_cs: add cis...
74
75
76
  				       cis/COMpad2.cis cis/COMpad4.cis \
  				       cis/SW_555_SER.cis cis/SW_7xx_SER.cis \
  				       cis/SW_8xx_SER.cis
75bf758f9   Jaswinder Singh Rajput   smc91c92_cs: use ...
77
  fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin
989bb5f58   Jaswinder Singh Rajput   [SCSI] advansys: ...
78
79
  fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \
  				      advansys/3550.bin advansys/38C0800.bin
1bfa11db7   Jaswinder Singh Rajput   [SCSI] qla1280: u...
80
81
  fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += qlogic/1040.bin qlogic/1280.bin \
  					 qlogic/12160.bin
f894e74dc   Jaswinder Singh Rajput   [SCSI] qlogicpti:...
82
  fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += qlogic/isp1000.bin
ff802e31b   Mike Marciniszyn   firmware,IB/qib: ...
83
  fw-shipped-$(CONFIG_INFINIBAND_QIB) += qlogic/sd7220.fw
76770664d   David Woodhouse   firmware: convert...
84
  fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp
a292f404f   David Woodhouse   firmware: convert...
85
86
  fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \
  				     ess/maestro3_assp_minisrc.fw
d71792ac3   Jaswinder Singh   firmware: convert...
87
88
89
90
  fw-shipped-$(CONFIG_SND_SB16_CSP) += sb16/mulaw_main.csp sb16/alaw_main.csp \
  				     sb16/ima_adpcm_init.csp \
  				     sb16/ima_adpcm_playback.csp \
  				     sb16/ima_adpcm_capture.csp
18ee6dfae   David Woodhouse   firmware: convert...
91
92
  fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \
  				   yamaha/ds1e_ctrl.fw
7c7cae17e   Takashi Iwai   ALSA: wavefront -...
93
  fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin
06e1f9ffa   Ben Hutchings   tehuti: Use reque...
94
  fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin
077f849de   Jaswinder Singh Rajput   firmware: convert...
95
96
  fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \
  			       tigon/tg3_tso5.bin
b775a750c   Ben Hutchings   typhoon: Use requ...
97
  fw-shipped-$(CONFIG_TYPHOON) += 3com/typhoon.bin
ae93a55bf   David Woodhouse   emi26: use reques...
98
99
  fw-shipped-$(CONFIG_USB_EMI26) += emi26/loader.fw emi26/firmware.fw \
  				  emi26/bitstream.fw
b8e24bfab   David Woodhouse   emi62: use reques...
100
101
  fw-shipped-$(CONFIG_USB_EMI62) += emi62/loader.fw emi62/bitstream.fw \
  				  emi62/spdif.fw emi62/midi.fw
79682499d   David Woodhouse   kaweth: use reque...
102
103
104
  fw-shipped-$(CONFIG_USB_KAWETH) += kaweth/new_code.bin kaweth/trigger_code.bin \
  				   kaweth/new_code_fix.bin \
  				   kaweth/trigger_code_fix.bin
2971c579f   David Woodhouse   keyspan: use requ...
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  ifdef CONFIG_FIRMWARE_IN_KERNEL
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_MPR) += keyspan/mpr.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA18X) += keyspan/usa18x.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19) += keyspan/usa19.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QI) += keyspan/usa19qi.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QW) += keyspan/usa19qw.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19W) += keyspan/usa19w.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28) += keyspan/usa28.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XA) += keyspan/usa28xa.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XB) += keyspan/usa28xb.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28X) += keyspan/usa28x.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49W) += keyspan/usa49w.fw
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49WLC) += keyspan/usa49wlc.fw
  else
d25dc7fd4   David Woodhouse   Fix 'make clean' ...
119
  fw-shipped- += keyspan/mpr.fw keyspan/usa18x.fw keyspan/usa19.fw	\
2971c579f   David Woodhouse   keyspan: use requ...
120
121
122
123
  	keyspan/usa19qi.fw keyspan/usa19qw.fw keyspan/usa19w.fw		\
  	keyspan/usa28.fw keyspan/usa28xa.fw keyspan/usa28xb.fw		\
  	keyspan/usa28x.fw keyspan/usa49w.fw keyspan/usa49wlc.fw
  endif
7df523166   Chris Adams   ti_usb_3410_5052:...
124
125
  fw-shipped-$(CONFIG_USB_SERIAL_TI) += ti_3410.fw ti_5052.fw \
  				      mts_cdma.fw mts_gsm.fw mts_edge.fw
5b9ea9322   Jaswinder Singh   edgeport: use req...
126
127
  fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += edgeport/boot.fw edgeport/boot2.fw \
  					    edgeport/down.fw edgeport/down2.fw
d12b219a2   Jaswinder Singh   edgeport-ti: use ...
128
  fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += edgeport/down3.bin
ec6752f5a   David Woodhouse   whiteheat: use re...
129
130
  fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \
  					   # whiteheat_loader_debug.fw
3edbf98b8   David Woodhouse   keyspan_pda: use ...
131
132
  fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw
  fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw
fb54be875   Jaswinder Singh   vicam: use reques...
133
  fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw
04a33e406   David Woodhouse   cpia2: use reques...
134
  fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin
a7a5eb9d4   Jaswinder Singh Rajput   yam: use request_...
135
  fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin
88ecf814c   David Woodhouse   firmware: Add fir...
136
137
138
139
  
  fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)
  
  # Directories which we _might_ need to create, so we have a rule for them.
3c955b407   Jan Beulich   fixes for using m...
140
  firmware-dirs := $(sort $(addprefix $(objtree)/$(obj)/,$(dir $(fw-external-y) $(fw-shipped-all))))
4d2acfbfd   David Woodhouse   firmware: Add CON...
141
142
143
144
145
146
  
  quiet_cmd_mkdir = MKDIR   $(patsubst $(objtree)/%,%,$@)
        cmd_mkdir = mkdir -p $@
  
  quiet_cmd_ihex  = IHEX    $@
        cmd_ihex  = $(OBJCOPY) -Iihex -Obinary $< $@
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
147
  quiet_cmd_ihex2fw  = IHEX2FW $@
556b0f58b   David Woodhouse   Revert "fix modul...
148
        cmd_ihex2fw  = $(objtree)/$(obj)/ihex2fw $< $@
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
149

59890f74e   David Woodhouse   ihex: Add support...
150
  quiet_cmd_h16tofw  = H16TOFW $@
556b0f58b   David Woodhouse   Revert "fix modul...
151
        cmd_h16tofw  = $(objtree)/$(obj)/ihex2fw -w $< $@
59890f74e   David Woodhouse   ihex: Add support...
152

4d2acfbfd   David Woodhouse   firmware: Add CON...
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
  quiet_cmd_fwbin = MK_FW   $@
        cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)";		     \
  		  FWSTR="$(subst /,_,$(subst .,_,$(subst -,_,$(patsubst	     \
  				firmware/%.gen.S,%,$@))))";		     \
  		  ASM_WORD=$(if $(CONFIG_64BIT),.quad,.long);		     \
  		  ASM_ALIGN=$(if $(CONFIG_64BIT),3,2);			     \
  		  PROGBITS=$(if $(CONFIG_ARM),%,@)progbits;		     \
  		  echo "/* Generated by firmware/Makefile */"		> $@;\
  		  echo "    .section .rodata"				>>$@;\
  		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
  		  echo "_fw_$${FWSTR}_bin:"				>>$@;\
  		  echo "    .incbin \"$(2)\""				>>$@;\
  		  echo "_fw_end:"					>>$@;\
  		  echo "   .section .rodata.str,\"aMS\",$${PROGBITS},1"	>>$@;\
  		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
  		  echo "_fw_$${FWSTR}_name:"				>>$@;\
  		  echo "    .string \"$$FWNAME\""			>>$@;\
  		  echo "    .section .builtin_fw,\"a\",$${PROGBITS}"	>>$@;\
  		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
  		  echo "    $${ASM_WORD} _fw_$${FWSTR}_name"		>>$@;\
  		  echo "    $${ASM_WORD} _fw_$${FWSTR}_bin"		>>$@;\
  		  echo "    $${ASM_WORD} _fw_end - _fw_$${FWSTR}_bin"	>>$@;
  
  # One of these files will change, or come into existence, whenever
  # the configuration changes between 32-bit and 64-bit. The .S files
  # need to change when that happens.
  wordsize_deps := $(wildcard include/config/64bit.h include/config/32bit.h \
  		include/config/ppc32.h include/config/ppc64.h \
  		include/config/superh32.h include/config/superh64.h \
  		include/config/x86_32.h include/config/x86_64.h)
  
  # Workaround for make < 3.81, where .SECONDEXPANSION doesn't work.
  # It'll end up depending on these targets, so make them a PHONY rule which
  # depends on _all_ the directories in $(firmware-dirs), and it'll work out OK.
  PHONY += $(objtree)/$$(%) $(objtree)/$(obj)/$$(%)
  $(objtree)/$$(%) $(objtree)/$(obj)/$$(%): $(firmware-dirs)
  	@true
  
  # For the $$(dir %) trick, where we need % to be expanded first.
  .SECONDEXPANSION:
  
  $(patsubst %,$(obj)/%.gen.S, $(fw-shipped-y)): %: $(wordsize_deps) \
  		| $(objtree)/$$(dir %)
  	$(call cmd,fwbin,$(patsubst %.gen.S,%,$@))
  $(patsubst %,$(obj)/%.gen.S, $(fw-external-y)): %: $(wordsize_deps) \
50515af20   David Woodhouse   firmware: Correct...
198
  		include/config/extra/firmware/dir.h | $(objtree)/$$(dir %)
4d2acfbfd   David Woodhouse   firmware: Add CON...
199
200
201
202
203
  	$(call cmd,fwbin,$(fwabs)/$(patsubst $(obj)/%.gen.S,%,$@))
  
  # The .o files depend on the binaries directly; the .S files don't.
  $(patsubst %,$(obj)/%.gen.o, $(fw-shipped-y)): %.gen.o: %
  $(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/%
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
204
205
  # .ihex is used just as a simple way to hold binary files in a source tree
  # where binaries are frowned upon. They are directly converted with objcopy.
4d2acfbfd   David Woodhouse   firmware: Add CON...
206
207
  $(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %)
  	$(call cmd,ihex)
4528e4290   David Woodhouse   Partially revert ...
208
209
210
211
212
213
214
215
216
217
218
  # Don't depend on ihex2fw if we're installing and it already exists.
  # Putting it after | in the dependencies doesn't seem sufficient when
  # we're installing after a cross-compile, because ihex2fw has dependencies
  # on stuff like /usr/lib/gcc/ppc64-redhat-linux/4.3.0/include/stddef.h and 
  # thus wants to be rebuilt. Which it can't be, if the prebuilt kernel tree
  # is exported read-only for someone to run 'make install'.
  ifeq ($(INSTALL):$(wildcard $(obj)/ihex2fw),install:$(obj)/ihex2fw)
  ihex2fw_dep :=
  else
  ihex2fw_dep := $(obj)/ihex2fw
  endif
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
219
220
221
222
  # .HEX is also Intel HEX, but where the offset and length in each record
  # is actually meaningful, because the firmware has to be loaded in a certain
  # order rather than as a single binary blob. Thus, we convert them into our
  # more compact binary representation of ihex records (<linux/ihex.h>)
4528e4290   David Woodhouse   Partially revert ...
223
  $(obj)/%.fw: $(obj)/%.HEX $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
224
  	$(call cmd,ihex2fw)
59890f74e   David Woodhouse   ihex: Add support...
225
  # .H16 is our own modified form of Intel HEX, with 16-bit length for records.
4528e4290   David Woodhouse   Partially revert ...
226
  $(obj)/%.fw: $(obj)/%.H16 $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
59890f74e   David Woodhouse   ihex: Add support...
227
  	$(call cmd,h16tofw)
4d2acfbfd   David Woodhouse   firmware: Add CON...
228
229
  $(firmware-dirs):
  	$(call cmd,mkdir)
88ecf814c   David Woodhouse   firmware: Add fir...
230
231
  obj-y				 += $(patsubst %,%.gen.o, $(fw-external-y))
  obj-$(CONFIG_FIRMWARE_IN_KERNEL) += $(patsubst %,%.gen.o, $(fw-shipped-y))
4d2acfbfd   David Woodhouse   firmware: Add CON...
232
233
234
235
236
237
238
239
240
  
  # Remove .S files and binaries created from ihex
  # (during 'make clean' .config isn't included so they're all in $(fw-shipped-))
  targets := $(fw-shipped-) $(patsubst $(obj)/%,%, \
  				$(shell find $(obj) -name \*.gen.S 2>/dev/null))
  
  # Without this, built-in.o won't be created when it's empty, and the
  # final vmlinux link will fail.
  obj-n := dummy
556b0f58b   David Woodhouse   Revert "fix modul...
241
242
  
  hostprogs-y := ihex2fw