summaryrefslogtreecommitdiff
path: root/target/linux/imx6/image/Makefile
blob: 25c7bdf02c0e5c20b812e82f7bf392d1b119c561 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#
# Copyright (C) 2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk

#################################################
# Images
#################################################

# build a ubi for a specific flash geometry/layout which can contain
# volumes with the following data from ubinize-$(DEVICE_NAME).cfg:
#   - 'boot.ubifs' volume: kernel+dtbs+bootscript
#   - 'root.squashfs' volume: rootfs
# $(1): name (used for suffix)
# $(2): PAGESIZE (-m param to mkfs.ubifs/ubinize)
# $(3): ERASESIZE (logical eraseblock size: -e param to mkfs.ubifs)
# $(4): BLOCKSIZE (-p param to ubinize)
# $(5): MAXSIZE (maximum file-system size in LEB's -c param to mkfs.ubifs)
#
define Build/ubi-boot-overlay
	# ubi-boot-overlay $(DEVICE_NAME) $(word 1, $(1))

	# boot filesystem
	rm -rf $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))
	mkdir -p $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))
	$(CP) $< $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))/$(IMG_PREFIX)-uImage
	ln -sf $(IMG_PREFIX)-uImage \
		$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))/uImage
	$(foreach dts,$(shell echo $(DEVICE_DTS)), \
		$(CP) $(LINUX_DIR)/arch/$(ARCH)/boot/dts/$(dts).dtb \
			$(BIN_DIR)/$(IMG_PREFIX)-$(dts).dtb; \
		$(CP) $(LINUX_DIR)/arch/$(ARCH)/boot/dts/$(dts).dtb \
			$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))/$(IMG_PREFIX)-$(dts).dtb; \
		ln -sf $(IMG_PREFIX)-$(dts).dtb \
			$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))/$(dts).dtb; \
	)
	mkimage -A arm -O linux -T script -C none -a 0 -e 0 \
		-n '$(DEVICE_ID) LEDE bootscript' \
		-d ./bootscript-$(DEVICE_NAME) \
		$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))/6x_bootscript-$(DEVICE_NAME)
	$(STAGING_DIR_HOST)/bin/mkfs.ubifs \
		--space-fixup --force-compr=zlib --squash-uids \
		-m $(word 2, $(1)) -e $(word 3, $(1)) -c $(word 5, $(1)) \
		-o $(KDIR)/boot-$(DEVICE_NAME)-bootfs_$(word 1, $(1)).ubifs \
		-d $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))
	$(CP) $(KDIR)/boot-$(DEVICE_NAME)-bootfs_$(word 1, $(1)).ubifs \
		$(BIN_DIR)/$(IMG_PREFIX)-$(DEVICE_NAME)-bootfs_$(word 1, $(1)).ubifs

	# ubi
	rm -rf p $(KDIR)/$(DEVICE_NAME)_$(word 1, $(1))
	mkdir -p $(KDIR)/$(DEVICE_NAME)_$(word 1, $(1))
	$(CP) $(word 2, $^) \
		$(KDIR)/$(DEVICE_NAME)_$(word 1, $(1))/
	$(CP) $(KDIR)/boot-$(DEVICE_NAME)-bootfs_$(word 1, $(1)).ubifs \
		$(KDIR)/$(DEVICE_NAME)_$(word 1, $(1))/boot.ubifs
	$(CP) ./ubinize-$(DEVICE_NAME).cfg \
		$(KDIR)/$(DEVICE_NAME)_$(word 1, $(1))/ubinize.cfg
	( cd $(KDIR)/$(DEVICE_NAME)_$(word 1, $(1)); \
		$(STAGING_DIR_HOST)/bin/ubinize \
		-m $(word 2, $(1)) -p $(word 4, $(1)) -s $(word 2, $(1)) \
		-o $@ \
		ubinize.cfg \
	)
endef

define Build/bootfs.tar.gz
	# boot filesystem
	rm -rf $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)
	mkdir -p $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)
	$(CP) $< $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)/$(IMG_PREFIX)-uImage
	ln -sf $(IMG_PREFIX)-uImage \
		$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)/uImage
	$(foreach dts,$(shell echo $(DEVICE_DTS)), \
		$(CP) $(LINUX_DIR)/arch/$(ARCH)/boot/dts/$(dts).dtb \
			$(BIN_DIR)/$(IMG_PREFIX)-$(dts).dtb; \
		$(CP) $(LINUX_DIR)/arch/$(ARCH)/boot/dts/$(dts).dtb \
			$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)/$(IMG_PREFIX)-$(dts).dtb; \
		ln -sf $(IMG_PREFIX)-$(dts).dtb \
			$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)/$(dts).dtb; \
	)
	mkimage -A arm -O linux -T script -C none -a 0 -e 0 \
		-n '$(DEVICE_ID) OpenWrt bootscript' \
		-d ./bootscript-$(DEVICE_NAME) \
		$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)/6x_bootscript-$(DEVICE_NAME)

	# tar and zip
	( \
		cd $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME); \
		$(TAR) --numeric-owner --owner=0 --group=0 --transform "s,./,./boot/," \
			-czvf $(BIN_DIR)/$(IMG_PREFIX)-$(DEVICE_NAME)-bootfs.tar.gz . ; \
	)
endef

#################################################
# Devices
#################################################

KERNEL_LOADADDR=0x10008000

define Device/Default
  DEVICE_DTS :=
  FILESYSTEMS := squashfs ext4
  KERNEL_INSTALL := 1
  KERNEL_SUFFIX := -uImage
  KERNEL_NAME := zImage
  KERNEL_PREFIX := $$(IMAGE_PREFIX)
  KERNEL := kernel-bin | uImage none
  IMAGE_NAME = $$(IMAGE_PREFIX)-$$(1).$$(2)
  IMAGES :=
endef

DEVICE_VARS += DEVICE_DTS

define Device/ventana
  PROFILES := Generic VENTANA
  DEVICE_TITLE := Gateworks Ventana family
  DEVICE_DTS:= \
	imx6dl-gw51xx \
	imx6dl-gw52xx \
	imx6dl-gw53xx \
	imx6dl-gw54xx \
	imx6dl-gw551x \
	imx6dl-gw552x \
	imx6q-gw51xx \
	imx6q-gw52xx \
	imx6q-gw53xx \
	imx6q-gw54xx \
	imx6q-gw5400-a \
	imx6q-gw551x \
	imx6q-gw552x
  DEVICE_PACKAGES := kmod-thermal-imx kmod-sky2 kmod-usb-chipidea-imx kmod-usb-mxs-phy \
	kmod-sound-core kmod-sound-soc-imx kmod-sound-soc-imx-sgtl5000 \
	kmod-can kmod-can-flexcan kmod-can-raw \
	kmod-rtc-ds1672 kmod-gpio-pca953x kmod-hwmon-gsc kmod-eeprom-at24 \
	kmod-leds-gpio kmod-pps-gpio kmod-gw16083 \
	kobs-ng
  IMAGES := nand_normal.ubi nand_large.ubi bootfs.tar.gz
  IMAGE/nand_normal.ubi := ubi-boot-overlay normal 2048 124KiB 128KiB 8124
  IMAGE/nand_large.ubi := ubi-boot-overlay large 4096 248KiB 256KiB 8124
  IMAGE/bootfs.tar.gz := bootfs.tar.gz
  IMAGE_NAME := $$(IMAGE_PREFIX)-$$(1)-$$(2)
endef

define Device/wandboard
  PROFILES := Generic IMX6DL_WANDBOARD
  DEVICE_TITLE := Wandboard Dual
  DEVICE_DTS := imx6dl-wandboard
  DEVICE_PACKAGES := kmod-thermal-imx kmod-usb-chipidea-imx kmod-usb-mxs-phy
endef

TARGET_DEVICES += \
	ventana \
	wandboard

$(eval $(call BuildImage))