Blame view

firmware/Makefile 11 KB
4d2acfbfd   David Woodhouse   firmware: Add CON...
1
2
3
4
5
6
  #
  # kbuild file for firmware/
  #
  
  # Create $(fwabs) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a
  # leading /, it's relative to $(srctree).
fb916b42f   Michal Marek   firmware: Use $(q...
7
  fwdir := $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE_DIR))
4d2acfbfd   David Woodhouse   firmware: Add CON...
8
  fwabs := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir))
fb916b42f   Michal Marek   firmware: Use $(q...
9
  fw-external-y := $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE))
4d2acfbfd   David Woodhouse   firmware: Add CON...
10

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
f2cf6ee4f   Robin Gong   MLK-11344-2: firm...
62
  fw-shipped-$(CONFIG_IMX_SDMA) += imx/sdma/sdma-imx6q.bin imx/sdma/sdma-imx7d.bin
9137f05f7   Jaswinder Singh   firmware: convert...
63
  fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
0a2a736af   David Woodhouse   ttusb-budget: use...
64
  fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
9ac32e1bc   Jaswinder Singh Rajput   firmware: convert...
65
66
  fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
  			     e100/d102e_ucode.bin
cd36e9efa   Jaswinder Singh Rajput   myri_sbus: use re...
67
  fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin
bf6fda63c   Ken Kawasaki   pcnet_cs: add cis...
68
69
  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...
70
71
  				     cis/tamarack.cis cis/PE-200.cis \
  				     cis/PE520.cis
f0a3a1538   Ken Kawasaki   3c589_cs: add cis...
72
73
  fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis
  fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis
bf6fda63c   Ken Kawasaki   pcnet_cs: add cis...
74
  fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \
63ca2d74e   Ken Kawasaki   pcnet_cs: add cis...
75
76
77
  				       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 ...
78
  fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin
989bb5f58   Jaswinder Singh Rajput   [SCSI] advansys: ...
79
80
  fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \
  				      advansys/3550.bin advansys/38C0800.bin
1bfa11db7   Jaswinder Singh Rajput   [SCSI] qla1280: u...
81
82
  fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += qlogic/1040.bin qlogic/1280.bin \
  					 qlogic/12160.bin
f894e74dc   Jaswinder Singh Rajput   [SCSI] qlogicpti:...
83
  fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += qlogic/isp1000.bin
ff802e31b   Mike Marciniszyn   firmware,IB/qib: ...
84
  fw-shipped-$(CONFIG_INFINIBAND_QIB) += qlogic/sd7220.fw
76770664d   David Woodhouse   firmware: convert...
85
  fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp
a292f404f   David Woodhouse   firmware: convert...
86
87
  fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \
  				     ess/maestro3_assp_minisrc.fw
d71792ac3   Jaswinder Singh   firmware: convert...
88
89
90
91
  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...
92
93
  fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \
  				   yamaha/ds1e_ctrl.fw
7c7cae17e   Takashi Iwai   ALSA: wavefront -...
94
  fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin
06e1f9ffa   Ben Hutchings   tehuti: Use reque...
95
  fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin
077f849de   Jaswinder Singh Rajput   firmware: convert...
96
97
  fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \
  			       tigon/tg3_tso5.bin
b775a750c   Ben Hutchings   typhoon: Use requ...
98
  fw-shipped-$(CONFIG_TYPHOON) += 3com/typhoon.bin
ae93a55bf   David Woodhouse   emi26: use reques...
99
100
  fw-shipped-$(CONFIG_USB_EMI26) += emi26/loader.fw emi26/firmware.fw \
  				  emi26/bitstream.fw
b8e24bfab   David Woodhouse   emi62: use reques...
101
102
  fw-shipped-$(CONFIG_USB_EMI62) += emi62/loader.fw emi62/bitstream.fw \
  				  emi62/spdif.fw emi62/midi.fw
79682499d   David Woodhouse   kaweth: use reque...
103
104
105
  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...
106
107
108
109
110
111
112
113
114
115
116
117
118
119
  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' ...
120
  fw-shipped- += keyspan/mpr.fw keyspan/usa18x.fw keyspan/usa19.fw	\
2971c579f   David Woodhouse   keyspan: use requ...
121
122
123
124
  	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:...
125
126
  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...
127
128
  fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += edgeport/boot.fw edgeport/boot2.fw \
  					    edgeport/down.fw edgeport/down2.fw
d12b219a2   Jaswinder Singh   edgeport-ti: use ...
129
  fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += edgeport/down3.bin
ec6752f5a   David Woodhouse   whiteheat: use re...
130
131
  fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \
  					   # whiteheat_loader_debug.fw
3edbf98b8   David Woodhouse   keyspan_pda: use ...
132
133
  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...
134
  fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw
04a33e406   David Woodhouse   cpia2: use reques...
135
  fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin
a7a5eb9d4   Jaswinder Singh Rajput   yam: use request_...
136
  fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin
88ecf814c   David Woodhouse   firmware: Add fir...
137
138
  
  fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)
4d2acfbfd   David Woodhouse   firmware: Add CON...
139
140
  quiet_cmd_ihex  = IHEX    $@
        cmd_ihex  = $(OBJCOPY) -Iihex -Obinary $< $@
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
141
  quiet_cmd_ihex2fw  = IHEX2FW $@
556b0f58b   David Woodhouse   Revert "fix modul...
142
        cmd_ihex2fw  = $(objtree)/$(obj)/ihex2fw $< $@
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
143

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

4d2acfbfd   David Woodhouse   firmware: Add CON...
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
  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)
5180d5f48   Michal Marek   firmware: Simplif...
177
  $(patsubst %,$(obj)/%.gen.S, $(fw-shipped-y)): %: $(wordsize_deps)
4d2acfbfd   David Woodhouse   firmware: Add CON...
178
179
  	$(call cmd,fwbin,$(patsubst %.gen.S,%,$@))
  $(patsubst %,$(obj)/%.gen.S, $(fw-external-y)): %: $(wordsize_deps) \
5180d5f48   Michal Marek   firmware: Simplif...
180
  		include/config/extra/firmware/dir.h
4d2acfbfd   David Woodhouse   firmware: Add CON...
181
182
183
184
185
  	$(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...
186
187
  # .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.
5180d5f48   Michal Marek   firmware: Simplif...
188
  $(obj)/%: $(obj)/%.ihex
4d2acfbfd   David Woodhouse   firmware: Add CON...
189
  	$(call cmd,ihex)
4528e4290   David Woodhouse   Partially revert ...
190
191
192
193
194
195
196
197
198
199
200
  # 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...
201
202
203
204
  # .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>)
5180d5f48   Michal Marek   firmware: Simplif...
205
  $(obj)/%.fw: $(obj)/%.HEX $(ihex2fw_dep)
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
206
  	$(call cmd,ihex2fw)
59890f74e   David Woodhouse   ihex: Add support...
207
  # .H16 is our own modified form of Intel HEX, with 16-bit length for records.
5180d5f48   Michal Marek   firmware: Simplif...
208
  $(obj)/%.fw: $(obj)/%.H16 $(ihex2fw_dep)
59890f74e   David Woodhouse   ihex: Add support...
209
  	$(call cmd,h16tofw)
88ecf814c   David Woodhouse   firmware: Add fir...
210
211
  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...
212

dd5a6752a   Michal Marek   firmware: Create ...
213
214
215
216
217
  ifeq ($(KBUILD_SRC),)
  # Makefile.build only creates subdirectories for O= builds, but external
  # firmware might live outside the kernel source tree
  _dummy := $(foreach d,$(addprefix $(obj)/,$(dir $(fw-external-y))), $(shell [ -d $(d) ] || mkdir -p $(d)))
  endif
4d2acfbfd   David Woodhouse   firmware: Add CON...
218
219
220
221
222
223
224
  # 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.
a4954fd77   Masahiro Yamada   kbuild: remove ob...
225
  obj- := dummy
556b0f58b   David Woodhouse   Revert "fix modul...
226
227
  
  hostprogs-y := ihex2fw