LICENSE     := GPLv2
VERSION     := 2
DOWNLOADS   := lxip.archive \
               fec.archive \
               usb_host.archive dwc_otg_host.git usb_hid.archive \
               usb_modem.archive usb_net.archive

#
# Tools
#
$(call check_tool,flex)
$(call check_tool,bison)

FLEX = flex
YACC = bison

#
# The git checkout checks for the existence of SRC_DIR, which is created by the
# Linux extraction, therefore make sure to checkout the GIT sources first.
#
usb_host.archive: dwc_otg_host.git


#
# USB host controller
#
SRC_DIR_USB_HOST  := src/drivers/usb_host
VERSION_USB_HOST  := 4.16.3
URL(usb_host)     := https://www.kernel.org/pub/linux/kernel/v4.x/linux-$(VERSION_USB_HOST).tar.xz
SHA(usb_host)     := 0d6971a81da97e38b974c5eba31a74803bfe41aabc46d406c3acda56306c81a3
DIR(usb_host)     := $(SRC_DIR_USB_HOST)
TAR_OPT(usb_host) := --strip-components=1 --files-from - < <(sed 's/-x.x.x/-$(VERSION_USB_HOST)/g' $(REP_DIR)/usb_host.list)
HASH_INPUT        += $(REP_DIR)/usb_host.list

SRC_DIR_USB_HID  := src/drivers/usb_hid
VERSION_USB_HID  := 4.16.3
URL(usb_hid)     := https://www.kernel.org/pub/linux/kernel/v4.x/linux-$(VERSION_USB_HID).tar.xz
SHA(usb_hid)     := 0d6971a81da97e38b974c5eba31a74803bfe41aabc46d406c3acda56306c81a3
DIR(usb_hid)     := $(SRC_DIR_USB_HID)
TAR_OPT(usb_hid) := --strip-components=1 --files-from - < <(sed 's/-x.x.x/-$(VERSION_USB_HID)/g' $(REP_DIR)/usb_hid.list)
HASH_INPUT       += $(REP_DIR)/usb_hid.list

SRC_DIR_USB_NET  := src/drivers/usb_net
VERSION_USB_NET  := 4.16.3
URL(usb_net)     := https://www.kernel.org/pub/linux/kernel/v4.x/linux-$(VERSION_USB_NET).tar.xz
SHA(usb_net)     := 0d6971a81da97e38b974c5eba31a74803bfe41aabc46d406c3acda56306c81a3
DIR(usb_net)     := $(SRC_DIR_USB_NET)
TAR_OPT(usb_net) := --strip-components=1 --files-from - < <(sed 's/-x.x.x/-$(VERSION_USB_NET)/g' $(REP_DIR)/usb_net.list)
HASH_INPUT       += $(REP_DIR)/usb_net.list

SRC_DIR_USB_MODEM  := src/drivers/usb_modem
VERSION_USB_MODEM  := 4.16.3
URL(usb_modem)     := https://www.kernel.org/pub/linux/kernel/v4.x/linux-$(VERSION_USB_MODEM).tar.xz
SHA(usb_modem)     := 0d6971a81da97e38b974c5eba31a74803bfe41aabc46d406c3acda56306c81a3
DIR(usb_modem)     := $(SRC_DIR_USB_MODEM)
TAR_OPT(usb_modem) := --strip-components=1 --files-from - < <(sed 's/-x.x.x/-$(VERSION_USB_NET)/g' $(REP_DIR)/usb_modem.list)
HASH_INPUT         += $(REP_DIR)/usb_modem.list

#
# Raspberry Pi USB controller
#
URL(dwc_otg_host) := https://github.com/cproc/dwc_otg.git
REV(dwc_otg_host) := r5
DIR(dwc_otg_host) := $(SRC_DIR_USB_HOST)/drivers/usb/host


#
# IP stack sources
#
SRC_DIR_LXIP  := src/lib/lxip
VERSION_LXIP  := 4.4.3
URL(lxip)     := https://www.kernel.org/pub/linux/kernel/v4.x/linux-$(VERSION_LXIP).tar.xz
SHA(lxip)     := 0b379cb19bbd7e38fc5a9a000ea927db55cce519a7400ec7fa705c581a6491dd
DIR(lxip)     := $(SRC_DIR_LXIP)
TAR_OPT(lxip) := --strip-components=1  --files-from - < <(sed 's/-x.x.x/-$(VERSION_LXIP)/g' $(REP_DIR)/lxip.list)
HASH_INPUT    += $(REP_DIR)/lxip.list

#
# Freescale Ethernet controller
#
SRC_DIR_FEC  := src/drivers/nic/fec
VERSION_FEC  := 4.16.3
URL(fec)     := https://www.kernel.org/pub/linux/kernel/v4.x/linux-$(VERSION_FEC).tar.xz
SHA(fec)     := 0d6971a81da97e38b974c5eba31a74803bfe41aabc46d406c3acda56306c81a3
DIR(fec)     := $(SRC_DIR_FEC)
TAR_OPT(fec) := --strip-components=1  --files-from - < <(sed 's/-x.x.x/-$(VERSION_FEC)/g'     $(REP_DIR)/fec.list)
HASH_INPUT   += $(REP_DIR)/fec.list

#
# Patches
#
PATCHES += patches/fec_ndev_owner.patch
PATCHES += patches/fec_skbuff_cast.patch
PATCHES += patches/fec_tx_bounce_dma.patch
PATCHES += patches/fec_tx_sync_dma_write.patch
PATCHES += patches/lxip_icmp.patch
PATCHES += patches/lxip_ip_config.patch
PATCHES += patches/lxip_log2.patch
PATCHES += patches/lxip_netlink.patch
PATCHES += patches/lxip_request_sock.patch
PATCHES += patches/lxip_sk_wq.patch
PATCHES += patches/lxip_skbuff_cast.patch
PATCHES += patches/usb_hid_evdev.patch
PATCHES += patches/usb_hid_hid.patch
PATCHES += patches/usb_hid_input.patch
PATCHES += patches/usb_hid_usbhid.patch
PATCHES += patches/usb_hid_wacom_sys.patch
PATCHES += patches/usb_host_dwc_otg.patch
PATCHES += patches/usb_host_isoc_bei.patch
PATCHES += patches/usb_host_mem.patch
PATCHES += patches/usb_host_omap.patch
PATCHES += patches/usb_host_update_event_ring.patch
PATCHES += patches/usb_modem_skbuff_cast.patch
PATCHES += patches/usb_net_skbuff_cast.patch


#IP stack
LXIP_OPT = -p1 -d$(SRC_DIR_LXIP)
PATCH_OPT(patches/lxip_icmp.patch)         := $(LXIP_OPT)
PATCH_OPT(patches/lxip_ip_config.patch)    := $(LXIP_OPT)
PATCH_OPT(patches/lxip_log2.patch)         := $(LXIP_OPT)
PATCH_OPT(patches/lxip_netlink.patch)      := $(LXIP_OPT)
PATCH_OPT(patches/lxip_request_sock.patch) := $(LXIP_OPT)
PATCH_OPT(patches/lxip_sk_wq.patch)        := $(LXIP_OPT)
PATCH_OPT(patches/lxip_skbuff_cast.patch)  := $(LXIP_OPT)

# USB HOST
USB_HOST_OPT = -p1 -d$(SRC_DIR_USB_HOST)
PATCH_OPT(patches/usb_host_mem.patch)               := $(USB_HOST_OPT)
PATCH_OPT(patches/usb_host_omap.patch)              := $(USB_HOST_OPT)
PATCH_OPT(patches/usb_host_dwc_otg.patch)           := $(USB_HOST_OPT)
PATCH_OPT(patches/usb_host_isoc_bei.patch)          := $(USB_HOST_OPT)
PATCH_OPT(patches/usb_host_update_event_ring.patch) := $(USB_HOST_OPT)

# USB HID
USB_HID_OPT = -p1 -d$(SRC_DIR_USB_HID)
PATCH_OPT(patches/usb_hid_usbhid.patch)    := $(USB_HID_OPT)
PATCH_OPT(patches/usb_hid_wacom_sys.patch) := $(USB_HID_OPT)
PATCH_OPT(patches/usb_hid_evdev.patch)     := $(USB_HID_OPT)
PATCH_OPT(patches/usb_hid_hid.patch)       := $(USB_HID_OPT)
PATCH_OPT(patches/usb_hid_input.patch)     := $(USB_HID_OPT)

# USB NET
USB_NET_OPT = -p1 -d$(SRC_DIR_USB_NET)
PATCH_OPT(patches/usb_net_skbuff_cast.patch) := $(USB_NET_OPT)

# USB MODEM
USB_MODEM_OPT = -p1 -d$(SRC_DIR_USB_MODEM)
PATCH_OPT(patches/usb_modem_skbuff_cast.patch) := $(USB_MODEM_OPT)

# Freescale NIC
PATCH_OPT(patches/fec_skbuff_cast.patch) := -p1 -d$(SRC_DIR_FEC)
PATCH_OPT(patches/fec_tx_bounce_dma.patch) := -p1 -d$(SRC_DIR_FEC)
PATCH_OPT(patches/fec_tx_sync_dma_write.patch) := -p1 -d$(SRC_DIR_FEC)
PATCH_OPT(patches/fec_ndev_owner.patch) := -p1 -d$(SRC_DIR_FEC)

# vi: set ft=make :
