Blame view

firmware/Makefile 11.7 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
  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
4b6ece97e   Jaswinder Singh Rajput   3C359: use reques...
27
  fw-shipped-$(CONFIG_3C359) += 3com/3C359.bin
949b42544   Jaswinder Singh   firmware: convert...
28
  fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs)
cfc3a44c3   Jaswinder Singh Rajput   starfire: use req...
29
30
  fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \
  					 adaptec/starfire_tx.bin
7f127d5ed   Jaswinder Singh   dsp56k: use reque...
31
  fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin
27d202fff   David Woodhouse   firmware: convert...
32
  fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw
5928c8baf   Vladislav Zolotarov   bnx2x: replace FW...
33
34
35
  fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.5.0.fw \
  			      bnx2x/bnx2x-e1h-6.2.5.0.fw \
  			      bnx2x/bnx2x-e2-6.2.5.0.fw
dc187cb38   Michael Chan   bnx2: Update firm...
36
  fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \
22fa159d3   Michael Chan   bnx2: Update firm...
37
38
  			     bnx2/bnx2-rv2p-09-6.0.17.fw \
  			     bnx2/bnx2-rv2p-09ax-6.0.17.fw \
0268102d5   Michael Chan   bnx2: Update firm...
39
  			     bnx2/bnx2-mips-06-6.2.1.fw \
22fa159d3   Michael Chan   bnx2: Update firm...
40
  			     bnx2/bnx2-rv2p-06-6.0.15.fw
fcaa40669   Jaswinder Singh   cassini: use requ...
41
  fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin
547d8bb7d   David Woodhouse   ip2: use request_...
42
  fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin
ad58633c8   Divy Le Ray   cxgb3: integrate ...
43
44
  fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
  				   cxgb3/t3c_psram-1.1.0.bin \
17acad30b   Divy Le Ray   cxgb3: update FW ...
45
  				   cxgb3/t3fw-7.10.0.bin \
2e8c07c35   Divy Le Ray   cxgb3: use reques...
46
47
48
  				   cxgb3/ael2005_opt_edc.bin \
  				   cxgb3/ael2005_twx_edc.bin \
  				   cxgb3/ael2020_twx_edc.bin
ece2be799   Ben Hutchings   drm/mga: Use requ...
49
  fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw
52f97df5d   Ben Hutchings   drm/r128: Use req...
50
  fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin
70967ab9c   Ben Hutchings   radeon: Use reque...
51
52
53
54
55
56
57
58
59
60
61
62
63
64
  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...
65
  fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
0a2a736af   David Woodhouse   ttusb-budget: use...
66
  fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
9ac32e1bc   Jaswinder Singh Rajput   firmware: convert...
67
68
  fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
  			     e100/d102e_ucode.bin
cd36e9efa   Jaswinder Singh Rajput   myri_sbus: use re...
69
  fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin
bf6fda63c   Ken Kawasaki   pcnet_cs: add cis...
70
71
  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...
72
73
  				     cis/tamarack.cis cis/PE-200.cis \
  				     cis/PE520.cis
f0a3a1538   Ken Kawasaki   3c589_cs: add cis...
74
75
  fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis
  fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis
bf6fda63c   Ken Kawasaki   pcnet_cs: add cis...
76
  fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \
63ca2d74e   Ken Kawasaki   pcnet_cs: add cis...
77
78
79
  				       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 ...
80
  fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin
989bb5f58   Jaswinder Singh Rajput   [SCSI] advansys: ...
81
82
  fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \
  				      advansys/3550.bin advansys/38C0800.bin
1bfa11db7   Jaswinder Singh Rajput   [SCSI] qla1280: u...
83
84
  fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += qlogic/1040.bin qlogic/1280.bin \
  					 qlogic/12160.bin
f894e74dc   Jaswinder Singh Rajput   [SCSI] qlogicpti:...
85
  fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += qlogic/isp1000.bin
ecd4b48a1   Ben Hutchings   IB/qib: Use reque...
86
  fw-shipped-$(CONFIG_INFINIBAND_QIB) += qlogic/sd7220.fw
0f805b86c   David Woodhouse   smctr: use reques...
87
  fw-shipped-$(CONFIG_SMCTR) += tr_smctr.bin
76770664d   David Woodhouse   firmware: convert...
88
  fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp
a292f404f   David Woodhouse   firmware: convert...
89
90
  fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \
  				     ess/maestro3_assp_minisrc.fw
d71792ac3   Jaswinder Singh   firmware: convert...
91
92
93
94
  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...
95
96
  fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \
  				   yamaha/ds1e_ctrl.fw
7c7cae17e   Takashi Iwai   ALSA: wavefront -...
97
  fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin
06e1f9ffa   Ben Hutchings   tehuti: Use reque...
98
  fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin
077f849de   Jaswinder Singh Rajput   firmware: convert...
99
100
  fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \
  			       tigon/tg3_tso5.bin
b775a750c   Ben Hutchings   typhoon: Use requ...
101
  fw-shipped-$(CONFIG_TYPHOON) += 3com/typhoon.bin
c46677463   David Woodhouse   dabusb: use reque...
102
  fw-shipped-$(CONFIG_USB_DABUSB) += dabusb/firmware.fw dabusb/bitstream.bin
ae93a55bf   David Woodhouse   emi26: use reques...
103
104
  fw-shipped-$(CONFIG_USB_EMI26) += emi26/loader.fw emi26/firmware.fw \
  				  emi26/bitstream.fw
b8e24bfab   David Woodhouse   emi62: use reques...
105
106
  fw-shipped-$(CONFIG_USB_EMI62) += emi62/loader.fw emi62/bitstream.fw \
  				  emi62/spdif.fw emi62/midi.fw
79682499d   David Woodhouse   kaweth: use reque...
107
108
109
  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...
110
111
112
113
114
115
116
117
118
119
120
121
122
123
  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' ...
124
  fw-shipped- += keyspan/mpr.fw keyspan/usa18x.fw keyspan/usa19.fw	\
2971c579f   David Woodhouse   keyspan: use requ...
125
126
127
128
  	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:...
129
130
  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...
131
132
  fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += edgeport/boot.fw edgeport/boot2.fw \
  					    edgeport/down.fw edgeport/down2.fw
d12b219a2   Jaswinder Singh   edgeport-ti: use ...
133
  fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += edgeport/down3.bin
ec6752f5a   David Woodhouse   whiteheat: use re...
134
135
  fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \
  					   # whiteheat_loader_debug.fw
3edbf98b8   David Woodhouse   keyspan_pda: use ...
136
137
  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...
138
  fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw
04a33e406   David Woodhouse   cpia2: use reques...
139
  fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin
a7a5eb9d4   Jaswinder Singh Rajput   yam: use request_...
140
  fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin
88ecf814c   David Woodhouse   firmware: Add fir...
141
142
143
144
  
  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...
145
  firmware-dirs := $(sort $(addprefix $(objtree)/$(obj)/,$(dir $(fw-external-y) $(fw-shipped-all))))
4d2acfbfd   David Woodhouse   firmware: Add CON...
146
147
148
149
150
151
  
  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...
152
  quiet_cmd_ihex2fw  = IHEX2FW $@
556b0f58b   David Woodhouse   Revert "fix modul...
153
        cmd_ihex2fw  = $(objtree)/$(obj)/ihex2fw $< $@
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
154

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

4d2acfbfd   David Woodhouse   firmware: Add CON...
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
198
199
200
201
202
  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...
203
  		include/config/extra/firmware/dir.h | $(objtree)/$$(dir %)
4d2acfbfd   David Woodhouse   firmware: Add CON...
204
205
206
207
208
  	$(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...
209
210
  # .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...
211
212
  $(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %)
  	$(call cmd,ihex)
4528e4290   David Woodhouse   Partially revert ...
213
214
215
216
217
218
219
220
221
222
223
  # 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...
224
225
226
227
  # .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 ...
228
  $(obj)/%.fw: $(obj)/%.HEX $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
8bd6b2229   David Woodhouse   ihex: add ihex2fw...
229
  	$(call cmd,ihex2fw)
59890f74e   David Woodhouse   ihex: Add support...
230
  # .H16 is our own modified form of Intel HEX, with 16-bit length for records.
4528e4290   David Woodhouse   Partially revert ...
231
  $(obj)/%.fw: $(obj)/%.H16 $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
59890f74e   David Woodhouse   ihex: Add support...
232
  	$(call cmd,h16tofw)
4d2acfbfd   David Woodhouse   firmware: Add CON...
233
234
  $(firmware-dirs):
  	$(call cmd,mkdir)
88ecf814c   David Woodhouse   firmware: Add fir...
235
236
  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...
237
238
239
240
241
242
243
244
245
  
  # 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...
246
247
  
  hostprogs-y := ihex2fw