From 262b885b834cecf7e7afbaca32d0a67c0b75aa44 Mon Sep 17 00:00:00 2001
From: Mathias Kresin <dev@kresin.me>
Date: Thu, 29 Nov 2018 23:40:12 +0100
Subject: [PATCH] ramips: use new image build code for D-Link DCS-930 family

Drop the factory images and the firmware tool to create them. They don't
work any more, since the factory image has an uImage header covering the
whole kernel + rootfs. This way the uImage splitter will not be able to
find the rootfs and the kernel will panic later on.

The factory images were most likely added at a time the board had
distinct partitions for kernel and rootfs.

Signed-off-by: Mathias Kresin <dev@kresin.me>
---
 target/linux/ramips/image/rt305x-legacy.mk | 33 ------------------
 target/linux/ramips/image/rt305x.mk        | 16 +++++++++
 tools/firmware-utils/Makefile              |  1 -
 tools/firmware-utils/src/mkdcs932.c        | 39 ----------------------
 4 files changed, 16 insertions(+), 73 deletions(-)
 delete mode 100644 tools/firmware-utils/src/mkdcs932.c

diff --git a/target/linux/ramips/image/rt305x-legacy.mk b/target/linux/ramips/image/rt305x-legacy.mk
index 5116dfcd88..f5a892d365 100644
--- a/target/linux/ramips/image/rt305x-legacy.mk
+++ b/target/linux/ramips/image/rt305x-legacy.mk
@@ -1,23 +1,6 @@
 #
 # RT305X Profiles
 #
-define BuildFirmware/DCS930/squashfs
-	$(call BuildFirmware/Default4M/squashfs,squashfs,$(2),$(3))
-	dd if=$(KDIR)/vmlinux-$(2).bin.lzma of=$(KDIR)/image.$(2).combined bs=1048512 count=1 conv=sync
-	cat $(KDIR)/root.squashfs >> $(KDIR)/image.$(2).combined
-	$(call MkImage,lzma,$(KDIR)/image.$(2).combined,$(KDIR)/image.$(2))
-	$(call prepare_generic_squashfs,$(KDIR)/image.$(2))
-	if [ `stat -c%s "$(KDIR)/image.$(2)"` -gt $(ralink_default_fw_size_4M) ]; then \
-		echo "Warning: $(KDIR)/image.$(2)  is too big" >&2; \
-	else \
-		dd if=$(KDIR)/image.$(2) of=$(KDIR)/dcs.tmp bs=64K count=5 conv=sync ;\
-		cat $(KDIR)/image.$(2) >> $(KDIR)/dcs.tmp ; \
-		dd if=$(KDIR)/dcs.tmp of=$(call imgname,$(1),$(2))-factory.bin bs=4096k count=1 conv=sync ;\
-		$(STAGING_DIR_HOST)/bin/mkdcs932 $(call imgname,$(1),$(2))-factory.bin ; \
-	fi
-endef
-BuildFirmware/DCS930/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3))
-
 kernel_size_wl341v3=917504
 rootfs_size_wl341v3=2949120
 define BuildFirmware/WL-341V3/squashfs
@@ -46,8 +29,6 @@ define Image/Build/Profile/ALL02393G
 	$(call Image/Build/Template/$(image_type)/$(1),UIMAGE_8M,all0239-3g,ALL0239-3G,ttyS1,57600,phys)
 endef
 
-Image/Build/Profile/DCS930=$(call BuildFirmware/DCS930/$(1),$(1),dcs-930,DCS-930)
-Image/Build/Profile/DCS930LB1=$(call BuildFirmware/DCS930/$(1),$(1),dcs-930l-b1,DCS-930L-B1)
 Image/Build/Profile/WL-341V3=$(call BuildFirmware/WL-341V3/$(1),$(1))
 
 define LegacyDevice/ALL02393G
@@ -56,20 +37,6 @@ define LegacyDevice/ALL02393G
 endef
 LEGACY_DEVICES += ALL02393G
 
-
-define LegacyDevice/DCS930
-  DEVICE_TITLE := D-Link DCS-930
-  DEVICE_PACKAGES := kmod-video-core kmod-video-uvc kmod-sound-core kmod-usb-audio kmod-usb-core kmod-usb-dwc2
-endef
-LEGACY_DEVICES += DCS930
-
-
-define LegacyDevice/DCS930LB1
-  DEVICE_TITLE := D-Link DCS-930L B1
-  DEVICE_PACKAGES := kmod-video-core kmod-video-uvc kmod-sound-core kmod-usb-audio kmod-usb-core kmod-usb-ohci kmod-usb2
-endef
-LEGACY_DEVICES += DCS930LB1
-
 define LegacyDevice/WL-341V3
   DEVICE_TITLE := Sitecom WL-341 v3
 endef
diff --git a/target/linux/ramips/image/rt305x.mk b/target/linux/ramips/image/rt305x.mk
index cc743c609d..5f514290dc 100644
--- a/target/linux/ramips/image/rt305x.mk
+++ b/target/linux/ramips/image/rt305x.mk
@@ -210,6 +210,22 @@ define Device/dap-1350
 endef
 TARGET_DEVICES += dap-1350
 
+define Device/dcs-930
+  DTS := DCS-930
+  IMAGE_SIZE := $(ralink_default_fw_size_4M)
+  DEVICE_TITLE := D-Link DCS-930
+  DEVICE_PACKAGES := kmod-video-core kmod-video-uvc kmod-sound-core kmod-usb-audio kmod-usb-core kmod-usb-dwc2
+endef
+TARGET_DEVICES += dcs-930
+
+define Device/dcs-930l-b1
+  DTS := DCS-930L-B1
+  IMAGE_SIZE := $(ralink_default_fw_size_4M)
+  DEVICE_TITLE := D-Link DCS-930L B1
+  DEVICE_PACKAGES := kmod-video-core kmod-video-uvc kmod-sound-core kmod-usb-audio kmod-usb-core kmod-usb-ohci kmod-usb2
+endef
+TARGET_DEVICES += dcs-930l-b1
+
 define Device/dir-300-b1
   DTS := DIR-300-B1
   IMAGE_SIZE := $(ralink_default_fw_size_4M)
diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile
index 00917c3417..63df63191d 100644
--- a/tools/firmware-utils/Makefile
+++ b/tools/firmware-utils/Makefile
@@ -72,7 +72,6 @@ define Host/Compile
 	$(call cc,mkporayfw, -Wall)
 	$(call cc,mkrasimage, --std=gnu99)
 	$(call cc,mkhilinkfw, -lcrypto)
-	$(call cc,mkdcs932, -Wall)
 	$(call cc,mkheader_gemtek,-lz)
 	$(call cc,mkrtn56uimg, -lz)
 	$(call cc,dgn3500sum, -Wall)
diff --git a/tools/firmware-utils/src/mkdcs932.c b/tools/firmware-utils/src/mkdcs932.c
deleted file mode 100644
index 28c67aa3b3..0000000000
--- a/tools/firmware-utils/src/mkdcs932.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License,
- * version 2 as published by the Free Software Foundation.
- *
- * (C) John Crispin <blogic@openwrt.org>
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <errno.h>
-
-int main(int argc, char **argv)
-{
-	uint32_t t = 0, sum = 0x55aa55aa;
-	int fd;
-
-	if ((argc != 2) || ((fd = open(argv[1], O_RDWR)) == -1)) {
-		fprintf(stderr, "Usage: %s input_file\n", *argv);
-		return -EINVAL;
-	}
-
-	lseek(fd, -4, SEEK_END);
-	write(fd, &t, 4);
-	lseek(fd, 0, SEEK_SET);
-
-	while (read(fd, &t, 4) > 0)
-		sum -= t;
-
-	lseek(fd, -4, SEEK_END);
-	write(fd, &sum, 4);
-	close(fd);
-
-	return 0;
-}
-- 
2.30.2