1#!/bin/bash
2# Usage: ./extra-part-config.sh <max extra partition num> <default extra partition num>
3
4RK_EXTRA_PARTITION_MAX_NUM=${1:-5}
5RK_EXTRA_PARTITION_NUM=${2:-2}
6
7cat <<EOF
8# Auto generated by $0${@:+ $@}
9
10comment "Extra partitions depends on rootfs system"
11	depends on RK_ROOTFS_SYSTEM = ""
12
13if RK_ROOTFS_SYSTEM != ""
14
15menu "Extra partitions"
16
17EOF
18
19for i in $(seq 1 $RK_EXTRA_PARTITION_MAX_NUM); do
20	case $i in
21		1)
22			echo "if RK_EXTRA_PARTITION_${i}_FSTYPE = \"ubi\" || \\"
23			;;
24		$RK_EXTRA_PARTITION_MAX_NUM)
25			echo "	RK_EXTRA_PARTITION_${i}_FSTYPE = \"ubi\""
26			;;
27		*)
28			echo "	RK_EXTRA_PARTITION_${i}_FSTYPE = \"ubi\" || \\"
29			;;
30	esac
31done
32
33cat <<EOF
34
35config RK_UBI_PAGE_SIZE
36	hex "ubi image page size (B)"
37	default "0x800"
38
39config RK_UBI_BLOCK_SIZE
40	hex "ubi image block size (B)"
41	default "0x20000"
42
43endif
44
45config RK_EXTRA_PARTITION_NUM
46	int "number of extra partitions"
47	range 0 $RK_EXTRA_PARTITION_MAX_NUM
48	default $RK_EXTRA_PARTITION_NUM
49EOF
50
51unset RK_EXTRA_PARTITIONS
52for i in $(seq 1 $RK_EXTRA_PARTITION_MAX_NUM); do
53	cat <<EOF
54
55if RK_EXTRA_PARTITION_NUM > $(( $i - 1 ))
56
57menu "Extra partition $i"
58
59config RK_EXTRA_PARTITION_${i}_DEV
60	string "device identifier"
61EOF
62	case $i in
63		1) echo -e "\tdefault \"oem\"" ;;
64		2) echo -e "\tdefault \"userdata\"" ;;
65	esac
66
67	cat <<EOF
68	help
69	  Device identifier, like oem or /dev/mmcblk0p7 or PARTLABEL=oem.
70
71config RK_EXTRA_PARTITION_${i}_NAME
72	string "partition name"
73	default "<dev>"
74	help
75	  Partition name, set "<dev>" to detect from device identifier.
76
77config RK_EXTRA_PARTITION_${i}_NAME_STR
78	string
79	default "\${RK_EXTRA_PARTITION_${i}_DEV##*[/=]}" \\
80		if RK_EXTRA_PARTITION_${i}_NAME = "<dev>"
81	default RK_EXTRA_PARTITION_${i}_NAME
82
83config RK_EXTRA_PARTITION_${i}_MOUNTPOINT
84	string "mountpoint"
85	default "/<name>"
86
87config RK_EXTRA_PARTITION_${i}_MOUNTPOINT_STR
88	string
89	default "/\$RK_EXTRA_PARTITION_${i}_NAME_STR" \\
90		if RK_EXTRA_PARTITION_${i}_MOUNTPOINT = "/<name>"
91	default RK_EXTRA_PARTITION_${i}_MOUNTPOINT
92
93config RK_EXTRA_PARTITION_${i}_FSTYPE
94	string "filesystem type"
95	default "ext4"
96
97config RK_EXTRA_PARTITION_${i}_OPTIONS
98	string "mount options"
99	default "defaults"
100
101config RK_EXTRA_PARTITION_${i}_SRC
102	string "source dirs' suffix"
103EOF
104
105	if [ $i -lt 3 ]; then
106		cat << EOF
107	default "empty" if RK_CHIP_FAMILY = "rk3308"
108	default "normal"
109	help
110	  Suffix of source dirs under <RK_IMAGE_DIR>/.
111EOF
112	fi
113
114	cat <<EOF
115
116config RK_EXTRA_PARTITION_${i}_SIZE
117	string "image size (size(M|K)|auto(0)|max)"
118	default "auto"
119	help
120	  Size of image.
121	  Set "auto" to auto detect.
122	  Set "max" to use maxium partition size in parameter file.
123
124config RK_EXTRA_PARTITION_${i}_BUILTIN
125	bool "merged into rootfs"
126	help
127	  Virtual parition that merged into rootfs.
128
129config RK_EXTRA_PARTITION_${i}_FIXED
130	bool "skip resizing"
131	depends on !RK_EXTRA_PARTITION_${i}_BUILTIN
132	default y if RK_EXTRA_PARTITION_${i}_FSTYPE = "ubi"
133
134config RK_EXTRA_PARTITION_${i}_FEATURES
135	string
136	default "\${RK_EXTRA_PARTITION_${i}_FIXED:+fixed,}\${RK_EXTRA_PARTITION_${i}_BUILTIN:+builtin}"
137
138config RK_EXTRA_PARTITION_${i}_STR
139	string
140	depends on RK_EXTRA_PARTITION_${i}_DEV != ""
141	default "\$RK_EXTRA_PARTITION_${i}_DEV:\$RK_EXTRA_PARTITION_${i}_NAME_STR:\$RK_EXTRA_PARTITION_${i}_MOUNTPOINT_STR:\$RK_EXTRA_PARTITION_${i}_FSTYPE:\$RK_EXTRA_PARTITION_${i}_OPTIONS:\${RK_EXTRA_PARTITION_${i}_SRC// /,}:\$RK_EXTRA_PARTITION_${i}_SIZE:\$RK_EXTRA_PARTITION_${i}_FEATURES"
142
143endmenu # Extra partition $i
144
145endif
146EOF
147
148	RK_EXTRA_PARTITIONS="${RK_EXTRA_PARTITIONS:+${RK_EXTRA_PARTITIONS}@}\$RK_EXTRA_PARTITION_${i}_STR"
149done
150
151cat << EOF
152
153config RK_EXTRA_PARTITION_STR
154	string
155	default "$RK_EXTRA_PARTITIONS"
156
157endmenu # Extra partitions
158
159endif
160EOF
161