diff options
196 files changed, 7075 insertions, 700 deletions
@@ -102,7 +102,7 @@ source "target/config/Config.in.runtime" endmenu menu "Kernel configuration" - visible if !ADK_CHOOSE_APPLIANCE + visible if !ADK_CHOOSE_APPLIANCE && ADK_TARGET_KERNEL_CUSTOMISING source "target/linux/Config.in" endmenu diff --git a/mk/build.mk b/mk/build.mk index 214c52e88..d8d1a047c 100644 --- a/mk/build.mk +++ b/mk/build.mk @@ -223,7 +223,7 @@ kernelconfig: ${KERNEL_MAKE_ENV} ${MAKE} \ ARCH=$(ADK_TARGET_ARCH) \ ${KERNEL_MAKE_OPTS} \ - -C $(BUILD_DIR)/linux menuconfig + menuconfig # create a new package from package/.template newpackage: @@ -514,7 +514,7 @@ endif @if [ ! -z "$(ADK_TARGET_SYSTEM)" ];then \ system=$$(echo "$(ADK_TARGET_SYSTEM)" |sed -e "s/-/_/g"); \ grep -h "^config" target/*/Config.in.systems \ - |grep -i "$$system" \ + |grep -i "$$system$$" \ |sed -e "s#^config \(.*\)#\1=y#" \ >> $(ADK_TOPDIR)/all.config; \ fi diff --git a/mk/fetch.mk b/mk/fetch.mk index 5fb13a29e..6365b4c13 100644 --- a/mk/fetch.mk +++ b/mk/fetch.mk @@ -28,7 +28,7 @@ ifeq ($(strip ${PKG_NOCHECKSUM}),) ${_CHECKSUM_COOKIE}: ${FULLDISTFILES} -rm -rf ${WRKDIR} ifneq ($(ADK_DISABLE_CHECKSUM),y) - @if [ ! -e "${FULLDISTFILES}.nohash" ]; then \ + @if [ ! -e $(firstword ${FULLDISTFILES}).nohash ]; then \ OK=n; \ allsums="$(strip ${PKG_HASH})"; \ (shasum -a 256 ${FULLDISTFILES}; echo exit) | while read sum name; do \ diff --git a/mk/image.mk b/mk/image.mk index bd7d66f96..7d982d773 100644 --- a/mk/image.mk +++ b/mk/image.mk @@ -37,7 +37,7 @@ else $(error No login shell configured!) endif -imageprepare: image-prepare-post extra-install +imageprepare: image-prepare-post extra-install prelink # if an extra directory exist in ADK_TOPDIR, copy all content over the # root directory, do the same if make extra=/dir/to/extra is used @@ -79,6 +79,19 @@ ifneq ($(ADK_TARGET_ARCH_AARCH64)$(ADK_TARGET_ARCH_X86_64)$(ADK_TARGET_ARCH_PPC6 (cd ${TARGET_DIR}/usr ; ln -sf ${ADK_TARGET_LIBC_PATH} lib) endif +ifeq (${ADK_PRELINK},) +prelink: +else +${TARGET_DIR}/etc/prelink.conf: + echo '/' > $@ + +prelink: ${TARGET_DIR}/etc/prelink.conf + $(TRACE) target/prelink + ${TARGET_CROSS}prelink ${ADK_PRELINK_OPTS} \ + --ld-library-path=${STAGING_TARGET_DIR}/usr/lib:${STAGING_TARGET_DIR}/lib \ + --root=${TARGET_DIR} -a $(MAKE_TRACE) +endif + KERNEL_PKGDIR:=$(LINUX_BUILD_DIR)/kernel-pkg KERNEL_PKG:=$(PACKAGE_DIR)/kernel_$(KERNEL_VERSION)_$(ADK_TARGET_CPU_ARCH).$(PKG_SUFFIX) TARGET_KERNEL= ${ADK_TARGET_SYSTEM}-${ADK_TARGET_FS}-kernel @@ -203,7 +216,7 @@ ifeq ($(ADK_KERNEL_COMP_BZIP2),y) echo "CONFIG_INITRAMFS_COMPRESSION_BZIP2=y" >> ${LINUX_DIR}/.config endif @-rm $(LINUX_DIR)/usr/initramfs_data.cpio* 2>/dev/null - env $(KERNEL_MAKE_ENV) $(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKE_OPTS) \ + env $(KERNEL_MAKE_ENV) $(MAKE) $(KERNEL_MAKE_OPTS) \ -j${ADK_MAKE_JOBS} $(ADK_TARGET_KERNEL) $(MAKE_TRACE) @cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL) diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk index b66f71132..37570909e 100644 --- a/mk/kernel-build.mk +++ b/mk/kernel-build.mk @@ -35,18 +35,18 @@ $(LINUX_DIR)/.config: $(LINUX_DIR)/.prepared $(BUILD_DIR)/.kernelconfig $(ADK_TO $(TRACE) target/$(ADK_TARGET_ARCH)-kernel-configure -for f in $(TARGETS);do if [ -f $$f ];then rm $$f;fi;done $(CP) $(BUILD_DIR)/.kernelconfig $(LINUX_DIR)/mini.config - ${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} KCONFIG_ALLCONFIG=mini.config allnoconfig $(MAKE_TRACE) + ${KERNEL_MAKE_ENV} $(MAKE) ${KERNEL_MAKE_OPTS} KCONFIG_ALLCONFIG=mini.config allnoconfig $(MAKE_TRACE) touch -c $(LINUX_DIR)/.config $(LINUX_DIR)/$(KERNEL_FILE): $(LINUX_DIR)/.config $(TRACE) target/$(ADK_TARGET_ARCH)-kernel-compile - ${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} -j${ADK_MAKE_JOBS} LOCALVERSION="" $(KERNEL_TARGET) modules $(MAKE_TRACE) + ${KERNEL_MAKE_ENV} $(MAKE) ${KERNEL_MAKE_OPTS} -j${ADK_MAKE_JOBS} LOCALVERSION="" $(KERNEL_TARGET) modules $(MAKE_TRACE) touch -c $(LINUX_DIR)/$(KERNEL_FILE) $(LINUX_BUILD_DIR)/modules: $(LINUX_DIR)/$(KERNEL_FILE) $(TRACE) target/$(ADK_TARGET_ARCH)-kernel-modules-install rm -rf $(LINUX_BUILD_DIR)/modules - ${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} DEPMOD=true \ + ${KERNEL_MAKE_ENV} $(MAKE) ${KERNEL_MAKE_OPTS} DEPMOD=true \ INSTALL_MOD_PATH=$(LINUX_BUILD_DIR)/modules \ LOCALVERSION="" \ modules_install $(MAKE_TRACE) diff --git a/mk/kernel-vars.mk b/mk/kernel-vars.mk index 17a8d23a2..89ba10dd9 100644 --- a/mk/kernel-vars.mk +++ b/mk/kernel-vars.mk @@ -1,7 +1,7 @@ # This file is part of the OpenADK project. OpenADK is copyrighted # material, please see the LICENCE file in the top-level directory. -KERNEL_MAKE_OPTS:= V=1 \ +KERNEL_MAKE_OPTS:= V=1 -C "${LINUX_DIR}" \ ARCH="$(ADK_TARGET_KARCH)" \ CROSS_COMPILE="$(TARGET_CROSS)" \ CC="$(TARGET_CC)" \ diff --git a/mk/kernel-ver.mk b/mk/kernel-ver.mk index fa0ac4e39..6404b6ef5 100644 --- a/mk/kernel-ver.mk +++ b/mk/kernel-ver.mk @@ -4,11 +4,11 @@ KERNEL_MOD_VERSION:= $(KERNEL_VERSION).0 KERNEL_RELEASE:= 1 KERNEL_HASH:= be42511fe5321012bb4a2009167ce56a9e5fe362b4af43e8c371b3666859806c endif -ifeq ($(ADK_KERNEL_VERSION_3_18_6),y) -KERNEL_VERSION:= 3.18.6 +ifeq ($(ADK_KERNEL_VERSION_3_18_8),y) +KERNEL_VERSION:= 3.18.8 KERNEL_MOD_VERSION:= $(KERNEL_VERSION) KERNEL_RELEASE:= 1 -KERNEL_HASH:= c4c1a4841173aa572d79b7530db92ce493dbefe8049e6f461a46dd897df253f5 +KERNEL_HASH:= 9cfbd9d403f2b27951893f5ed73f694f65409c63f20a2fd394598a3d7004aadb endif ifeq ($(ADK_KERNEL_VERSION_3_14_28),y) KERNEL_VERSION:= 3.14.28 diff --git a/mk/modules.mk b/mk/modules.mk index ccb48ba3e..3bf580ec1 100644 --- a/mk/modules.mk +++ b/mk/modules.mk @@ -473,13 +473,13 @@ $(eval $(call KMOD_template,NF_CONNTRACK,nf-conntrack,\ $(MODULES_DIR)/kernel/net/netfilter/xt_conntrack \ ,41)) -$(eval $(call KMOD_template,NETFILTER_XT_NAT,netfilter-xt-nat,\ - $(MODULES_DIR)/kernel/net/netfilter/xt_nat \ -,40)) - $(eval $(call KMOD_template,NF_NAT,nf-nat,\ $(MODULES_DIR)/kernel/net/netfilter/nf_nat \ -,45)) +,42)) + +$(eval $(call KMOD_template,NETFILTER_XT_NAT,netfilter-xt-nat,\ + $(MODULES_DIR)/kernel/net/netfilter/xt_nat \ +,43)) $(eval $(call KMOD_template,NF_CONNTRACK_IPV4,nf-conntrack-ipv4,\ $(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_defrag_ipv4 \ @@ -488,6 +488,7 @@ $(eval $(call KMOD_template,NF_CONNTRACK_IPV4,nf-conntrack-ipv4,\ $(eval $(call KMOD_template,NF_NAT_IPV4,nf-nat-ipv4,\ $(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat_ipv4 \ + $(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat_masquerade_ipv4 \ ,50)) $(eval $(call KMOD_template,IP_NF_NAT,ip-nf-nat,\ @@ -588,6 +589,7 @@ $(eval $(call KMOD_template,IP_NF_FILTER,ip-nf-filter,\ ,55)) $(eval $(call KMOD_template,IP_NF_TARGET_REJECT,ip-nf-target-reject,\ + $(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_reject_ipv4 \ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_REJECT \ ,60)) @@ -677,6 +679,7 @@ $(eval $(call KMOD_template,IP6_NF_FILTER,ip6-nf-filter,\ ,55)) $(eval $(call KMOD_template,IP6_NF_TARGET_REJECT,ip6-nf-target-reject,\ + $(MODULES_DIR)/kernel/net/ipv6/netfilter/nf_reject_ipv6 \ $(MODULES_DIR)/kernel/net/ipv6/netfilter/ip6t_REJECT \ ,60)) @@ -1099,6 +1102,7 @@ $(eval $(call KMOD_template,RPCSEC_GSS_KRB5,rpcsec-gss-krb5,\ ,26)) $(eval $(call KMOD_template,LOCKD,lockd,\ + $(MODULES_DIR)/kernel/fs/nfs_common/grace \ $(MODULES_DIR)/kernel/fs/lockd/lockd \ ,27)) diff --git a/mk/os.mk b/mk/os.mk new file mode 100644 index 000000000..38a2e53f3 --- /dev/null +++ b/mk/os.mk @@ -0,0 +1,11 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +# operating system quirks +ifeq (${OStype},Darwin) +HOST_CC:=clang -fbracket-depth=1024 +HOST_CXX:=clang++ -fbracket-depth=1024 +else +HOST_CC:=${CC} +HOST_CXX:=${CXX} +endif diff --git a/mk/package.mk b/mk/package.mk index 65d9c8f9f..3b27d1278 100644 --- a/mk/package.mk +++ b/mk/package.mk @@ -308,7 +308,7 @@ clean-targets: clean: @$(CMD_TRACE) "cleaning... " @$(MAKE) clean-targets $(MAKE_TRACE) - rm -rf ${WRKDIR} ${ALL_IPKGS} ${STAGING_PKG_DIR}/stamps/${PKG_NAME}${PKG_VERSION} + rm -rf ${WRKDIR} ${ALL_IPKGS} ${_IPKGS_COOKIE} distclean: clean rm -f ${FULLDISTFILES} diff --git a/mk/vars.mk b/mk/vars.mk index 73929643c..605248a37 100644 --- a/mk/vars.mk +++ b/mk/vars.mk @@ -107,6 +107,7 @@ TARGET_LDFLAGS:= -L$(STAGING_TARGET_DIR)/lib -L$(STAGING_TARGET_DIR)/usr/lib \ -Wl,-O1 -Wl,-rpath -Wl,/usr/lib \ -Wl,-rpath-link -Wl,${STAGING_TARGET_DIR}/usr/lib +# for archiectures where gcc --with-cpu matches -mcpu= ifneq ($(ADK_TARGET_GCC_CPU),) ifeq ($(ADK_CPU_ARC700),y) TARGET_CFLAGS+= -mcpu=ARC700 @@ -117,16 +118,44 @@ TARGET_CXXFLAGS+= -mcpu=$(ADK_TARGET_GCC_CPU) endif endif +# for archiectures where gcc --with-arch matches -march= ifneq ($(ADK_TARGET_GCC_ARCH),) TARGET_CFLAGS+= -march=$(ADK_TARGET_GCC_ARCH) TARGET_CXXFLAGS+= -march=$(ADK_TARGET_GCC_ARCH) endif +ifneq ($(ADK_TARGET_CPU_FLAGS),) +TARGET_CFLAGS+= $(ADK_TARGET_CPU_FLAGS) +TARGET_CXXFLAGS+= $(ADK_TARGET_CPU_FLAGS) +endif + +ifneq ($(ADK_TARGET_FPU),) +TARGET_CFLAGS+= -mfpu=$(ADK_TARGET_FPU) +TARGET_CXXFLAGS+= -mfpu=$(ADK_TARGET_FPU) +endif + +ifneq ($(ADK_TARGET_FLOAT),) +ifeq ($(ADK_TARGET_ARCH_ARM),y) +TARGET_CFLAGS+= -mfloat-abi=$(ADK_TARGET_FLOAT) +TARGET_CXXFLAGS+= -mfloat-abi=$(ADK_TARGET_FLOAT) +endif +ifeq ($(ADK_TARGET_ARCH_MIPS),y) +TARGET_CFLAGS+= -m$(ADK_TARGET_FLOAT)-float +TARGET_CXXFLAGS+= -m$(ADK_TARGET_FLOAT)-float +endif +endif + +ifeq ($(ADK_TARGET_ARCH_ARM),y) ifeq ($(ADK_TARGET_BINFMT_FLAT),y) -TARGET_LDFLAGS+= -elf2flt +TARGET_CFLAGS+= -Wl,-elf2flt +TARGET_CXXFLAGS+= -Wl,-elf2flt +endif endif ifeq ($(ADK_TARGET_ARCH_M68K),y) +ifeq ($(ADK_TARGET_BINFMT_FLAT),y) +TARGET_LDFLAGS+= -elf2flt +endif ifeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y) TARGET_CFLAGS+= -msep-data TARGET_CXXFLAGS+= -msep-data @@ -215,6 +244,10 @@ TARGET_CXXFLAGS+= -fno-unwind-tables -fno-asynchronous-unwind-tables endif ifeq ($(ADK_TARGET_ARCH_ARM),y) +ifeq ($(ADK_TARGET_CPU_WITH_NEON),y) +TARGET_CFLAGS+= -funsafe-math-optimizations +TARGET_CXXFLAGS+= -funsafe-math-optimizations +endif ifeq ($(ADK_TARGET_ARCH_ARM_WITH_THUMB),y) TARGET_CFLAGS+= -mthumb -Wa,-mimplicit-it=thumb TARGET_CXXFLAGS+= -mthumb -Wa,-mimplicit-it=thumb diff --git a/package/aufs-util/Makefile b/package/aufs-util/Makefile new file mode 100644 index 000000000..fc57c7bb6 --- /dev/null +++ b/package/aufs-util/Makefile @@ -0,0 +1,44 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= aufs-util +# branch aufs3.x-rcN (of around June 6th, 2014) +PKG_VERSION:= a0eb20c75c07299bfc50c3d80023e1d22c86b4cc +PKG_RELEASE:= 1 +PKG_DESCR:= aufs utilities (version 3 and above) +PKG_SECTION:= sys/fs +PKG_URL:= http://aufs.sf.net/ +PKG_SITES:= git://aufs.git.sourceforge.net/gitroot/aufs/aufs-util + +PKG_SUBPKGS:= AUFS_UTIL LIBAU +PKGSD_LIBAU:= aufs userspace library +PKGSC_LIBAU:= libs/misc + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,AUFS_UTIL,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) +$(eval $(call PKG_template,LIBAU,libau,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_LIBAU),$(PKGSC_LIBAU))) + +CONFIG_STYLE:= manual +XAKE_FLAGS+= Install=install \ + HOSTCC="$(HOST_CC)" \ + CPPFLAGS_FOR_BUILD="-I$(STAGING_TARGET_DIR)/usr/include -I./libau" + +aufs-util-install: + $(INSTALL_DIR) $(IDIR_AUFS_UTIL)/sbin + $(INSTALL_BIN) $(WRKINST)/sbin/{{u,}mount.aufs,auplink} \ + $(IDIR_AUFS_UTIL)/sbin + $(INSTALL_DIR) $(IDIR_AUFS_UTIL)/usr/bin + $(INSTALL_BIN) $(WRKINST)/usr/bin/au{brsync,chk} \ + $(IDIR_AUFS_UTIL)/usr/bin + $(INSTALL_DIR) $(IDIR_AUFS_UTIL)/etc/default + $(INSTALL_DATA) $(WRKINST)/etc/default/aufs \ + $(IDIR_AUFS_UTIL)/etc/default + +libau-install: + $(INSTALL_DIR) $(IDIR_LIBAU)/usr/lib + $(CP) $(WRKINST)/usr/lib/libau* $(IDIR_LIBAU)/usr/lib + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/aufs-util/patches/patch-Makefile b/package/aufs-util/patches/patch-Makefile new file mode 100644 index 000000000..0253076f1 --- /dev/null +++ b/package/aufs-util/patches/patch-Makefile @@ -0,0 +1,23 @@ + - Ensure correct (HOST-)FLAGS when compiling the intermediates + - Drop version test, this cant work anyway since there is no aufs3.12 branch anywhere +--- w-aufs-util-3.x-rcN-050614-1.orig/Makefile 2014-05-06 15:36:53.000000000 +0200 ++++ w-aufs-util-3.x-rcN-050614-1/Makefile 2014-06-05 14:32:53.496611173 +0200 +@@ -49,7 +49,7 @@ LibUtilObj = perror.o proc_mnt.o br.o pl + LibUtilHdr = au_util.h + export + +-all: ver_test ${Man} ${Bin} ${Etc} ++all: ${Man} ${Bin} ${Etc} + ${MAKE} -C libau $@ + ln -sf ./libau/libau*.so . + +@@ -85,6 +85,9 @@ aufs.5: aufs.in.5 c2tmac + chmod a-w $@ + + c2sh c2tmac ver: CC = ${HOSTCC} ++c2sh c2tmac ver: CFLAGS = ${CFLAGS_FOR_BUILD} ++c2sh c2tmac ver: LDFLAGS = ${LDFLAGS_FOR_BUILD} ++c2sh c2tmac ver: CPPFLAGS = ${CPPFLAGS_FOR_BUILD} + .INTERMEDIATE: c2sh c2tmac ver + + Install = install -o root -g root -p diff --git a/package/automake/Makefile b/package/automake/Makefile index b94044169..985db66da 100644 --- a/package/automake/Makefile +++ b/package/automake/Makefile @@ -1,39 +1,38 @@ # This file is part of the OpenADK project. OpenADK is copyrighted # material, please see the LICENCE file in the top-level directory. -include ${ADK_TOPDIR}/rules.mk +include $(ADK_TOPDIR)/rules.mk PKG_NAME:= automake -PKG_VERSION:= 1.14.1 +PKG_VERSION:= 1.15 PKG_RELEASE:= 1 -PKG_EXTRAVER:= 1.14 -PKG_HASH:= a9b4f04b8b69cac2e832a38a718943aa976dbdad0097211f8b3448afdacf0669 +PKG_HASH:= 9908c75aabd49d13661d6dcb1bc382252d22cc77bf733a2d55e87f2aa2db8636 PKG_DESCR:= tool for automatically generating makefiles PKG_SECTION:= dev/tools PKG_BUILDDEP:= m4-host autoconf-host autoconf HOST_BUILDDEP:= autoconf-host PKG_URL:= http://www.gnu.org/software/automake/ -PKG_SITES:= ${MASTER_SITE_GNU:=automake/} +PKG_SITES:= $(MASTER_SITE_GNU:=automake/) PKG_OPTS:= noscripts -include ${ADK_TOPDIR}/mk/host.mk -include ${ADK_TOPDIR}/mk/package.mk +include $(ADK_TOPDIR)/mk/host.mk +include $(ADK_TOPDIR)/mk/package.mk -$(eval $(call HOST_template,AUTOMAKE,automake,${PKG_VERSION}-${PKG_RELEASE})) -$(eval $(call PKG_template,AUTOMAKE,automake,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) +$(eval $(call HOST_template,AUTOMAKE,automake,$(PKG_VERSION)-$(PKG_RELEASE))) +$(eval $(call PKG_template,AUTOMAKE,automake,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) XAKE_FLAGS+= PERL="/usr/bin/perl" automake-install: - ${INSTALL_DIR} ${IDIR_AUTOMAKE}/usr/bin - ${INSTALL_BIN} ${WRKINST}/usr/bin/automake ${IDIR_AUTOMAKE}/usr/bin - ${INSTALL_BIN} ${WRKINST}/usr/bin/aclocal ${IDIR_AUTOMAKE}/usr/bin - ${INSTALL_DIR} ${IDIR_AUTOMAKE}/usr/share/aclocal-${PKG_EXTRAVER} - ${CP} ${WRKINST}/usr/share/aclocal-${PKG_EXTRAVER} \ - ${IDIR_AUTOMAKE}/usr/share - ${INSTALL_DIR} ${IDIR_AUTOMAKE}/usr/share/automake-${PKG_EXTRAVER} - ${CP} ${WRKINST}/usr/share/automake-${PKG_EXTRAVER} \ - ${IDIR_AUTOMAKE}/usr/share + $(INSTALL_DIR) $(IDIR_AUTOMAKE)/usr/bin + $(INSTALL_BIN) $(WRKINST)/usr/bin/automake $(IDIR_AUTOMAKE)/usr/bin + $(INSTALL_BIN) $(WRKINST)/usr/bin/aclocal $(IDIR_AUTOMAKE)/usr/bin + $(INSTALL_DIR) $(IDIR_AUTOMAKE)/usr/share/aclocal-$(PKG_VERSION) + $(CP) $(WRKINST)/usr/share/aclocal-$(PKG_VERSION) \ + $(IDIR_AUTOMAKE)/usr/share + $(INSTALL_DIR) $(IDIR_AUTOMAKE)/usr/share/automake-$(PKG_VERSION) + $(CP) $(WRKINST)/usr/share/automake-$(PKG_VERSION) \ + $(IDIR_AUTOMAKE)/usr/share -include ${ADK_TOPDIR}/mk/host-bottom.mk -include ${ADK_TOPDIR}/mk/pkg-bottom.mk +include $(ADK_TOPDIR)/mk/host-bottom.mk +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/busybox/Makefile b/package/busybox/Makefile index 0ea1073f1..088a29397 100644 --- a/package/busybox/Makefile +++ b/package/busybox/Makefile @@ -28,7 +28,8 @@ BB_MAKE_FLAGS:= V=1 \ IPKG_ARCH="${ADK_TARGET_CPU_ARCH}" \ HOSTCC="${CC_FOR_BUILD}" \ HOSTCFLAGS="$(CFLAGS_FOR_BUILD)" \ - CROSS_COMPILE="$(TARGET_CROSS)" + CROSS_COMPILE="$(TARGET_CROSS)" \ + SKIP_STRIP=y do-configure: # get all symbols from top level config diff --git a/package/busybox/config/networking/Config.in b/package/busybox/config/networking/Config.in index 6e68fc786..d5bbad0ef 100644 --- a/package/busybox/config/networking/Config.in +++ b/package/busybox/config/networking/Config.in @@ -488,6 +488,7 @@ config BUSYBOX_FEATURE_IFUPDOWN_IP_BUILTIN bool "Use busybox ip applet" default y depends on BUSYBOX_FEATURE_IFUPDOWN_IP + depends on !ADK_PACKAGE_IP select BUSYBOX_PLATFORM_LINUX select BUSYBOX_IP select BUSYBOX_FEATURE_IP_ADDRESS diff --git a/package/bzip2/Makefile b/package/bzip2/Makefile index abd670592..bbbbfecc9 100644 --- a/package/bzip2/Makefile +++ b/package/bzip2/Makefile @@ -39,6 +39,7 @@ BIN_FILE:= bzip2-shared else BIN_FILE:= bzip2 endif + CONFIG_STYLE:= manual TARGET_CFLAGS+= -fPIC XAKE_FLAGS+= PREFIX=${WRKINST}/usr CROSS_COMPILE=1 @@ -52,6 +53,11 @@ bzip2-hostinstall: ${INSTALL_DIR} ${STAGING_HOST_DIR}/usr/bin $(INSTALL_BIN) ${WRKBUILD}/bzip2 ${STAGING_HOST_DIR}/usr/bin/bzip2 +do-install: + ${INSTALL_DIR} $(STAGING_TARGET_DIR)/usr/include + $(CP) $(WRKBUILD)/bzlib.h $(STAGING_TARGET_DIR)/usr/include + $(CP) ${WRKBUILD}/libbz2.a ${STAGING_TARGET_DIR}/usr/lib + libbz2-install: ${INSTALL_DIR} ${IDIR_LIBBZ2}/usr/lib $(CP) ${WRKBUILD}/libbz2.so* \ @@ -59,7 +65,6 @@ libbz2-install: $(CP) ${WRKBUILD}/libbz2.so* \ ${STAGING_TARGET_DIR}/usr/lib (cd ${STAGING_TARGET_DIR}/usr/lib; ln -sf libbz2.so.1.0.6 libbz2.so) - $(CP) $(WRKBUILD)/bzlib.h $(STAGING_TARGET_DIR)/usr/include ${INSTALL_DIR} $(IDIR_LIBBZ2_DEV)/usr/include $(CP) $(WRKBUILD)/bzlib.h $(IDIR_LIBBZ2_DEV)/usr/include diff --git a/package/cairo/Makefile b/package/cairo/Makefile index a3cba33f8..146876d44 100644 --- a/package/cairo/Makefile +++ b/package/cairo/Makefile @@ -4,9 +4,9 @@ include ${ADK_TOPDIR}/rules.mk PKG_NAME:= cairo -PKG_VERSION:= 1.12.16 -PKG_RELEASE:= 4 -PKG_HASH:= 2505959eb3f1de3e1841023b61585bfd35684b9733c7b6a3643f4f4cbde6d846 +PKG_VERSION:= 1.14.0 +PKG_RELEASE:= 1 +PKG_HASH:= 2cf5f81432e77ea4359af9dcd0f4faf37d015934501391c311bfd2d19a0134b7 PKG_DESCR:= cairo graphics library PKG_SECTION:= libs/image PKG_DEPENDS:= fontconfig libfreetype libx11 pixman @@ -35,8 +35,6 @@ include ${ADK_TOPDIR}/mk/package.mk $(eval $(call HOST_template,CAIRO,cairo,${PKG_VERSION}-${PKG_RELEASE})) $(eval $(call PKG_template,CAIRO,cairo,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) - - HOST_CONFIGURE_ARGS+= --enable-ft=yes \ --enable-png=yes \ --enable-fc=yes \ @@ -88,8 +86,6 @@ else CONFIGURE_ARGS+= --enable-tee=no endif - - CONFIGURE_ARGS+= --enable-ft=yes \ --enable-fc=yes \ --enable-xlib=yes \ diff --git a/package/cairo/patches/patch-Makefile_in b/package/cairo/patches/patch-Makefile_in index 266149788..8716b0820 100644 --- a/package/cairo/patches/patch-Makefile_in +++ b/package/cairo/patches/patch-Makefile_in @@ -1,6 +1,6 @@ ---- cairo-1.12.16.orig/Makefile.in 2013-08-26 19:00:44.000000000 +0200 -+++ cairo-1.12.16/Makefile.in 2014-02-10 14:44:58.000000000 +0100 -@@ -80,7 +80,7 @@ EXTRA_PROGRAMS = +--- cairo-1.14.0.orig/Makefile.in 2014-10-14 03:47:28.000000000 +0200 ++++ cairo-1.14.0/Makefile.in 2015-02-26 11:39:05.000000000 +0100 +@@ -63,7 +63,7 @@ EXTRA_PROGRAMS = TESTS = check_PROGRAMS = # libpng is required for our test programs @@ -9,7 +9,7 @@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ -@@ -439,7 +439,7 @@ MAINTAINERCLEANFILES = Makefile.in $(src +@@ -417,7 +417,7 @@ MAINTAINERCLEANFILES = Makefile.in $(src # $(srcdir)/build/Makefile.win32.features-h \ # $(NULL) ACLOCAL_AMFLAGS = -I build ${ACLOCAL_FLAGS} diff --git a/package/cairo/patches/patch-configure b/package/cairo/patches/patch-configure new file mode 100644 index 000000000..9e0f39f0d --- /dev/null +++ b/package/cairo/patches/patch-configure @@ -0,0 +1,101 @@ +--- cairo-1.14.0.orig/configure 2014-10-14 03:47:29.000000000 +0200 ++++ cairo-1.14.0/configure 2015-02-26 13:27:59.000000000 +0100 +@@ -18371,7 +18371,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false ; then + cairo_cc_flag=no + fi + +@@ -18418,7 +18418,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false ; then + cairo_cc_flag=no + fi + +@@ -18469,7 +18469,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false ; then + cairo_cc_flag=no + fi + +@@ -18516,7 +18516,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false ; then + cairo_cc_flag=no + fi + +@@ -18585,7 +18585,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false ; then + cairo_cc_flag=no + fi + +@@ -18641,7 +18641,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false ; then + cairo_cc_flag=no + fi + +@@ -20089,7 +20089,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false ; then + cairo_cc_flag=no + fi + +@@ -20136,7 +20136,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false ; then + cairo_cc_flag=no + fi + +@@ -33208,7 +33208,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false ; then + cairo_cc_flag=no + fi + +@@ -33327,7 +33327,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false ; then + cairo_cc_flag=no + fi + +@@ -33408,7 +33408,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + diff --git a/package/capi4k-utils/Makefile b/package/capi4k-utils/Makefile new file mode 100644 index 000000000..0ac58e978 --- /dev/null +++ b/package/capi4k-utils/Makefile @@ -0,0 +1,48 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= capi4k-utils +PKG_VERSION:= 2005-07-18 +PKG_RELEASE:= 1 +PKG_HASH:= b162d726a31310fc29e7c0a25a4f82a590457f6a95c1b1168bcd72b6497b5746 +PKG_DESCR:= capi4linux utils +PKG_SECTION:= net/voip +PKG_SITES:= ftp://ftp.in-berlin.de/pub/capi4linux/ + +PKG_CFLINE_CAPI4K_UTILS:=depends on ADK_BROKEN + +DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz +WRKDIST= $(WRKDIR)/$(PKG_NAME) + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,CAPI4K_UTILS,capi4k-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:= manual +XAKE_FLAGS+= PPPVERSIONS=2.4.5 + +do-configure: + echo "CONFIG_KERNELDIR='$(LINUX_DIR)'" >$(WRKDIST)/.config + echo "CONFIG_BINDIR='/usr/bin'" >>$(WRKDIST)/.config + echo "CONFIG_SBINDIR='/usr/sbin'" >>$(WRKDIST)/.config + echo "CONFIG_MANDIR='/usr/man'" >>$(WRKDIST)/.config + echo "CONFIG_RCAPID=y" >>$(WRKDIST)/.config + echo "CONFIG_PPPDCAPIPLUGIN=y" >>$(WRKDIST)/.config + (cd $(WRKDIST); \ + cp Makefile Makefile.tmp; \ + $(MAKE_ENV) $(MAKE) $(MAKE_FLAGS) -f Makefile.tmp subconfig; \ + rm -f Makefile.tmp; \ + ) + +capi4k-utils-install: + $(INSTALL_DIR) $(IDIR_CAPI4K_UTILS)/usr/{bin,lib/pppd/2.4.5} + $(INSTALL_BIN) $(WRKINST)/usr/bin/capiinfo \ + $(IDIR_CAPI4K_UTILS)/usr/bin + $(CP) $(WRKINST)/usr/lib/libcapi20.so* \ + $(IDIR_CAPI4K_UTILS)/usr/lib + $(INSTALL_DATA) $(WRKINST)/usr/lib/pppd/2.4.5/*.so \ + $(IDIR_CAPI4K_UTILS)/usr/lib/pppd/2.4.5 + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/capi4k-utils/patches/patch-Makefile b/package/capi4k-utils/patches/patch-Makefile new file mode 100644 index 000000000..08e26f592 --- /dev/null +++ b/package/capi4k-utils/patches/patch-Makefile @@ -0,0 +1,42 @@ + - pass CC, CFLAGS and LDFLAGS when running subdir configure and make + - install without root-permissions, do not create device nodes + - need to pass PPPVERSIONS to subtargets +--- capi4k-utils.orig/Makefile 2002-11-20 14:45:14.000000000 +0100 ++++ capi4k-utils/Makefile 2011-07-15 14:15:21.446001582 +0200 +@@ -53,7 +53,7 @@ ifneq ($(SUBDIRS),) + endif + + subtargets: $(CONFIGURATION) +- set -e; for i in `echo $(SUBDIRS)`; do $(MAKE) -C $$i all; done ++ set -e; for i in `echo $(SUBDIRS)`; do CC="${CC}" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" PPPVERSIONS="${PPPVERSIONS}" $(MAKE) -C $$i all; done + + rootperm: + @echo 'main(int argc,char**argv){unlink(argv[0]);return(getuid()==0);}'>g +@@ -62,16 +62,10 @@ rootperm: + exit 1; \ + fi + +-install: rootperm ++install: + set -e; for i in `echo $(SUBDIRS)`; do $(MAKE) -C $$i install; done +- @if [ -c $(DESTDIR)/dev/isdnctrl0 ] && ls -l $(DESTDIR)/dev/isdnctrl0 | egrep "[[:space:]]45,[[:space:]]+64[[:space:]]" > /dev/null; \ +- then \ +- echo -e '(some) ISDN devices already exist, not creating them.\nUse scripts/makedev.sh manually if necessary.'; \ +- else \ +- sh scripts/makedev.sh $(DESTDIR) ; \ +- fi + +-uninstall: rootperm ++uninstall: + set -e; for i in `echo $(SUBDIRS)`; do $(MAKE) -C $$i uninstall; done + + # +@@ -134,7 +128,7 @@ subconfig: scripts/autoconf.h + @set -e; for i in `echo $(SUBDIRS)`; do \ + if [ -x $$i/configure ] ; then \ + echo -e "\nRunning configure in $$i ...\n"; sleep 1; \ +- (cd $$i; ./configure --sbindir=$(CONFIG_SBINDIR) --bindir=$(CONFIG_BINDIR) --mandir=$(CONFIG_MANDIR) || $(MAKE) -C ../ ERRDIR=$$i cfgerror); \ ++ (cd $$i; CC="${CC}" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" ./configure --sbindir=$(CONFIG_SBINDIR) --bindir=$(CONFIG_BINDIR) --mandir=$(CONFIG_MANDIR) || $(MAKE) -C ../ ERRDIR=$$i cfgerror); \ + elif [ -f $$i/Makefile.in ] ; then \ + echo -e "\nRunning make -f Makefile.in config in $$i ...\n"; sleep 1; \ + $(MAKE) -C $$i -f Makefile.in config; \ diff --git a/package/capi4k-utils/patches/patch-capi20_capi20_h b/package/capi4k-utils/patches/patch-capi20_capi20_h new file mode 100644 index 000000000..856eaba79 --- /dev/null +++ b/package/capi4k-utils/patches/patch-capi20_capi20_h @@ -0,0 +1,11 @@ + - somehow this header misses sys/types.h (for size_t definition) +--- capi4k-utils.orig/capi20/capi20.h 2000-11-19 11:15:01.000000000 +0100 ++++ capi4k-utils/capi20/capi20.h 2011-07-14 17:26:51.680001337 +0200 +@@ -21,6 +21,7 @@ + #define __CAPI20_H__ + + #include <sys/time.h> ++#include <sys/types.h> + + #ifdef __cplusplus + extern "C" { diff --git a/package/capi4k-utils/patches/patch-capiinfo_Makefile_in b/package/capi4k-utils/patches/patch-capiinfo_Makefile_in new file mode 100644 index 000000000..5a5ae1c4b --- /dev/null +++ b/package/capi4k-utils/patches/patch-capiinfo_Makefile_in @@ -0,0 +1,18 @@ + allow CFLAGS override +--- capi4k-utils.orig/capiinfo/Makefile.in 2002-11-27 09:08:04.000000000 +0100 ++++ capi4k-utils/capiinfo/Makefile.in 2011-07-14 18:55:40.657001559 +0200 +@@ -72,10 +72,10 @@ CLEANFILES = *~ comperr + MAINTAINERCLEANFILES = configure aclocal.m4 Makefile.in config.h.in stamp-h.in comperr + + +-INCLUDES = -I../capi20 $(all_includes) +-CFLAGS = -Wall -O2 +-LDFLAGS = -L../capi20/.libs -L../capi20 $(all_libraries) +-LDADD = -lcapi20 ++INCLUDES += -I../capi20 $(all_includes) ++CFLAGS += -Wall -O2 ++LDFLAGS += -L../capi20/.libs -L../capi20 $(all_libraries) ++LDADD += -lcapi20 + + bin_PROGRAMS = capiinfo + diff --git a/package/capi4k-utils/patches/patch-pppdcapiplugin_Rules_make b/package/capi4k-utils/patches/patch-pppdcapiplugin_Rules_make new file mode 100644 index 000000000..cd54324e6 --- /dev/null +++ b/package/capi4k-utils/patches/patch-pppdcapiplugin_Rules_make @@ -0,0 +1,18 @@ + allow CC, CFLAGS and LDFLAGS override +--- capi4k-utils.orig/pppdcapiplugin/Rules.make 2001-05-01 14:43:49.000000000 +0200 ++++ capi4k-utils/pppdcapiplugin/Rules.make 2011-07-14 17:13:53.567001779 +0200 +@@ -10,11 +10,11 @@ + + vpath %.c $(TOPDIR) + +-CC = gcc ++CC ?= gcc + INC = -I$(TOPDIR) -I$(CAPIINC) -Ipppd + DEFS = -DPPPVER=$(shell $(TOPDIR)/pversion $(PPPVERSION)) +-CFLAGS = -O2 -Wall -fPIC $(DEFS) $(INC) -L$(CAPILIB) +-LDFLAGS = -shared -L$(CAPILIB) ++CFLAGS += -O2 -Wall -fPIC $(DEFS) $(INC) -L$(CAPILIB) ++LDFLAGS += -shared -L$(CAPILIB) + + ALL = capiplugin.so userpass.so + diff --git a/package/capi4k-utils/patches/patch-rcapid_Makefile_in b/package/capi4k-utils/patches/patch-rcapid_Makefile_in new file mode 100644 index 000000000..135d5fe25 --- /dev/null +++ b/package/capi4k-utils/patches/patch-rcapid_Makefile_in @@ -0,0 +1,23 @@ + allow overriding things +--- capi4k-utils.orig/rcapid/Makefile.in 2003-06-16 13:44:29.000000000 +0200 ++++ capi4k-utils/rcapid/Makefile.in 2011-07-14 19:01:46.376001436 +0200 +@@ -57,7 +57,7 @@ POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : +-CC = @CC@ ++CC ?= @CC@ + CONFIG_MANDIR = @CONFIG_MANDIR@ + CONFIG_SBINDIR = @CONFIG_SBINDIR@ + CPP = @CPP@ +@@ -72,8 +72,8 @@ MAINTAINERCLEANFILES = configure aclocal + + + INCLUDES = -I../capi20 $(all_includes) +-CFLAGS = -Wall -O2 +-LDFLAGS = -L../capi20/.libs -L../capi20 $(all_libraries) ++CFLAGS += -Wall -O2 ++LDFLAGS += -L../capi20/.libs -L../capi20 $(all_libraries) + LDADD = -lcapi20 + + sbin_PROGRAMS = rcapid diff --git a/package/capi4k-utils/src/pppdcapiplugin/ppp-2.4.5/Makefile b/package/capi4k-utils/src/pppdcapiplugin/ppp-2.4.5/Makefile new file mode 100755 index 000000000..d12b2373a --- /dev/null +++ b/package/capi4k-utils/src/pppdcapiplugin/ppp-2.4.5/Makefile @@ -0,0 +1,14 @@ +# Makefile for the capiplugin for pppd(8). +# +# Copyright 2000 Carsten Paeth (calle@calle.in-berlin.de) +# Copyright 2000 AVM GmbH Berlin (info@avm.de) +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version +# 2 of the License, or (at your option) any later version. + +PLUGINDIR=${DESTDIR}/usr/lib/pppd/$(PPPVERSION) + +include $(TOPDIR)/Rules.make + diff --git a/package/capi4k-utils/src/pppdcapiplugin/ppp-2.4.5/pppd/patchlevel.h b/package/capi4k-utils/src/pppdcapiplugin/ppp-2.4.5/pppd/patchlevel.h new file mode 100644 index 000000000..b7d6ce335 --- /dev/null +++ b/package/capi4k-utils/src/pppdcapiplugin/ppp-2.4.5/pppd/patchlevel.h @@ -0,0 +1,2 @@ +#define VERSION "2.4.5" +#define DATE "17 November 2009" diff --git a/package/capi4k-utils/src/pppdcapiplugin/ppp-2.4.5/pppd/pppd.h b/package/capi4k-utils/src/pppdcapiplugin/ppp-2.4.5/pppd/pppd.h new file mode 100644 index 000000000..cf9840a41 --- /dev/null +++ b/package/capi4k-utils/src/pppdcapiplugin/ppp-2.4.5/pppd/pppd.h @@ -0,0 +1,909 @@ +/* + * pppd.h - PPP daemon global declarations. + * + * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name "Carnegie Mellon University" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For permission or any legal + * details, please contact + * Office of Technology Transfer + * Carnegie Mellon University + * 5000 Forbes Avenue + * Pittsburgh, PA 15213-3890 + * (412) 268-4387, fax: (412) 268-7395 + * tech-transfer@andrew.cmu.edu + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Computing Services + * at Carnegie Mellon University (http://www.cmu.edu/computing/)." + * + * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE + * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $Id: pppd.h,v 1.96 2008/06/23 11:47:18 paulus Exp $ + */ + +/* + * TODO: + */ + +#ifndef __PPPD_H__ +#define __PPPD_H__ + +#include <stdio.h> /* for FILE */ +#include <limits.h> /* for NGROUPS_MAX */ +#include <sys/param.h> /* for MAXPATHLEN and BSD4_4, if defined */ +#include <sys/types.h> /* for u_int32_t, if defined */ +#include <sys/time.h> /* for struct timeval */ +#include <net/ppp_defs.h> +#include "patchlevel.h" + +#if defined(__STDC__) +#include <stdarg.h> +#define __V(x) x +#else +#include <varargs.h> +#define __V(x) (va_alist) va_dcl +#define const +#define volatile +#endif + +#ifdef INET6 +#include "eui64.h" +#endif + +/* + * Limits. + */ + +#define NUM_PPP 1 /* One PPP interface supported (per process) */ +#define MAXWORDLEN 1024 /* max length of word in file (incl null) */ +#define MAXARGS 1 /* max # args to a command */ +#define MAXNAMELEN 256 /* max length of hostname or name for auth */ +#define MAXSECRETLEN 256 /* max length of password or secret */ + +/* + * Option descriptor structure. + */ + +typedef unsigned char bool; + +enum opt_type { + o_special_noarg = 0, + o_special = 1, + o_bool, + o_int, + o_uint32, + o_string, + o_wild +}; + +typedef struct { + char *name; /* name of the option */ + enum opt_type type; + void *addr; + char *description; + unsigned int flags; + void *addr2; + int upper_limit; + int lower_limit; + const char *source; + short int priority; + short int winner; +} option_t; + +/* Values for flags */ +#define OPT_VALUE 0xff /* mask for presupplied value */ +#define OPT_HEX 0x100 /* int option is in hex */ +#define OPT_NOARG 0x200 /* option doesn't take argument */ +#define OPT_OR 0x400 /* for u32, OR in argument to value */ +#define OPT_INC 0x400 /* for o_int, increment value */ +#define OPT_A2OR 0x800 /* for o_bool, OR arg to *(u_char *)addr2 */ +#define OPT_PRIV 0x1000 /* privileged option */ +#define OPT_STATIC 0x2000 /* string option goes into static array */ +#define OPT_NOINCR 0x2000 /* for o_int, value mustn't be increased */ +#define OPT_LLIMIT 0x4000 /* check value against lower limit */ +#define OPT_ULIMIT 0x8000 /* check value against upper limit */ +#define OPT_LIMITS (OPT_LLIMIT|OPT_ULIMIT) +#define OPT_ZEROOK 0x10000 /* 0 value is OK even if not within limits */ +#define OPT_HIDE 0x10000 /* for o_string, print value as ?????? */ +#define OPT_A2LIST 0x20000 /* for o_special, keep list of values */ +#define OPT_A2CLRB 0x20000 /* o_bool, clr val bits in *(u_char *)addr2 */ +#define OPT_ZEROINF 0x40000 /* with OPT_NOINCR, 0 == infinity */ +#define OPT_PRIO 0x80000 /* process option priorities for this option */ +#define OPT_PRIOSUB 0x100000 /* subsidiary member of priority group */ +#define OPT_ALIAS 0x200000 /* option is alias for previous option */ +#define OPT_A2COPY 0x400000 /* addr2 -> second location to rcv value */ +#define OPT_ENABLE 0x800000 /* use *addr2 as enable for option */ +#define OPT_A2CLR 0x1000000 /* clear *(bool *)addr2 */ +#define OPT_PRIVFIX 0x2000000 /* user can't override if set by root */ +#define OPT_INITONLY 0x4000000 /* option can only be set in init phase */ +#define OPT_DEVEQUIV 0x8000000 /* equiv to device name */ +#define OPT_DEVNAM (OPT_INITONLY | OPT_DEVEQUIV) +#define OPT_A2PRINTER 0x10000000 /* *addr2 is a fn for printing option */ +#define OPT_A2STRVAL 0x20000000 /* *addr2 points to current string value */ +#define OPT_NOPRINT 0x40000000 /* don't print this option at all */ + +#define OPT_VAL(x) ((x) & OPT_VALUE) + +/* Values for priority */ +#define OPRIO_DEFAULT 0 /* a default value */ +#define OPRIO_CFGFILE 1 /* value from a configuration file */ +#define OPRIO_CMDLINE 2 /* value from the command line */ +#define OPRIO_SECFILE 3 /* value from options in a secrets file */ +#define OPRIO_ROOT 100 /* added to priority if OPT_PRIVFIX && root */ + +#ifndef GIDSET_TYPE +#define GIDSET_TYPE gid_t +#endif + +/* Structure representing a list of permitted IP addresses. */ +struct permitted_ip { + int permit; /* 1 = permit, 0 = forbid */ + u_int32_t base; /* match if (addr & mask) == base */ + u_int32_t mask; /* base and mask are in network byte order */ +}; + +/* + * Unfortunately, the linux kernel driver uses a different structure + * for statistics from the rest of the ports. + * This structure serves as a common representation for the bits + * pppd needs. + */ +struct pppd_stats { + unsigned int bytes_in; + unsigned int bytes_out; + unsigned int pkts_in; + unsigned int pkts_out; +}; + +/* Used for storing a sequence of words. Usually malloced. */ +struct wordlist { + struct wordlist *next; + char *word; +}; + +/* An endpoint discriminator, used with multilink. */ +#define MAX_ENDP_LEN 20 /* maximum length of discriminator value */ +struct epdisc { + unsigned char class; + unsigned char length; + unsigned char value[MAX_ENDP_LEN]; +}; + +/* values for epdisc.class */ +#define EPD_NULL 0 /* null discriminator, no data */ +#define EPD_LOCAL 1 +#define EPD_IP 2 +#define EPD_MAC 3 +#define EPD_MAGIC 4 +#define EPD_PHONENUM 5 + +typedef void (*notify_func) __P((void *, int)); + +struct notifier { + struct notifier *next; + notify_func func; + void *arg; +}; + +/* + * Global variables. + */ + +extern int hungup; /* Physical layer has disconnected */ +extern int ifunit; /* Interface unit number */ +extern char ifname[]; /* Interface name */ +extern char hostname[]; /* Our hostname */ +extern u_char outpacket_buf[]; /* Buffer for outgoing packets */ +extern int devfd; /* fd of underlying device */ +extern int fd_ppp; /* fd for talking PPP */ +extern int phase; /* Current state of link - see values below */ +extern int baud_rate; /* Current link speed in bits/sec */ +extern char *progname; /* Name of this program */ +extern int redirect_stderr;/* Connector's stderr should go to file */ +extern char peer_authname[];/* Authenticated name of peer */ +extern int auth_done[NUM_PPP]; /* Methods actually used for auth */ +extern int privileged; /* We were run by real-uid root */ +extern int need_holdoff; /* Need holdoff period after link terminates */ +extern char **script_env; /* Environment variables for scripts */ +extern int detached; /* Have detached from controlling tty */ +extern GIDSET_TYPE groups[NGROUPS_MAX]; /* groups the user is in */ +extern int ngroups; /* How many groups valid in groups */ +extern struct pppd_stats link_stats; /* byte/packet counts etc. for link */ +extern int link_stats_valid; /* set if link_stats is valid */ +extern unsigned link_connect_time; /* time the link was up for */ +extern int using_pty; /* using pty as device (notty or pty opt.) */ +extern int log_to_fd; /* logging to this fd as well as syslog */ +extern bool log_default; /* log_to_fd is default (stdout) */ +extern char *no_ppp_msg; /* message to print if ppp not in kernel */ +extern volatile int status; /* exit status for pppd */ +extern bool devnam_fixed; /* can no longer change devnam */ +extern int unsuccess; /* # unsuccessful connection attempts */ +extern int do_callback; /* set if we want to do callback next */ +extern int doing_callback; /* set if this is a callback */ +extern int error_count; /* # of times error() has been called */ +extern char ppp_devnam[MAXPATHLEN]; +extern char remote_number[MAXNAMELEN]; /* Remote telephone number, if avail. */ +extern int ppp_session_number; /* Session number (eg PPPoE session) */ +extern int fd_devnull; /* fd open to /dev/null */ + +extern int listen_time; /* time to listen first (ms) */ +extern bool doing_multilink; +extern bool multilink_master; +extern bool bundle_eof; +extern bool bundle_terminating; + +extern struct notifier *pidchange; /* for notifications of pid changing */ +extern struct notifier *phasechange; /* for notifications of phase changes */ +extern struct notifier *exitnotify; /* for notification that we're exiting */ +extern struct notifier *sigreceived; /* notification of received signal */ +extern struct notifier *ip_up_notifier; /* IPCP has come up */ +extern struct notifier *ip_down_notifier; /* IPCP has gone down */ +extern struct notifier *auth_up_notifier; /* peer has authenticated */ +extern struct notifier *link_down_notifier; /* link has gone down */ +extern struct notifier *fork_notifier; /* we are a new child process */ + +/* Values for do_callback and doing_callback */ +#define CALLBACK_DIALIN 1 /* we are expecting the call back */ +#define CALLBACK_DIALOUT 2 /* we are dialling out to call back */ + +/* + * Variables set by command-line options. + */ + +extern int debug; /* Debug flag */ +extern int kdebugflag; /* Tell kernel to print debug messages */ +extern int default_device; /* Using /dev/tty or equivalent */ +extern char devnam[MAXPATHLEN]; /* Device name */ +extern int crtscts; /* Use hardware flow control */ +extern bool modem; /* Use modem control lines */ +extern int inspeed; /* Input/Output speed requested */ +extern u_int32_t netmask; /* IP netmask to set on interface */ +extern bool lockflag; /* Create lock file to lock the serial dev */ +extern bool nodetach; /* Don't detach from controlling tty */ +extern bool updetach; /* Detach from controlling tty when link up */ +extern char *initializer; /* Script to initialize physical link */ +extern char *connect_script; /* Script to establish physical link */ +extern char *disconnect_script; /* Script to disestablish physical link */ +extern char *welcomer; /* Script to welcome client after connection */ +extern char *ptycommand; /* Command to run on other side of pty */ +extern int maxconnect; /* Maximum connect time (seconds) */ +extern char user[MAXNAMELEN];/* Our name for authenticating ourselves */ +extern char passwd[MAXSECRETLEN]; /* Password for PAP or CHAP */ +extern bool auth_required; /* Peer is required to authenticate */ +extern bool persist; /* Reopen link after it goes down */ +extern bool uselogin; /* Use /etc/passwd for checking PAP */ +extern bool session_mgmt; /* Do session management (login records) */ +extern char our_name[MAXNAMELEN];/* Our name for authentication purposes */ +extern char remote_name[MAXNAMELEN]; /* Peer's name for authentication */ +extern bool explicit_remote;/* remote_name specified with remotename opt */ +extern bool demand; /* Do dial-on-demand */ +extern char *ipparam; /* Extra parameter for ip up/down scripts */ +extern bool cryptpap; /* Others' PAP passwords are encrypted */ +extern int idle_time_limit;/* Shut down link if idle for this long */ +extern int holdoff; /* Dead time before restarting */ +extern bool holdoff_specified; /* true if user gave a holdoff value */ +extern bool notty; /* Stdin/out is not a tty */ +extern char *pty_socket; /* Socket to connect to pty */ +extern char *record_file; /* File to record chars sent/received */ +extern bool sync_serial; /* Device is synchronous serial device */ +extern int maxfail; /* Max # of unsuccessful connection attempts */ +extern char linkname[MAXPATHLEN]; /* logical name for link */ +extern bool tune_kernel; /* May alter kernel settings as necessary */ +extern int connect_delay; /* Time to delay after connect script */ +extern int max_data_rate; /* max bytes/sec through charshunt */ +extern int req_unit; /* interface unit number to use */ +extern bool multilink; /* enable multilink operation */ +extern bool noendpoint; /* don't send or accept endpt. discrim. */ +extern char *bundle_name; /* bundle name for multilink */ +extern bool dump_options; /* print out option values */ +extern bool dryrun; /* check everything, print options, exit */ +extern int child_wait; /* # seconds to wait for children at end */ + +#ifdef MAXOCTETS +extern unsigned int maxoctets; /* Maximum octetes per session (in bytes) */ +extern int maxoctets_dir; /* Direction : + 0 - in+out (default) + 1 - in + 2 - out + 3 - max(in,out) */ +extern int maxoctets_timeout; /* Timeout for check of octets limit */ +#define PPP_OCTETS_DIRECTION_SUM 0 +#define PPP_OCTETS_DIRECTION_IN 1 +#define PPP_OCTETS_DIRECTION_OUT 2 +#define PPP_OCTETS_DIRECTION_MAXOVERAL 3 +/* same as previos, but little different on RADIUS side */ +#define PPP_OCTETS_DIRECTION_MAXSESSION 4 +#endif + +#ifdef PPP_FILTER +extern struct bpf_program pass_filter; /* Filter for pkts to pass */ +extern struct bpf_program active_filter; /* Filter for link-active pkts */ +#endif + +#ifdef MSLANMAN +extern bool ms_lanman; /* Use LanMan password instead of NT */ + /* Has meaning only with MS-CHAP challenges */ +#endif + +/* Values for auth_pending, auth_done */ +#define PAP_WITHPEER 0x1 +#define PAP_PEER 0x2 +#define CHAP_WITHPEER 0x4 +#define CHAP_PEER 0x8 +#define EAP_WITHPEER 0x10 +#define EAP_PEER 0x20 + +/* Values for auth_done only */ +#define CHAP_MD5_WITHPEER 0x40 +#define CHAP_MD5_PEER 0x80 +#define CHAP_MS_SHIFT 8 /* LSB position for MS auths */ +#define CHAP_MS_WITHPEER 0x100 +#define CHAP_MS_PEER 0x200 +#define CHAP_MS2_WITHPEER 0x400 +#define CHAP_MS2_PEER 0x800 + +extern char *current_option; /* the name of the option being parsed */ +extern int privileged_option; /* set iff the current option came from root */ +extern char *option_source; /* string saying where the option came from */ +extern int option_priority; /* priority of current options */ + +/* + * Values for phase. + */ +#define PHASE_DEAD 0 +#define PHASE_INITIALIZE 1 +#define PHASE_SERIALCONN 2 +#define PHASE_DORMANT 3 +#define PHASE_ESTABLISH 4 +#define PHASE_AUTHENTICATE 5 +#define PHASE_CALLBACK 6 +#define PHASE_NETWORK 7 +#define PHASE_RUNNING 8 +#define PHASE_TERMINATE 9 +#define PHASE_DISCONNECT 10 +#define PHASE_HOLDOFF 11 +#define PHASE_MASTER 12 + +/* + * The following struct gives the addresses of procedures to call + * for a particular protocol. + */ +struct protent { + u_short protocol; /* PPP protocol number */ + /* Initialization procedure */ + void (*init) __P((int unit)); + /* Process a received packet */ + void (*input) __P((int unit, u_char *pkt, int len)); + /* Process a received protocol-reject */ + void (*protrej) __P((int unit)); + /* Lower layer has come up */ + void (*lowerup) __P((int unit)); + /* Lower layer has gone down */ + void (*lowerdown) __P((int unit)); + /* Open the protocol */ + void (*open) __P((int unit)); + /* Close the protocol */ + void (*close) __P((int unit, char *reason)); + /* Print a packet in readable form */ + int (*printpkt) __P((u_char *pkt, int len, + void (*printer) __P((void *, char *, ...)), + void *arg)); + /* Process a received data packet */ + void (*datainput) __P((int unit, u_char *pkt, int len)); + bool enabled_flag; /* 0 iff protocol is disabled */ + char *name; /* Text name of protocol */ + char *data_name; /* Text name of corresponding data protocol */ + option_t *options; /* List of command-line options */ + /* Check requested options, assign defaults */ + void (*check_options) __P((void)); + /* Configure interface for demand-dial */ + int (*demand_conf) __P((int unit)); + /* Say whether to bring up link for this pkt */ + int (*active_pkt) __P((u_char *pkt, int len)); +}; + +/* Table of pointers to supported protocols */ +extern struct protent *protocols[]; + +/* + * This struct contains pointers to a set of procedures for + * doing operations on a "channel". A channel provides a way + * to send and receive PPP packets - the canonical example is + * a serial port device in PPP line discipline (or equivalently + * with PPP STREAMS modules pushed onto it). + */ +struct channel { + /* set of options for this channel */ + option_t *options; + /* find and process a per-channel options file */ + void (*process_extra_options) __P((void)); + /* check all the options that have been given */ + void (*check_options) __P((void)); + /* get the channel ready to do PPP, return a file descriptor */ + int (*connect) __P((void)); + /* we're finished with the channel */ + void (*disconnect) __P((void)); + /* put the channel into PPP `mode' */ + int (*establish_ppp) __P((int)); + /* take the channel out of PPP `mode', restore loopback if demand */ + void (*disestablish_ppp) __P((int)); + /* set the transmit-side PPP parameters of the channel */ + void (*send_config) __P((int, u_int32_t, int, int)); + /* set the receive-side PPP parameters of the channel */ + void (*recv_config) __P((int, u_int32_t, int, int)); + /* cleanup on error or normal exit */ + void (*cleanup) __P((void)); + /* close the device, called in children after fork */ + void (*close) __P((void)); +}; + +extern struct channel *the_channel; + +/* + * Prototypes. + */ + +/* Procedures exported from main.c. */ +void set_ifunit __P((int)); /* set stuff that depends on ifunit */ +void detach __P((void)); /* Detach from controlling tty */ +void die __P((int)); /* Cleanup and exit */ +void quit __P((void)); /* like die(1) */ +void novm __P((char *)); /* Say we ran out of memory, and die */ +void timeout __P((void (*func)(void *), void *arg, int s, int us)); + /* Call func(arg) after s.us seconds */ +void untimeout __P((void (*func)(void *), void *arg)); + /* Cancel call to func(arg) */ +void record_child __P((int, char *, void (*) (void *), void *, int)); +pid_t safe_fork __P((int, int, int)); /* Fork & close stuff in child */ +int device_script __P((char *cmd, int in, int out, int dont_wait)); + /* Run `cmd' with given stdin and stdout */ +pid_t run_program __P((char *prog, char **args, int must_exist, + void (*done)(void *), void *arg, int wait)); + /* Run program prog with args in child */ +void reopen_log __P((void)); /* (re)open the connection to syslog */ +void print_link_stats __P((void)); /* Print stats, if available */ +void reset_link_stats __P((int)); /* Reset (init) stats when link goes up */ +void update_link_stats __P((int)); /* Get stats at link termination */ +void script_setenv __P((char *, char *, int)); /* set script env var */ +void script_unsetenv __P((char *)); /* unset script env var */ +void new_phase __P((int)); /* signal start of new phase */ +void add_notifier __P((struct notifier **, notify_func, void *)); +void remove_notifier __P((struct notifier **, notify_func, void *)); +void notify __P((struct notifier *, int)); +int ppp_send_config __P((int, int, u_int32_t, int, int)); +int ppp_recv_config __P((int, int, u_int32_t, int, int)); +const char *protocol_name __P((int)); +void remove_pidfiles __P((void)); +void lock_db __P((void)); +void unlock_db __P((void)); + +/* Procedures exported from tty.c. */ +void tty_init __P((void)); + +/* Procedures exported from utils.c. */ +void log_packet __P((u_char *, int, char *, int)); + /* Format a packet and log it with syslog */ +void print_string __P((char *, int, void (*) (void *, char *, ...), + void *)); /* Format a string for output */ +int slprintf __P((char *, int, char *, ...)); /* sprintf++ */ +int vslprintf __P((char *, int, char *, va_list)); /* vsprintf++ */ +size_t strlcpy __P((char *, const char *, size_t)); /* safe strcpy */ +size_t strlcat __P((char *, const char *, size_t)); /* safe strncpy */ +void dbglog __P((char *, ...)); /* log a debug message */ +void info __P((char *, ...)); /* log an informational message */ +void notice __P((char *, ...)); /* log a notice-level message */ +void warn __P((char *, ...)); /* log a warning message */ +void error __P((char *, ...)); /* log an error message */ +void fatal __P((char *, ...)); /* log an error message and die(1) */ +void init_pr_log __P((const char *, int)); /* initialize for using pr_log */ +void pr_log __P((void *, char *, ...)); /* printer fn, output to syslog */ +void end_pr_log __P((void)); /* finish up after using pr_log */ +void dump_packet __P((const char *, u_char *, int)); + /* dump packet to debug log if interesting */ +ssize_t complete_read __P((int, void *, size_t)); + /* read a complete buffer */ + +/* Procedures exported from auth.c */ +void link_required __P((int)); /* we are starting to use the link */ +void start_link __P((int)); /* bring the link up now */ +void link_terminated __P((int)); /* we are finished with the link */ +void link_down __P((int)); /* the LCP layer has left the Opened state */ +void upper_layers_down __P((int));/* take all NCPs down */ +void link_established __P((int)); /* the link is up; authenticate now */ +void start_networks __P((int)); /* start all the network control protos */ +void continue_networks __P((int)); /* start network [ip, etc] control protos */ +void np_up __P((int, int)); /* a network protocol has come up */ +void np_down __P((int, int)); /* a network protocol has gone down */ +void np_finished __P((int, int)); /* a network protocol no longer needs link */ +void auth_peer_fail __P((int, int)); + /* peer failed to authenticate itself */ +void auth_peer_success __P((int, int, int, char *, int)); + /* peer successfully authenticated itself */ +void auth_withpeer_fail __P((int, int)); + /* we failed to authenticate ourselves */ +void auth_withpeer_success __P((int, int, int)); + /* we successfully authenticated ourselves */ +void auth_check_options __P((void)); + /* check authentication options supplied */ +void auth_reset __P((int)); /* check what secrets we have */ +int check_passwd __P((int, char *, int, char *, int, char **)); + /* Check peer-supplied username/password */ +int get_secret __P((int, char *, char *, char *, int *, int)); + /* get "secret" for chap */ +int get_srp_secret __P((int unit, char *client, char *server, char *secret, + int am_server)); +int auth_ip_addr __P((int, u_int32_t)); + /* check if IP address is authorized */ +int auth_number __P((void)); /* check if remote number is authorized */ +int bad_ip_adrs __P((u_int32_t)); + /* check if IP address is unreasonable */ + +/* Procedures exported from demand.c */ +void demand_conf __P((void)); /* config interface(s) for demand-dial */ +void demand_block __P((void)); /* set all NPs to queue up packets */ +void demand_unblock __P((void)); /* set all NPs to pass packets */ +void demand_discard __P((void)); /* set all NPs to discard packets */ +void demand_rexmit __P((int)); /* retransmit saved frames for an NP */ +int loop_chars __P((unsigned char *, int)); /* process chars from loopback */ +int loop_frame __P((unsigned char *, int)); /* should we bring link up? */ + +/* Procedures exported from multilink.c */ +#ifdef HAVE_MULTILINK +void mp_check_options __P((void)); /* Check multilink-related options */ +int mp_join_bundle __P((void)); /* join our link to an appropriate bundle */ +void mp_exit_bundle __P((void)); /* have disconnected our link from bundle */ +void mp_bundle_terminated __P((void)); +char *epdisc_to_str __P((struct epdisc *)); /* string from endpoint discrim. */ +int str_to_epdisc __P((struct epdisc *, char *)); /* endpt disc. from str */ +#else +#define mp_bundle_terminated() /* nothing */ +#define mp_exit_bundle() /* nothing */ +#define doing_multilink 0 +#define multilink_master 0 +#endif + +/* Procedures exported from sys-*.c */ +void sys_init __P((void)); /* Do system-dependent initialization */ +void sys_cleanup __P((void)); /* Restore system state before exiting */ +int sys_check_options __P((void)); /* Check options specified */ +void sys_close __P((void)); /* Clean up in a child before execing */ +int ppp_available __P((void)); /* Test whether ppp kernel support exists */ +int get_pty __P((int *, int *, char *, int)); /* Get pty master/slave */ +int open_ppp_loopback __P((void)); /* Open loopback for demand-dialling */ +int tty_establish_ppp __P((int)); /* Turn serial port into a ppp interface */ +void tty_disestablish_ppp __P((int)); /* Restore port to normal operation */ +void generic_disestablish_ppp __P((int dev_fd)); /* Restore device setting */ +int generic_establish_ppp __P((int dev_fd)); /* Make a ppp interface */ +void make_new_bundle __P((int, int, int, int)); /* Create new bundle */ +int bundle_attach __P((int)); /* Attach link to existing bundle */ +void cfg_bundle __P((int, int, int, int)); /* Configure existing bundle */ +void destroy_bundle __P((void)); /* Tell driver to destroy bundle */ +void clean_check __P((void)); /* Check if line was 8-bit clean */ +void set_up_tty __P((int, int)); /* Set up port's speed, parameters, etc. */ +void restore_tty __P((int)); /* Restore port's original parameters */ +void setdtr __P((int, int)); /* Raise or lower port's DTR line */ +void output __P((int, u_char *, int)); /* Output a PPP packet */ +void wait_input __P((struct timeval *)); + /* Wait for input, with timeout */ +void add_fd __P((int)); /* Add fd to set to wait for */ +void remove_fd __P((int)); /* Remove fd from set to wait for */ +int read_packet __P((u_char *)); /* Read PPP packet */ +int get_loop_output __P((void)); /* Read pkts from loopback */ +void tty_send_config __P((int, u_int32_t, int, int)); + /* Configure i/f transmit parameters */ +void tty_set_xaccm __P((ext_accm)); + /* Set extended transmit ACCM */ +void tty_recv_config __P((int, u_int32_t, int, int)); + /* Configure i/f receive parameters */ +int ccp_test __P((int, u_char *, int, int)); + /* Test support for compression scheme */ +void ccp_flags_set __P((int, int, int)); + /* Set kernel CCP state */ +int ccp_fatal_error __P((int)); /* Test for fatal decomp error in kernel */ +int get_idle_time __P((int, struct ppp_idle *)); + /* Find out how long link has been idle */ +int get_ppp_stats __P((int, struct pppd_stats *)); + /* Return link statistics */ +void netif_set_mtu __P((int, int)); /* Set PPP interface MTU */ +int netif_get_mtu __P((int)); /* Get PPP interface MTU */ +int sifvjcomp __P((int, int, int, int)); + /* Configure VJ TCP header compression */ +int sifup __P((int)); /* Configure i/f up for one protocol */ +int sifnpmode __P((int u, int proto, enum NPmode mode)); + /* Set mode for handling packets for proto */ +int sifdown __P((int)); /* Configure i/f down for one protocol */ +int sifaddr __P((int, u_int32_t, u_int32_t, u_int32_t)); + /* Configure IPv4 addresses for i/f */ +int cifaddr __P((int, u_int32_t, u_int32_t)); + /* Reset i/f IP addresses */ +#ifdef INET6 +int sif6addr __P((int, eui64_t, eui64_t)); + /* Configure IPv6 addresses for i/f */ +int cif6addr __P((int, eui64_t, eui64_t)); + /* Remove an IPv6 address from i/f */ +#endif +int sifdefaultroute __P((int, u_int32_t, u_int32_t)); + /* Create default route through i/f */ +int cifdefaultroute __P((int, u_int32_t, u_int32_t)); + /* Delete default route through i/f */ +int sifproxyarp __P((int, u_int32_t)); + /* Add proxy ARP entry for peer */ +int cifproxyarp __P((int, u_int32_t)); + /* Delete proxy ARP entry for peer */ +u_int32_t GetMask __P((u_int32_t)); /* Get appropriate netmask for address */ +int lock __P((char *)); /* Create lock file for device */ +int relock __P((int)); /* Rewrite lock file with new pid */ +void unlock __P((void)); /* Delete previously-created lock file */ +void logwtmp __P((const char *, const char *, const char *)); + /* Write entry to wtmp file */ +int get_host_seed __P((void)); /* Get host-dependent random number seed */ +int have_route_to __P((u_int32_t)); /* Check if route to addr exists */ +#ifdef PPP_FILTER +int set_filters __P((struct bpf_program *pass, struct bpf_program *active)); + /* Set filter programs in kernel */ +#endif +#ifdef IPX_CHANGE +int sipxfaddr __P((int, unsigned long, unsigned char *)); +int cipxfaddr __P((int)); +#endif +int get_if_hwaddr __P((u_char *addr, char *name)); +char *get_first_ethernet __P((void)); + +/* Procedures exported from options.c */ +int setipaddr __P((char *, char **, int)); /* Set local/remote ip addresses */ +int parse_args __P((int argc, char **argv)); + /* Parse options from arguments given */ +int options_from_file __P((char *filename, int must_exist, int check_prot, + int privileged)); + /* Parse options from an options file */ +int options_from_user __P((void)); /* Parse options from user's .ppprc */ +int options_for_tty __P((void)); /* Parse options from /etc/ppp/options.tty */ +int options_from_list __P((struct wordlist *, int privileged)); + /* Parse options from a wordlist */ +int getword __P((FILE *f, char *word, int *newlinep, char *filename)); + /* Read a word from a file */ +void option_error __P((char *fmt, ...)); + /* Print an error message about an option */ +int int_option __P((char *, int *)); + /* Simplified number_option for decimal ints */ +void add_options __P((option_t *)); /* Add extra options */ +void check_options __P((void)); /* check values after all options parsed */ +int override_value __P((const char *, int, const char *)); + /* override value if permitted by priority */ +void print_options __P((void (*) __P((void *, char *, ...)), void *)); + /* print out values of all options */ + +int parse_dotted_ip __P((char *, u_int32_t *)); + +/* + * Hooks to enable plugins to change various things. + */ +extern int (*new_phase_hook) __P((int)); +extern int (*idle_time_hook) __P((struct ppp_idle *)); +extern int (*holdoff_hook) __P((void)); +extern int (*pap_check_hook) __P((void)); +extern int (*pap_auth_hook) __P((char *user, char *passwd, char **msgp, + struct wordlist **paddrs, + struct wordlist **popts)); +extern void (*pap_logout_hook) __P((void)); +extern int (*pap_passwd_hook) __P((char *user, char *passwd)); +extern int (*allowed_address_hook) __P((u_int32_t addr)); +extern void (*ip_up_hook) __P((void)); +extern void (*ip_down_hook) __P((void)); +extern void (*ip_choose_hook) __P((u_int32_t *)); + +extern int (*chap_check_hook) __P((void)); +extern int (*chap_passwd_hook) __P((char *user, char *passwd)); +extern void (*multilink_join_hook) __P((void)); + +/* Let a plugin snoop sent and received packets. Useful for L2TP */ +extern void (*snoop_recv_hook) __P((unsigned char *p, int len)); +extern void (*snoop_send_hook) __P((unsigned char *p, int len)); + +/* + * Inline versions of get/put char/short/long. + * Pointer is advanced; we assume that both arguments + * are lvalues and will already be in registers. + * cp MUST be u_char *. + */ +#define GETCHAR(c, cp) { \ + (c) = *(cp)++; \ +} +#define PUTCHAR(c, cp) { \ + *(cp)++ = (u_char) (c); \ +} + + +#define GETSHORT(s, cp) { \ + (s) = *(cp)++ << 8; \ + (s) |= *(cp)++; \ +} +#define PUTSHORT(s, cp) { \ + *(cp)++ = (u_char) ((s) >> 8); \ + *(cp)++ = (u_char) (s); \ +} + +#define GETLONG(l, cp) { \ + (l) = *(cp)++ << 8; \ + (l) |= *(cp)++; (l) <<= 8; \ + (l) |= *(cp)++; (l) <<= 8; \ + (l) |= *(cp)++; \ +} +#define PUTLONG(l, cp) { \ + *(cp)++ = (u_char) ((l) >> 24); \ + *(cp)++ = (u_char) ((l) >> 16); \ + *(cp)++ = (u_char) ((l) >> 8); \ + *(cp)++ = (u_char) (l); \ +} + +#define INCPTR(n, cp) ((cp) += (n)) +#define DECPTR(n, cp) ((cp) -= (n)) + +/* + * System dependent definitions for user-level 4.3BSD UNIX implementation. + */ + +#define TIMEOUT(r, f, t) timeout((r), (f), (t), 0) +#define UNTIMEOUT(r, f) untimeout((r), (f)) + +#define BCOPY(s, d, l) memcpy(d, s, l) +#define BZERO(s, n) memset(s, 0, n) +#define BCMP(s1, s2, l) memcmp(s1, s2, l) + +#define PRINTMSG(m, l) { info("Remote message: %0.*v", l, m); } + +/* + * MAKEHEADER - Add Header fields to a packet. + */ +#define MAKEHEADER(p, t) { \ + PUTCHAR(PPP_ALLSTATIONS, p); \ + PUTCHAR(PPP_UI, p); \ + PUTSHORT(t, p); } + +/* + * Exit status values. + */ +#define EXIT_OK 0 +#define EXIT_FATAL_ERROR 1 +#define EXIT_OPTION_ERROR 2 +#define EXIT_NOT_ROOT 3 +#define EXIT_NO_KERNEL_SUPPORT 4 +#define EXIT_USER_REQUEST 5 +#define EXIT_LOCK_FAILED 6 +#define EXIT_OPEN_FAILED 7 +#define EXIT_CONNECT_FAILED 8 +#define EXIT_PTYCMD_FAILED 9 +#define EXIT_NEGOTIATION_FAILED 10 +#define EXIT_PEER_AUTH_FAILED 11 +#define EXIT_IDLE_TIMEOUT 12 +#define EXIT_CONNECT_TIME 13 +#define EXIT_CALLBACK 14 +#define EXIT_PEER_DEAD 15 +#define EXIT_HANGUP 16 +#define EXIT_LOOPBACK 17 +#define EXIT_INIT_FAILED 18 +#define EXIT_AUTH_TOPEER_FAILED 19 +#ifdef MAXOCTETS +#define EXIT_TRAFFIC_LIMIT 20 +#endif +#define EXIT_CNID_AUTH_FAILED 21 + +/* + * Debug macros. Slightly useful for finding bugs in pppd, not particularly + * useful for finding out why your connection isn't being established. + */ +#ifdef DEBUGALL +#define DEBUGMAIN 1 +#define DEBUGFSM 1 +#define DEBUGLCP 1 +#define DEBUGIPCP 1 +#define DEBUGIPV6CP 1 +#define DEBUGUPAP 1 +#define DEBUGCHAP 1 +#endif + +#ifndef LOG_PPP /* we use LOG_LOCAL2 for syslog by default */ +#if defined(DEBUGMAIN) || defined(DEBUGFSM) || defined(DEBUGSYS) \ + || defined(DEBUGLCP) || defined(DEBUGIPCP) || defined(DEBUGUPAP) \ + || defined(DEBUGCHAP) || defined(DEBUG) || defined(DEBUGIPV6CP) +#define LOG_PPP LOG_LOCAL2 +#else +#define LOG_PPP LOG_DAEMON +#endif +#endif /* LOG_PPP */ + +#ifdef DEBUGMAIN +#define MAINDEBUG(x) if (debug) dbglog x +#else +#define MAINDEBUG(x) +#endif + +#ifdef DEBUGSYS +#define SYSDEBUG(x) if (debug) dbglog x +#else +#define SYSDEBUG(x) +#endif + +#ifdef DEBUGFSM +#define FSMDEBUG(x) if (debug) dbglog x +#else +#define FSMDEBUG(x) +#endif + +#ifdef DEBUGLCP +#define LCPDEBUG(x) if (debug) dbglog x +#else +#define LCPDEBUG(x) +#endif + +#ifdef DEBUGIPCP +#define IPCPDEBUG(x) if (debug) dbglog x +#else +#define IPCPDEBUG(x) +#endif + +#ifdef DEBUGIPV6CP +#define IPV6CPDEBUG(x) if (debug) dbglog x +#else +#define IPV6CPDEBUG(x) +#endif + +#ifdef DEBUGUPAP +#define UPAPDEBUG(x) if (debug) dbglog x +#else +#define UPAPDEBUG(x) +#endif + +#ifdef DEBUGCHAP +#define CHAPDEBUG(x) if (debug) dbglog x +#else +#define CHAPDEBUG(x) +#endif + +#ifdef DEBUGIPXCP +#define IPXCPDEBUG(x) if (debug) dbglog x +#else +#define IPXCPDEBUG(x) +#endif + +#ifndef SIGTYPE +#if defined(sun) || defined(SYSV) || defined(POSIX_SOURCE) +#define SIGTYPE void +#else +#define SIGTYPE int +#endif /* defined(sun) || defined(SYSV) || defined(POSIX_SOURCE) */ +#endif /* SIGTYPE */ + +#ifndef MIN +#define MIN(a, b) ((a) < (b)? (a): (b)) +#endif +#ifndef MAX +#define MAX(a, b) ((a) > (b)? (a): (b)) +#endif + +#ifndef offsetof +#define offsetof(type, member) ((size_t) &((type *)0)->member) +#endif + +#endif /* __PPP_H__ */ diff --git a/package/cdrkit/Makefile b/package/cdrkit/Makefile new file mode 100644 index 000000000..45adc5712 --- /dev/null +++ b/package/cdrkit/Makefile @@ -0,0 +1,33 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= cdrkit +PKG_VERSION:= 1.1.11 +PKG_RELEASE:= 1 +PKG_HASH:= d1c030756ecc182defee9fe885638c1785d35a2c2a297b4604c0e0dcc78e47da +PKG_DESCR:= cd burning kit +PKG_SECTION:= sys/hw +PKG_DEPENDS:= libmagic zlib libbz2 libcap +PKG_BUILDDEP:= cmake-host file zlib bzip2 libcap +PKG_SITES:= http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit/ + +PKG_BUILDDEP_UCLIBC:= libiconv-tiny +PKG_BUILDDEP_UCLIBC_NG:=libiconv-tiny + +DISTFILES:= $(PKG_NAME)_$(PKG_VERSION).orig.tar.gz + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,CDRKIT,cdrkit,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:= cmake +CMAKE_FLAGS+= -DUSE_LIBC_NLS=1 -DUSE_LIBXNET=0 -DUSE_LIBNLS=0 + +cdrkit-install: + $(INSTALL_DIR) $(IDIR_CDRKIT)/usr/bin + $(INSTALL_BIN) $(WRKINST)/usr/bin/* \ + $(IDIR_CDRKIT)/usr/bin + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/cdrkit/patches/patch-Makefile b/package/cdrkit/patches/patch-Makefile new file mode 100644 index 000000000..adf3bd7e2 --- /dev/null +++ b/package/cdrkit/patches/patch-Makefile @@ -0,0 +1,466 @@ +--- cdrkit-1.1.11.orig/Makefile 2007-05-06 12:23:54.000000000 +0200 ++++ cdrkit-1.1.11/Makefile 2015-02-25 10:54:08.000000000 +0100 +@@ -1,72 +1,409 @@ +-ifneq ($(CFLAGS),) +-CMAKETWEAKS += ( cd build ; cmake .. -DCMAKE_C_FLAGS="$(CFLAGS)" ) || exit 1; +-endif ++# CMAKE generated file: DO NOT EDIT! ++# Generated by "Unix Makefiles" Generator, CMake Version 3.1 + +-ifneq ($(LDFLAGS),) +-CMAKETWEAKS += (cd build ; cmake .. -DCMAKE_EXE_LINKER_FLAGS:STRING="$(LDFLAGS)" -DCMAKE_MODULE_LINKER_FLAGS:STRING="$(LDFLAGS)" -DCMAKE_SHARED_LINKER_FLAGS:STRING="$(LDFLAGS)" ) || exit 1; +-endif ++# Default target executed when no arguments are given to make. ++default_target: all ++.PHONY : default_target + +-ifneq ($(PREFIX),) +-CMAKETWEAKS += ( cd build ; cmake .. -DCMAKE_INSTALL_PREFIX="$(PREFIX)") || exit 1; +-endif ++# Allow only one "make -f Makefile2" at a time, but pass parallelism. ++.NOTPARALLEL: ++.PHONY : .NOTPARALLEL + +-ifneq ($(MANSUBDIR),) +-CMAKETWEAKS += ( cd build ; cmake .. -DMANSUBDIR="$(MANSUBDIR)" ) || exit 1; +-endif ++#============================================================================= ++# Special targets provided by cmake. + +-default_target: all ++# Disable implicit rules so canonical targets will work. ++.SUFFIXES: + +-DISTNAME=cdrkit-$(shell cat VERSION) +-DEBSRCNAME=cdrkit_$(shell cat VERSION | sed -e "s,pre,~pre,").orig.tar.gz ++# Remove some rules from gmake that .SUFFIXES does not remove. ++SUFFIXES = + +-build/Makefile: +- @-mkdir build 2>/dev/null +- cd build && cmake .. ++.SUFFIXES: .hpux_make_needs_suffix_list + +-cmakepurge: +- rm -rf install_manifest.txt progress.make CMakeFiles CMakeCache.txt cmake_install.cmake +- rm -rf */install_manifest.txt */progress.make */CMakeFiles */CMakeCache.txt */cmake_install.cmake +- rm -rf */*/install_manifest.txt */*/progress.make */*/CMakeFiles */*/CMakeCache.txt */*/cmake_install.cmake +- rm */Makefile */*/Makefile ++# Suppress display of executed commands. ++$(VERBOSE).SILENT: ++ ++# A target that is always out of date. ++cmake_force: ++.PHONY : cmake_force ++ ++#============================================================================= ++# Set environment variables for the build. ++ ++# The shell in which to execute make rules. ++SHELL = /bin/sh ++ ++# The CMake executable. ++CMAKE_COMMAND = /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake ++ ++# The command to remove a file. ++RM = /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -E remove -f + ++# Escaping for special characters. ++EQUALS = = ++ ++# The top-level source directory on which CMake was run. ++CMAKE_SOURCE_DIR = /home/wbx/adk/build_qemu-arm_uclibc-ng_arm_eabihf/w-cdrkit-1.1.11-1/cdrkit-1.1.11 ++ ++# The top-level build directory on which CMake was run. ++CMAKE_BINARY_DIR = /home/wbx/adk/build_qemu-arm_uclibc-ng_arm_eabihf/w-cdrkit-1.1.11-1/cdrkit-1.1.11 ++ ++#============================================================================= ++# Targets provided globally by CMake. ++ ++# Special rule for the target install/strip ++install/strip: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." ++ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake ++.PHONY : install/strip ++ ++# Special rule for the target install/strip ++install/strip/fast: install/strip ++.PHONY : install/strip/fast ++ ++# Special rule for the target edit_cache ++edit_cache: ++ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." ++ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) ++.PHONY : edit_cache ++ ++# Special rule for the target edit_cache ++edit_cache/fast: edit_cache ++.PHONY : edit_cache/fast ++ ++# Special rule for the target rebuild_cache ++rebuild_cache: ++ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." ++ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) ++.PHONY : rebuild_cache ++ ++# Special rule for the target rebuild_cache ++rebuild_cache/fast: rebuild_cache ++.PHONY : rebuild_cache/fast ++ ++# Special rule for the target install ++install: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." ++ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -P cmake_install.cmake ++.PHONY : install ++ ++# Special rule for the target install ++install/fast: preinstall/fast ++ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." ++ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -P cmake_install.cmake ++.PHONY : install/fast ++ ++# Special rule for the target list_install_components ++list_install_components: ++ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" ++.PHONY : list_install_components ++ ++# Special rule for the target list_install_components ++list_install_components/fast: list_install_components ++.PHONY : list_install_components/fast ++ ++# Special rule for the target install/local ++install/local: preinstall ++ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." ++ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake ++.PHONY : install/local ++ ++# Special rule for the target install/local ++install/local/fast: install/local ++.PHONY : install/local/fast ++ ++# The main all target ++all: cmake_check_build_system ++ $(CMAKE_COMMAND) -E cmake_progress_start /home/wbx/adk/build_qemu-arm_uclibc-ng_arm_eabihf/w-cdrkit-1.1.11-1/cdrkit-1.1.11/CMakeFiles /home/wbx/adk/build_qemu-arm_uclibc-ng_arm_eabihf/w-cdrkit-1.1.11-1/cdrkit-1.1.11/CMakeFiles/progress.marks ++ $(MAKE) -f CMakeFiles/Makefile2 all ++ $(CMAKE_COMMAND) -E cmake_progress_start /home/wbx/adk/build_qemu-arm_uclibc-ng_arm_eabihf/w-cdrkit-1.1.11-1/cdrkit-1.1.11/CMakeFiles 0 ++.PHONY : all ++ ++# The main clean target + clean: +- rm -rf build ++ $(MAKE) -f CMakeFiles/Makefile2 clean ++.PHONY : clean + +-tarball: +-# if test "$(shell svn status | grep -v -i make)" ; then echo Uncommited files found. Run \"svn status\" to display them. ; exit 1 ; fi +- @if test -f ../$(DISTNAME).tar.gz ; then echo ../$(DISTNAME).tar.gz exists, not overwritting ; exit 1; fi +- -svn up +- rm -rf tmp +- mkdir tmp +- svn export . tmp/$(DISTNAME) +- rm -rf tmp/$(DISTNAME)/debian +- tar -f - -c -C tmp $(DISTNAME) | gzip -9 > ../$(DISTNAME).tar.gz +- rm -rf tmp +- test -e /etc/debian_version && ln -f ../$(DISTNAME).tar.gz ../$(DEBSRCNAME) || true +- test -e ../tarballs && ln -f ../$(DISTNAME).tar.gz ../tarballs/$(DEBSRCNAME) || true ++# The main clean target ++clean/fast: clean ++.PHONY : clean/fast + +-tarball-remove: +- rm -f ../$(DISTNAME).tar.gz ../tarballs/$(DEBSRCNAME) ../$(DEBSRCNAME) ++# Prepare targets for installation. ++preinstall: all ++ $(MAKE) -f CMakeFiles/Makefile2 preinstall ++.PHONY : preinstall + +-SVNBASE=$(shell svn info | grep URL: | cut -f2 -d' ' | xargs dirname) +-release: tarball +- svn ci +- svn cp $(SVNBASE)/trunk $(SVNBASE)/tags/release_$(shell cat VERSION) ++# Prepare targets for installation. ++preinstall/fast: ++ $(MAKE) -f CMakeFiles/Makefile2 preinstall ++.PHONY : preinstall/fast + +-#%:: +-# $(MAKE) $(MAKE_FLAGS) build/Makefile +-# $(CMAKETWEAKS) +-# $(MAKE) -C build $(MAKE_FLAGS) $@ ++# clear depends ++depend: ++ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 ++.PHONY : depend + +-# needs to be explicite, for PHONY and install (AKA INSTALL) file on cygwin +-install: build/Makefile +- $(CMAKETWEAKS) +- $(MAKE) -C build $(MAKE_FLAGS) $@ ++#============================================================================= ++# Target rules for targets named devdump + +-all: build/Makefile +- $(CMAKETWEAKS) +- $(MAKE) -C build $(MAKE_FLAGS) $@ ++# Build rule for target. ++devdump: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 devdump ++.PHONY : devdump + +-.PHONY: install all ++# fast build rule for target. ++devdump/fast: ++ $(MAKE) -f genisoimage/CMakeFiles/devdump.dir/build.make genisoimage/CMakeFiles/devdump.dir/build ++.PHONY : devdump/fast + ++#============================================================================= ++# Target rules for targets named genisoimage ++ ++# Build rule for target. ++genisoimage: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 genisoimage ++.PHONY : genisoimage ++ ++# fast build rule for target. ++genisoimage/fast: ++ $(MAKE) -f genisoimage/CMakeFiles/genisoimage.dir/build.make genisoimage/CMakeFiles/genisoimage.dir/build ++.PHONY : genisoimage/fast ++ ++#============================================================================= ++# Target rules for targets named isodebug ++ ++# Build rule for target. ++isodebug: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 isodebug ++.PHONY : isodebug ++ ++# fast build rule for target. ++isodebug/fast: ++ $(MAKE) -f genisoimage/CMakeFiles/isodebug.dir/build.make genisoimage/CMakeFiles/isodebug.dir/build ++.PHONY : isodebug/fast ++ ++#============================================================================= ++# Target rules for targets named isodump ++ ++# Build rule for target. ++isodump: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 isodump ++.PHONY : isodump ++ ++# fast build rule for target. ++isodump/fast: ++ $(MAKE) -f genisoimage/CMakeFiles/isodump.dir/build.make genisoimage/CMakeFiles/isodump.dir/build ++.PHONY : isodump/fast ++ ++#============================================================================= ++# Target rules for targets named isoinfo ++ ++# Build rule for target. ++isoinfo: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 isoinfo ++.PHONY : isoinfo ++ ++# fast build rule for target. ++isoinfo/fast: ++ $(MAKE) -f genisoimage/CMakeFiles/isoinfo.dir/build.make genisoimage/CMakeFiles/isoinfo.dir/build ++.PHONY : isoinfo/fast ++ ++#============================================================================= ++# Target rules for targets named isovfy ++ ++# Build rule for target. ++isovfy: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 isovfy ++.PHONY : isovfy ++ ++# fast build rule for target. ++isovfy/fast: ++ $(MAKE) -f genisoimage/CMakeFiles/isovfy.dir/build.make genisoimage/CMakeFiles/isovfy.dir/build ++.PHONY : isovfy/fast ++ ++#============================================================================= ++# Target rules for targets named wodim ++ ++# Build rule for target. ++wodim: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 wodim ++.PHONY : wodim ++ ++# fast build rule for target. ++wodim/fast: ++ $(MAKE) -f wodim/CMakeFiles/wodim.dir/build.make wodim/CMakeFiles/wodim.dir/build ++.PHONY : wodim/fast ++ ++#============================================================================= ++# Target rules for targets named wodimstuff ++ ++# Build rule for target. ++wodimstuff: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 wodimstuff ++.PHONY : wodimstuff ++ ++# fast build rule for target. ++wodimstuff/fast: ++ $(MAKE) -f wodim/CMakeFiles/wodimstuff.dir/build.make wodim/CMakeFiles/wodimstuff.dir/build ++.PHONY : wodimstuff/fast ++ ++#============================================================================= ++# Target rules for targets named edc ++ ++# Build rule for target. ++edc: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 edc ++.PHONY : edc ++ ++# fast build rule for target. ++edc/fast: ++ $(MAKE) -f libedc/CMakeFiles/edc.dir/build.make libedc/CMakeFiles/edc.dir/build ++.PHONY : edc/fast ++ ++#============================================================================= ++# Target rules for targets named hfs_iso ++ ++# Build rule for target. ++hfs_iso: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 hfs_iso ++.PHONY : hfs_iso ++ ++# fast build rule for target. ++hfs_iso/fast: ++ $(MAKE) -f libhfs_iso/CMakeFiles/hfs_iso.dir/build.make libhfs_iso/CMakeFiles/hfs_iso.dir/build ++.PHONY : hfs_iso/fast ++ ++#============================================================================= ++# Target rules for targets named paranoia ++ ++# Build rule for target. ++paranoia: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 paranoia ++.PHONY : paranoia ++ ++# fast build rule for target. ++paranoia/fast: ++ $(MAKE) -f libparanoia/CMakeFiles/paranoia.dir/build.make libparanoia/CMakeFiles/paranoia.dir/build ++.PHONY : paranoia/fast ++ ++#============================================================================= ++# Target rules for targets named icedax ++ ++# Build rule for target. ++icedax: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 icedax ++.PHONY : icedax ++ ++# fast build rule for target. ++icedax/fast: ++ $(MAKE) -f icedax/CMakeFiles/icedax.dir/build.make icedax/CMakeFiles/icedax.dir/build ++.PHONY : icedax/fast ++ ++#============================================================================= ++# Target rules for targets named usal ++ ++# Build rule for target. ++usal: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 usal ++.PHONY : usal ++ ++# fast build rule for target. ++usal/fast: ++ $(MAKE) -f libusal/CMakeFiles/usal.dir/build.make libusal/CMakeFiles/usal.dir/build ++.PHONY : usal/fast ++ ++#============================================================================= ++# Target rules for targets named rols ++ ++# Build rule for target. ++rols: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 rols ++.PHONY : rols ++ ++# fast build rule for target. ++rols/fast: ++ $(MAKE) -f librols/CMakeFiles/rols.dir/build.make librols/CMakeFiles/rols.dir/build ++.PHONY : rols/fast ++ ++#============================================================================= ++# Target rules for targets named unls ++ ++# Build rule for target. ++unls: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 unls ++.PHONY : unls ++ ++# fast build rule for target. ++unls/fast: ++ $(MAKE) -f libunls/CMakeFiles/unls.dir/build.make libunls/CMakeFiles/unls.dir/build ++.PHONY : unls/fast ++ ++#============================================================================= ++# Target rules for targets named readom ++ ++# Build rule for target. ++readom: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 readom ++.PHONY : readom ++ ++# fast build rule for target. ++readom/fast: ++ $(MAKE) -f readom/CMakeFiles/readom.dir/build.make readom/CMakeFiles/readom.dir/build ++.PHONY : readom/fast ++ ++#============================================================================= ++# Target rules for targets named netscsid ++ ++# Build rule for target. ++netscsid: cmake_check_build_system ++ $(MAKE) -f CMakeFiles/Makefile2 netscsid ++.PHONY : netscsid ++ ++# fast build rule for target. ++netscsid/fast: ++ $(MAKE) -f netscsid/CMakeFiles/netscsid.dir/build.make netscsid/CMakeFiles/netscsid.dir/build ++.PHONY : netscsid/fast ++ ++# Help Target ++help: ++ @echo "The following are some of the valid targets for this Makefile:" ++ @echo "... all (the default if no target is provided)" ++ @echo "... clean" ++ @echo "... depend" ++ @echo "... install/strip" ++ @echo "... edit_cache" ++ @echo "... rebuild_cache" ++ @echo "... install" ++ @echo "... list_install_components" ++ @echo "... install/local" ++ @echo "... isodebug" ++ @echo "... genisoimage" ++ @echo "... isodump" ++ @echo "... isoinfo" ++ @echo "... devdump" ++ @echo "... isovfy" ++ @echo "... wodimstuff" ++ @echo "... wodim" ++ @echo "... edc" ++ @echo "... hfs_iso" ++ @echo "... paranoia" ++ @echo "... icedax" ++ @echo "... usal" ++ @echo "... rols" ++ @echo "... unls" ++ @echo "... readom" ++ @echo "... netscsid" ++.PHONY : help ++ ++ ++ ++#============================================================================= ++# Special targets to cleanup operation of make. ++ ++# Special rule to run CMake to check the build system integrity. ++# No rule that depends on this can have commands that come from listfiles ++# because they might be regenerated. ++cmake_check_build_system: ++ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 ++.PHONY : cmake_check_build_system + diff --git a/package/cdrkit/patches/patch-include_xconfig_h_in b/package/cdrkit/patches/patch-include_xconfig_h_in new file mode 100644 index 000000000..789849362 --- /dev/null +++ b/package/cdrkit/patches/patch-include_xconfig_h_in @@ -0,0 +1,10 @@ +--- cdrkit-1.1.11.orig/include/xconfig.h.in 2006-12-02 12:10:05.000000000 +0100 ++++ cdrkit-1.1.11/include/xconfig.h.in 2015-02-21 21:20:01.000000000 +0100 +@@ -187,7 +187,6 @@ + * they are placed before the large file tests. + */ + +-#define HAVE_RCMD 1 /* rcmd() is present in libc/libsocket */ + #define HAVE_SOCKET 1 /* socket() is present in libc/libsocket */ + #define HAVE_SOCKETPAIR 1 /* socketpair() is present in libc/libsocket */ + #define HAVE_GETSERVBYNAME 1 /* getservbyname() is present in libc/libsocket */ diff --git a/package/cmake/Makefile b/package/cmake/Makefile index a96a33493..2008780b7 100644 --- a/package/cmake/Makefile +++ b/package/cmake/Makefile @@ -4,9 +4,9 @@ include $(ADK_TOPDIR)/rules.mk PKG_NAME:= cmake -PKG_VERSION:= 3.1.2 +PKG_VERSION:= 3.1.3 PKG_RELEASE:= 1 -PKG_HASH:= 2b210f7d867a1e716c1895357ebe63c7b9ae61fdb5f2d300ab2f01795f085b35 +PKG_HASH:= 45f4d3fa8a2f61cc092ae461aac4cac1bab4ac6706f98274ea7f314dd315c6d0 PKG_DESCR:= build utility PKG_SECTION:= dev/tools PKG_URL:= http://www.cmake.org/ diff --git a/package/crda/Makefile b/package/crda/Makefile new file mode 100644 index 000000000..2b1d3a09f --- /dev/null +++ b/package/crda/Makefile @@ -0,0 +1,53 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= crda +PKG_VERSION:= 1.1.3 +PKG_RELEASE:= 1 +PKG_HASH:= aa8a7fe92f0765986c421a5b6768a185375ac210393df0605ee132f6754825f0 +PKG_DESCR:= central regulatory domain agent for wireless networks +PKG_SECTION:= net/wifi +PKG_DEPENDS:= libnl +PKG_BUILDDEP:= libnl +PKG_URL:= http://wireless.kernel.org/en/developers/Regulatory +PKG_SITES:= http://linuxwireless.org/download/crda/ + +DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.bz2 + +PKG_FLAVOURS_CRDA:= WITH_UDEV +PKGFD_WITH_UDEV:= install shipped udev rules +PKGFS_WITH_UDEV:= udev +PKGFB_WITH_UDEV:= eudev + +PKG_CHOICES_CRDA:= WITH_OPENSSL WITH_GCRYPT +PKGCD_WITH_OPENSSL:= ssl support via openssl library +PKGCD_WITH_GCRYPT:= ssl support via gcrypt library +PKGCB_WITH_OPENSSL:= openssl +PKGCB_WITH_GCRYPT:= libgcrypt +PKGCS_WITH_OPENSSL:= libopenssl +PKGCS_WITH_GCRYPT:= libgcrypt + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,CRDA,crda,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:= manual +ALL_TARGET:= all_noverify + +ifneq ($(ADK_PACKAGE_CRDA_WITH_OPENSSL),) +XAKE_FLAGS+= USE_OPENSSL=1 +endif + +crda-install: + $(INSTALL_DIR) $(IDIR_CRDA)/usr/sbin + $(INSTALL_BIN) $(WRKINST)/sbin/{crda,regdbdump} \ + $(IDIR_CRDA)/usr/sbin +ifneq ($(ADK_PACKAGE_CRDA_WITH_UDEV),) + $(INSTALL_DIR) $(IDIR_CRDA)/lib/udev/rules.d + $(INSTALL_DATA) $(WRKINST)/lib/udev/rules.d/85-regulatory.rules \ + $(IDIR_CRDA)/lib/udev/rules.d +endif + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/cryptodev-linux/Makefile b/package/cryptodev-linux/Makefile index b02bcaf4c..82e019acd 100644 --- a/package/cryptodev-linux/Makefile +++ b/package/cryptodev-linux/Makefile @@ -22,25 +22,23 @@ include ${ADK_TOPDIR}/mk/kernel-vars.mk $(eval $(call PKG_template,CRYPTODEV_LINUX,cryptodev-linux,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) CONFIG_STYLE:= manual -BUILD_STYLE:= manual +XAKE_FLAGS+= CRYPTODEV_CFLAGS='-DENABLE_ASYNC -fhonour-copts' \ + ARCH='${ADK_TARGET_KARCH}' \ + KERNEL_DIR='${LINUX_DIR}' \ + CROSS_COMPILE='${TARGET_CROSS}' +ALL_TARGET:= build INSTALL_STYLE:= manual -do-build: - ${MAKE} -C "${WRKBUILD}"/tests check - ${MAKE} -C "${WRKBUILD}" version.h - GCC_HONOUR_COPTS=0 LDFLAGS="" ${MAKE} -C ${LINUX_DIR} ${KERNEL_MAKE_OPTS} \ - M="${WRKBUILD}" modules - ${INSTALL_DIR} ${WRKINST}/usr/include/crypto - ${INSTALL_DATA} ${WRKBUILD}/crypto/cryptodev.h \ - ${WRKINST}/usr/include/crypto/ +post-build: + -${MAKE} -C "${WRKBUILD}"/tests check do-install: ${INSTALL_DIR} ${IDIR_CRYPTODEV_LINUX}/usr/bin for i in cipher cipher-aead hmac speed async_cipher async_hmac \ - async_speed sha_speed hashcrypt_speed fullspeed cipher-gcm \ - cipher-aead-srtp cipher_comp hash_comp hmac_comp; do \ + async_speed sha_speed hashcrypt_speed fullspeed cipher-gcm \ + cipher-aead-srtp cipher_comp hash_comp hmac_comp; do \ $(INSTALL_BIN) ${WRKBUILD}/tests/$$i ${IDIR_CRYPTODEV_LINUX}/usr/bin; \ - done + done ${INSTALL_DIR} ${IDIR_CRYPTODEV_LINUX}/usr/include/crypto ${INSTALL_DATA} ${WRKBUILD}/crypto/cryptodev.h \ ${IDIR_CRYPTODEV_LINUX}/usr/include/crypto/ diff --git a/package/curl/Makefile b/package/curl/Makefile index 7f0cda615..055e8ff11 100644 --- a/package/curl/Makefile +++ b/package/curl/Makefile @@ -4,9 +4,9 @@ include ${ADK_TOPDIR}/rules.mk PKG_NAME:= curl -PKG_VERSION:= 7.40.0 +PKG_VERSION:= 7.41.0 PKG_RELEASE:= 1 -PKG_HASH:= c2e0705a13e53f8f924d1eaeb2ab94f59a9e162007c489b9ab0c96238bddf84b +PKG_HASH:= 58c9f7cb1be9c26e6a2fd9326c14e054780dc4bb74b590a1d47fb3788a31535d PKG_DESCR:= client-side url transfer tool PKG_SECTION:= net/http PKG_DEPENDS:= libcurl diff --git a/package/dropbear/Makefile b/package/dropbear/Makefile index c951df96f..35b4263f2 100644 --- a/package/dropbear/Makefile +++ b/package/dropbear/Makefile @@ -15,7 +15,7 @@ PKG_SITES:= http://matt.ucc.asn.au/dropbear/releases/ DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2 PKG_SUBPKGS:= DROPBEAR DBCONVERT -PKGSD_DBCONVERT:= Utility for converting SSH private keys +PKGSD_DBCONVERT:= utility for converting ssh private keys PKG_FLAVOURS_DROPBEAR:= WITH_UTMP PKGFD_WITH_UTMP:= support writing /var/run/utmp diff --git a/package/e2fsprogs/Makefile b/package/e2fsprogs/Makefile index 2dd02edc4..83e3c66e0 100644 --- a/package/e2fsprogs/Makefile +++ b/package/e2fsprogs/Makefile @@ -4,28 +4,31 @@ include $(ADK_TOPDIR)/rules.mk PKG_NAME:= e2fsprogs -PKG_VERSION:= 1.42.10 -PKG_RELEASE:= 3 -PKG_HASH:= 7b6e85c666d8fdd6062c75ba953de0e5481673bebef5f40f749a52a46476e29f +PKG_VERSION:= 1.42.12 +PKG_RELEASE:= 1 +PKG_HASH:= 6dadcd3b759195150d20154ab9d6516e3b3cbb35d66d461f55ae94a2854e7de8 PKG_DESCR:= ext2/3/4 filesystem utilities PKG_SECTION:= sys/fs PKG_DEPENDS:= libpthread PKG_BUILDDEP:= util-linux PKG_URL:= http://e2fsprogs.sourceforge.net/ -PKG_SITES:= $(MASTER_SITE_SOURCEFORGE:=e2fsprogs/) +PKG_SITES:= https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v$(PKG_VERSION)/ PKG_OPTS:= dev PKG_NOPARALLEL:= 1 -DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz - PKG_SUBPKGS:= LIBE2FS LIBCOM_ERR LIBSS PKG_SUBPKGS+= RESIZE2FS TUNE2FS E2FSCK MKE2FS +PKG_SUBPKGS+= E2FSCK_STATIC TUNE2FS_STATIC PKGSD_LIBE2FS:= e2fsprogs library PKGSC_LIBE2FS:= libs/misc PKGSD_LIBCOM_ERR:= common error library PKGSC_LIBCOM_ERR:= libs/misc PKGSD_LIBSS:= subsystem command parsing library PKGSC_LIBSS:= libs/misc +PKGSD_E2FSCK_STATIC:= Static build of e2fsck +PKGSC_E2FSCK_STATIC:= sys/fs +PKGSD_TUNE2FS_STATIC:= Static build of tune2fs +PKGSC_TUNE2FS_STATIC:= sys/fs PKGSD_RESIZE2FS:= ext2/3/4 resize utility PKGSC_RESIZE2FS:= sys/fs PKGSS_RESIZE2FS:= libe2fs libcom-err libblkid @@ -48,21 +51,26 @@ $(eval $(call PKG_template,TUNE2FS,tune2fs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS $(eval $(call PKG_template,RESIZE2FS,resize2fs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_RESIZE2FS),$(PKGSD_RESIZE2FS),$(PKGSC_RESIZE2FS))) $(eval $(call PKG_template,MKE2FS,mke2fs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_MKE2FS),$(PKGSD_MKE2FS),$(PKGSC_MKE2FS))) $(eval $(call PKG_template,E2FSCK,e2fsck,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_E2FSCK),$(PKGSD_E2FSCK),$(PKGSC_E2FSCK))) +$(eval $(call PKG_template,E2FSCK_STATIC,e2fsck-static,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_E2FSCK_STATIC},${PKGSC_E2FSCK_STATIC})) +$(eval $(call PKG_template,TUNE2FS_STATIC,tune2fs-static,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_E2FSCK_STATIC},${PKGSC_E2FSCK_STATIC})) + ifeq ($(ADK_TARGET_USE_STATIC_LIBS),y) -CONFIGURE_ARGS+= --disable-elf-shlibs \ - --enable-libblkid +CONFIGURE_ARGS+= --disable-elf-shlibs else -CONFIGURE_ARGS+= --enable-elf-shlibs \ - --disable-libblkid +CONFIGURE_ARGS+= --enable-elf-shlibs endif CONFIGURE_ARGS+= --disable-rpath \ - --disable-libuuid \ + --enable-libuuid \ + --disable-uuidd \ + --enable-libblkid \ --disable-testio-debug \ --disable-debugfs \ + --enable-verbose-makecmds \ --disable-defrag TARGET_CFLAGS+= $(TARGET_CPPFLAGS) -I$(STAGING_TARGET_DIR)/usr/include +#TARGET_LDFLAGS+= -L${WRKSRC}/lib -L${WRKSRC}/lib/ext2fs MAKE_FLAGS+= BUILD_CC="$(HOST_CC)" \ BUILD_CFLAGS="$(HOST_CFLAGS) $(HOST_CPPFLAGS) -I$(WRKSRC)/lib -I." \ BUILD_LDFLAGS="$(HOST_LDFLAGS)" @@ -106,4 +114,16 @@ libss-install: $(CP) $(WRKINST)/usr/lib/libss.so* \ $(IDIR_LIBSS)/usr/lib +e2fsck-static-install: + ${MAKE} -C ${WRKBUILD}/e2fsck e2fsck.static + ${INSTALL_DIR} ${IDIR_E2FSCK_STATIC}/usr/sbin + ${INSTALL_BIN} ${WRKBUILD}/e2fsck/e2fsck.static \ + ${IDIR_E2FSCK_STATIC}/usr/sbin/e2fsck + +tune2fs-static-install: + ${MAKE} -C ${WRKBUILD}/misc tune2fs.static + ${INSTALL_DIR} ${IDIR_TUNE2FS_STATIC}/usr/sbin + ${INSTALL_BIN} ${WRKBUILD}/misc/tune2fs.static \ + ${IDIR_TUNE2FS_STATIC}/usr/sbin/tune2fs + include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/e2fsprogs/patches/patch-debugfs_dump_c b/package/e2fsprogs/patches/patch-debugfs_dump_c index 7e2868281..c244d28b8 100644 --- a/package/e2fsprogs/patches/patch-debugfs_dump_c +++ b/package/e2fsprogs/patches/patch-debugfs_dump_c @@ -1,5 +1,5 @@ ---- e2fsprogs-1.42.4.orig/debugfs/dump.c 2012-05-29 03:29:43.000000000 +0200 -+++ e2fsprogs-1.42.4/debugfs/dump.c 2012-07-26 18:48:09.000000000 +0200 +--- e2fsprogs-1.42.12.orig/debugfs/dump.c 2014-08-05 00:58:23.000000000 +0200 ++++ e2fsprogs-1.42.12/debugfs/dump.c 2015-02-24 13:49:24.673532944 +0100 @@ -22,7 +22,6 @@ #include <sys/types.h> #include <sys/stat.h> @@ -16,10 +16,10 @@ int i; if (fd != -1) -@@ -93,11 +91,6 @@ static void fix_perms(const char *cmd, c - - if (fd != -1) - close(fd); +@@ -90,11 +88,6 @@ static void fix_perms(const char *cmd, c + #endif + if (i == -1) + com_err(cmd, errno, "while changing ownership of %s", name); - - ut.actime = inode->i_atime; - ut.modtime = inode->i_mtime; diff --git a/package/e2fsprogs/patches/patch-debugfs_logdump_c b/package/e2fsprogs/patches/patch-debugfs_logdump_c index bc00efb0d..1e18e799a 100644 --- a/package/e2fsprogs/patches/patch-debugfs_logdump_c +++ b/package/e2fsprogs/patches/patch-debugfs_logdump_c @@ -1,5 +1,5 @@ ---- e2fsprogs-1.42.4.orig/debugfs/logdump.c 2012-06-04 18:42:23.000000000 +0200 -+++ e2fsprogs-1.42.4/debugfs/logdump.c 2012-07-26 18:48:09.000000000 +0200 +--- e2fsprogs-1.42.12.orig/debugfs/logdump.c 2014-07-06 06:13:18.000000000 +0200 ++++ e2fsprogs-1.42.12/debugfs/logdump.c 2015-02-24 13:49:37.416495054 +0100 @@ -22,7 +22,6 @@ #include <sys/types.h> #include <sys/stat.h> diff --git a/package/e2fsprogs/patches/patch-debugfs_set_fields_c b/package/e2fsprogs/patches/patch-debugfs_set_fields_c index 6168cd0c5..ce738b2e2 100644 --- a/package/e2fsprogs/patches/patch-debugfs_set_fields_c +++ b/package/e2fsprogs/patches/patch-debugfs_set_fields_c @@ -1,5 +1,5 @@ ---- e2fsprogs-1.42.4.orig/debugfs/set_fields.c 2012-06-04 18:42:23.000000000 +0200 -+++ e2fsprogs-1.42.4/debugfs/set_fields.c 2012-07-26 18:48:09.000000000 +0200 +--- e2fsprogs-1.42.12.orig/debugfs/set_fields.c 2014-08-19 14:24:52.000000000 +0200 ++++ e2fsprogs-1.42.12/debugfs/set_fields.c 2015-02-24 13:49:44.483474041 +0100 @@ -34,7 +34,6 @@ #include <strings.h> #endif diff --git a/package/e2fsprogs/patches/patch-e2fsck_Makefile_in b/package/e2fsprogs/patches/patch-e2fsck_Makefile_in new file mode 100644 index 000000000..9bafdabee --- /dev/null +++ b/package/e2fsprogs/patches/patch-e2fsck_Makefile_in @@ -0,0 +1,11 @@ +--- e2fsprogs-1.42.12.orig/e2fsck/Makefile.in 2014-08-02 22:26:22.000000000 +0200 ++++ e2fsprogs-1.42.12/e2fsck/Makefile.in 2015-02-24 13:53:08.463908514 +0100 +@@ -120,7 +120,7 @@ e2fsck: $(OBJS) $(DEPLIBS) + + e2fsck.static: $(OBJS) $(STATIC_DEPLIBS) + $(E) " LD $@" +- $(Q) $(LD) $(LDFLAGS_STATIC) -o e2fsck.static $(OBJS) $(STATIC_LIBS) ++ $(LD) $(LDFLAGS_STATIC) -o e2fsck.static $(OBJS) $(STATIC_LIBS) + + e2fsck.profiled: $(OBJS) $(PROFILED_DEPLIBS) + $(E) " LD $@" diff --git a/package/e2fsprogs/patches/patch-misc_Makefile_in b/package/e2fsprogs/patches/patch-misc_Makefile_in index 614725007..78d736745 100644 --- a/package/e2fsprogs/patches/patch-misc_Makefile_in +++ b/package/e2fsprogs/patches/patch-misc_Makefile_in @@ -1,50 +1,15 @@ ---- e2fsprogs-1.42.10.orig/misc/Makefile.in 2014-05-15 19:04:08.000000000 +0200 -+++ e2fsprogs-1.42.10/misc/Makefile.in 2014-07-08 21:15:18.000000000 +0200 -@@ -17,9 +17,6 @@ INSTALL = @INSTALL@ - @IMAGER_CMT@E2IMAGE_PROG= e2image - @IMAGER_CMT@E2IMAGE_MAN= e2image.8 - --@UUIDD_CMT@UUIDD_PROG= uuidd --@UUIDD_CMT@UUIDD_MAN= uuidd.8 -- - @BLKID_CMT@BLKID_PROG= blkid - @BLKID_CMT@BLKID_MAN= blkid.8 - -@@ -35,8 +32,8 @@ SMANPAGES= tune2fs.8 mklost+found.8 mke2 - $(UUIDD_MAN) $(E4DEFRAG_MAN) @FSCK_MAN@ - FMANPAGES= mke2fs.conf.5 ext4.5 - --UPROGS= chattr lsattr @UUID_CMT@ uuidgen --UMANPAGES= chattr.1 lsattr.1 @UUID_CMT@ uuidgen.1 -+UPROGS= chattr lsattr -+UMANPAGES= chattr.1 lsattr.1 - - LPROGS= @E2INITRD_PROG@ - -@@ -46,8 +43,6 @@ MKE2FS_OBJS= mke2fs.o util.o profile.o p - mk_hugefiles.o - CHATTR_OBJS= chattr.o - LSATTR_OBJS= lsattr.o --UUIDGEN_OBJS= uuidgen.o --UUIDD_OBJS= uuidd.o - DUMPE2FS_OBJS= dumpe2fs.o - BADBLOCKS_OBJS= badblocks.o - E2IMAGE_OBJS= e2image.o -@@ -64,8 +59,6 @@ PROFILED_MKE2FS_OBJS= profiled/mke2fs.o - profiled/prof_err.o profiled/default_profile.o - PROFILED_CHATTR_OBJS= profiled/chattr.o - PROFILED_LSATTR_OBJS= profiled/lsattr.o --PROFILED_UUIDGEN_OBJS= profiled/uuidgen.o --PROFILED_UUIDD_OBJS= profiled/uuidd.o - PROFILED_DUMPE2FS_OBJS= profiled/dumpe2fs.o - PROFILED_BADBLOCKS_OBJS= profiled/badblocks.o - PROFILED_E2IMAGE_OBJS= profiled/e2image.o -@@ -80,7 +73,7 @@ PROFILED_E4DEFRAG_OBJS= profiled/e4defra - SRCS= $(srcdir)/tune2fs.c $(srcdir)/mklost+found.c $(srcdir)/mke2fs.c $(srcdir)/mk_hugefiles.c \ - $(srcdir)/chattr.c $(srcdir)/lsattr.c $(srcdir)/dumpe2fs.c \ - $(srcdir)/badblocks.c $(srcdir)/fsck.c $(srcdir)/util.c \ -- $(srcdir)/uuidgen.c $(srcdir)/blkid.c $(srcdir)/logsave.c \ -+ $(srcdir)/blkid.c $(srcdir)/logsave.c \ - $(srcdir)/filefrag.c $(srcdir)/base_device.c \ - $(srcdir)/ismounted.c $(srcdir)/../e2fsck/profile.c \ - $(srcdir)/e2undo.c $(srcdir)/e2freefrag.c + when linking tune2fs.static, pass libs in the correct order + (libuuid.a depends on libext2fs.a and therefore needs to come before that) +--- e2fsprogs-1.42.12.orig/misc/Makefile.in 2014-08-03 01:41:18.000000000 +0200 ++++ e2fsprogs-1.42.12/misc/Makefile.in 2015-02-10 18:19:51.022952937 +0100 +@@ -165,8 +165,8 @@ tune2fs: $(TUNE2FS_OBJS) $(DEPLIBS) $(DE + tune2fs.static: $(TUNE2FS_OBJS) $(STATIC_DEPLIBS) $(STATIC_LIBE2P) $(DEPSTATIC_LIBBLKID) + $(E) " LD $@" + $(Q) $(CC) $(LDFLAGS_STATIC) -o tune2fs.static $(TUNE2FS_OBJS) \ +- $(STATIC_LIBS) $(STATIC_LIBBLKID) $(STATIC_LIBUUID) \ +- $(STATIC_LIBQUOTA) $(STATIC_LIBE2P) $(LIBINTL) $(SYSLIBS) ++ $(STATIC_LIBBLKID) $(STATIC_LIBUUID) \ ++ $(STATIC_LIBQUOTA) $(STATIC_LIBE2P) $(STATIC_LIBS) $(LIBINTL) $(SYSLIBS) + + tune2fs.profiled: $(TUNE2FS_OBJS) $(PROFILED_DEPLIBS) \ + $(PROFILED_E2P) $(DEPPROFILED_LIBBLKID) $(DEPPROFILED_LIBUUID) \ diff --git a/package/e2fsprogs/patches/patch-misc_e2initrd_helper_c b/package/e2fsprogs/patches/patch-misc_e2initrd_helper_c index 736c1c948..aca847680 100644 --- a/package/e2fsprogs/patches/patch-misc_e2initrd_helper_c +++ b/package/e2fsprogs/patches/patch-misc_e2initrd_helper_c @@ -1,5 +1,5 @@ ---- e2fsprogs-1.42.4.orig/misc/e2initrd_helper.c 2012-03-18 19:18:33.000000000 +0100 -+++ e2fsprogs-1.42.4/misc/e2initrd_helper.c 2012-07-26 18:48:09.000000000 +0200 +--- e2fsprogs-1.42.12.orig/misc/e2initrd_helper.c 2014-07-03 16:33:48.000000000 +0200 ++++ e2fsprogs-1.42.12/misc/e2initrd_helper.c 2015-02-24 13:53:24.429861041 +0100 @@ -24,7 +24,6 @@ #include <sys/types.h> #include <sys/stat.h> diff --git a/package/e2fsprogs/patches/patch-misc_e2undo_c b/package/e2fsprogs/patches/patch-misc_e2undo_c index bc9fdb619..5281364a7 100644 --- a/package/e2fsprogs/patches/patch-misc_e2undo_c +++ b/package/e2fsprogs/patches/patch-misc_e2undo_c @@ -1,6 +1,6 @@ optind seems to need unistd.h, not only getopt.h ---- e2fsprogs-1.42.4.orig/misc/e2undo.c 2012-03-18 19:18:33.000000000 +0100 -+++ e2fsprogs-1.42.4/misc/e2undo.c 2012-07-26 18:48:09.000000000 +0200 +--- e2fsprogs-1.42.12.orig/misc/e2undo.c 2014-07-03 16:33:48.000000000 +0200 ++++ e2fsprogs-1.42.12/misc/e2undo.c 2015-02-24 13:53:30.092844203 +0100 @@ -20,6 +20,7 @@ #if HAVE_ERRNO_H #include <errno.h> diff --git a/package/e2fsprogs/patches/patch-util_subst_c b/package/e2fsprogs/patches/patch-util_subst_c index 601f7fa92..2874794d6 100644 --- a/package/e2fsprogs/patches/patch-util_subst_c +++ b/package/e2fsprogs/patches/patch-util_subst_c @@ -1,6 +1,6 @@ ---- e2fsprogs-1.42.10.orig/util/subst.c 2014-05-15 19:04:08.000000000 +0200 -+++ e2fsprogs-1.42.10/util/subst.c 2014-07-08 21:18:41.000000000 +0200 -@@ -358,7 +358,7 @@ int main(int argc, char **argv) +--- e2fsprogs-1.42.12.orig/util/subst.c 2014-08-02 22:26:22.000000000 +0200 ++++ e2fsprogs-1.42.12/util/subst.c 2015-02-24 13:53:42.034808695 +0100 +@@ -363,7 +363,7 @@ int main(int argc, char **argv) if (fd > 0) { /* save the original atime, if possible */ if (fstat(fd, &stbuf) == 0) { diff --git a/package/ebtables/patches/patch-Makefile b/package/ebtables/patches/patch-Makefile index f4e293eaf..3cbce1353 100644 --- a/package/ebtables/patches/patch-Makefile +++ b/package/ebtables/patches/patch-Makefile @@ -22,66 +22,3 @@ ifeq ($(shell uname -m),sparc64) CFLAGS+=-DEBT_MIN_ALIGN=8 -DKERNEL_64_USERSPACE_32 -@@ -157,31 +157,31 @@ tmp3:=$(shell printf $(PIPE) | sed 's/\/ - scripts: ebtables-save ebtables.sysv ebtables-config - cat ebtables-save | sed 's/__EXEC_PATH__/$(tmp1)/g' > ebtables-save_ - mkdir -p $(DESTDIR)$(BINDIR) -- install -m 0755 -o root -g root ebtables-save_ $(DESTDIR)$(BINDIR)/ebtables-save -+ install -m 0755 ebtables-save_ $(DESTDIR)$(BINDIR)/ebtables-save - cat ebtables.sysv | sed 's/__EXEC_PATH__/$(tmp1)/g' | sed 's/__SYSCONFIG__/$(tmp2)/g' > ebtables.sysv_ - if [ "$(DESTDIR)" != "" ]; then mkdir -p $(DESTDIR)$(INITDIR); fi -- if test -d $(DESTDIR)$(INITDIR); then install -m 0755 -o root -g root ebtables.sysv_ $(DESTDIR)$(INITDIR)/ebtables; fi -+ if test -d $(DESTDIR)$(INITDIR); then install -m 0755 ebtables.sysv_ $(DESTDIR)$(INITDIR)/ebtables; fi - cat ebtables-config | sed 's/__SYSCONFIG__/$(tmp2)/g' > ebtables-config_ - if [ "$(DESTDIR)" != "" ]; then mkdir -p $(DESTDIR)$(SYSCONFIGDIR); fi -- if test -d $(DESTDIR)$(SYSCONFIGDIR); then install -m 0600 -o root -g root ebtables-config_ $(DESTDIR)$(SYSCONFIGDIR)/ebtables-config; fi -+ if test -d $(DESTDIR)$(SYSCONFIGDIR); then install -m 0600 ebtables-config_ $(DESTDIR)$(SYSCONFIGDIR)/ebtables-config; fi - rm -f ebtables-save_ ebtables.sysv_ ebtables-config_ - - tmp4:=$(shell printf $(LOCKFILE) | sed 's/\//\\\//g') - $(MANDIR)/man8/ebtables.8: ebtables.8 - mkdir -p $(DESTDIR)$(@D) - sed -e 's/$$(VERSION)/$(PROGVERSION)/' -e 's/$$(DATE)/$(PROGDATE)/' -e 's/$$(LOCKFILE)/$(tmp4)/' ebtables.8 > ebtables.8_ -- install -m 0644 -o root -g root ebtables.8_ $(DESTDIR)$@ -+ install -m 0644 ebtables.8_ $(DESTDIR)$@ - rm -f ebtables.8_ - - $(DESTDIR)$(ETHERTYPESFILE): ethertypes - mkdir -p $(@D) -- install -m 0644 -o root -g root $< $@ -+ install -m 0644 $< $@ - - .PHONY: exec - exec: ebtables ebtables-restore - mkdir -p $(DESTDIR)$(BINDIR) -- install -m 0755 -o root -g root $(PROGNAME) $(DESTDIR)$(BINDIR)/$(PROGNAME) -- install -m 0755 -o root -g root ebtables-restore $(DESTDIR)$(BINDIR)/ebtables-restore -+ install -m 0755 $(PROGNAME) $(DESTDIR)$(BINDIR)/$(PROGNAME) -+ install -m 0755 ebtables-restore $(DESTDIR)$(BINDIR)/ebtables-restore - - .PHONY: install - install: $(MANDIR)/man8/ebtables.8 $(DESTDIR)$(ETHERTYPESFILE) exec scripts -@@ -205,18 +205,18 @@ release: - rm -f extensions/ebt_inat.c - rm -rf $(CVSDIRS) - mkdir -p include/linux/netfilter_bridge -- install -m 0644 -o root -g root \ -+ install -m 0644 \ - $(KERNEL_INCLUDES)/linux/netfilter_bridge.h include/linux/ - # To keep possible compile error complaints about undefined ETH_P_8021Q - # off my back -- install -m 0644 -o root -g root \ -+ install -m 0644 \ - $(KERNEL_INCLUDES)/linux/if_ether.h include/linux/ -- install -m 0644 -o root -g root \ -+ install -m 0644 \ - $(KERNEL_INCLUDES)/linux/types.h include/linux/ -- install -m 0644 -o root -g root \ -+ install -m 0644 \ - $(KERNEL_INCLUDES)/linux/netfilter_bridge/*.h \ - include/linux/netfilter_bridge/ -- install -m 0644 -o root -g root \ -+ install -m 0644 \ - include/ebtables.h include/linux/netfilter_bridge/ - make clean - touch * diff --git a/package/elfutils/Makefile b/package/elfutils/Makefile new file mode 100644 index 000000000..825ab10eb --- /dev/null +++ b/package/elfutils/Makefile @@ -0,0 +1,37 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= elfutils +PKG_VERSION:= 0.161 +PKG_RELEASE:= 1 +PKG_HASH:= 570c91a1783fa5386aaa2dfdd08dda1de777c2b63bf3b9c1437d635ffdd7a070 +PKG_DESCR:= libraries/utilities to handle elf objects (drop in replacement for libelf) +PKG_SECTION:= base/libs +PKG_URL:= https://fedorahosted.org/elfutils/ +PKG_SITES:= https://fedorahosted.org/releases/e/l/elfutils/$(PKG_VERSION)/ + +# require argp() +PKG_LIBC_DEPENDS:= glibc + +DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.bz2 + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,ELFUTILS,elfutils,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +# not only because we pass -DNDEBUG, this package won't build with -Werror +TARGET_CFLAGS+= -Wno-error + +elfutils-install: + $(INSTALL_DIR) $(IDIR_ELFUTILS)/usr/lib/elfutils + $(CP) $(WRKINST)/usr/lib/lib{asm,dw,elf}*.so* \ + $(IDIR_ELFUTILS)/usr/lib + $(CP) $(WRKINST)/usr/lib/elfutils/libebl*.so \ + $(IDIR_ELFUTILS)/usr/lib/elfutils + $(INSTALL_DIR) $(IDIR_ELFUTILS)/usr/bin + $(INSTALL_BIN) $(WRKINST)/usr/bin/* \ + $(IDIR_ELFUTILS)/usr/bin + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/gdb/Makefile b/package/gdb/Makefile index 8cb1b5b8f..3dbe4d2f9 100644 --- a/package/gdb/Makefile +++ b/package/gdb/Makefile @@ -43,5 +43,7 @@ XAKE_FLAGS+= GCC_HONOUR_COPTS:=s gdb-install: ${INSTALL_DIR} ${IDIR_GDB}/usr/bin ${INSTALL_BIN} ${WRKINST}/usr/bin/gdb ${IDIR_GDB}/usr/bin/ + # shipped libbfd conflicts with system wide one + rm -f ${WRKINST}/usr/lib/libbfd* include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/hwids/Makefile b/package/hwids/Makefile new file mode 100644 index 000000000..ceeca3a72 --- /dev/null +++ b/package/hwids/Makefile @@ -0,0 +1,61 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= hwids +PKG_VERSION:= 20150129 +PKG_RELEASE:= 1 +PKG_HASH:= 33a7f4dbf14704076b0fe1d0052e86bb618e386a1ff18107097311df44f979d7 +PKG_DESCR:= combined repository of pci.ids and usb.ids +PKG_SECTION:= sys/hw +PKG_URL:= https://github.com/gentoo/hwids +PKG_SITES:= https://github.com/gentoo/hwids/archive/ + +DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz +# typical problem of having tags like '<name>-<version>' in github +WRKDIST= $(WRKDIR)/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION) + +PKG_SUBPKGS:= HWIDS_NET HWIDS_PCI HWIDS_USB +PKGSD_HWIDS_NET:= HWIDS files oui.txt and iab.txt +PKGSD_HWIDS_PCI:= HWIDS file pci.ids +PKGSD_HWIDS_USB:= HWIDS file usb.ids + +PKG_FLAVOURS_HWIDS:= WITH_GZIP +PKGFD_WITH_GZIP:= gzip pci.ids and usb.ids before installation + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,HWIDS_NET,hwids-net,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_HWIDS_NET),$(PKG_SECTION))) +$(eval $(call PKG_template,HWIDS_PCI,hwids-pci,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_HWIDS_PCI),$(PKG_SECTION))) +$(eval $(call PKG_template,HWIDS_USB,hwids-usb,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_HWIDS_USB),$(PKG_SECTION))) + +CONFIG_STYLE:= manual +XAKE_FLAGS+= NET=yes \ + PCI=yes \ + UDEV=no \ + USB=yes +# note: Can't pass GZIP=yes to make, as this will turn it +# into an env var automatically which makes gzip trip. +# Therefore assume here that GZIP=yes is the default. +ifneq ($(ADK_PACKAGE_HWIDS_WITH_GZIP),y) +XAKE_FLAGS+= GZIP=no +endif + +define HWIDS_INSTALL_template +$(2)-install: + $$(INSTALL_DIR) $$(IDIR_$(1))/usr/share/misc + $$(INSTALL_DATA) $$(patsubst %,$$(WRKINST)/usr/share/misc/%,$(3)) \ + $$(IDIR_$(1))/usr/share/misc/ +endef + +$(eval $(call HWIDS_INSTALL_template,HWIDS_NET,hwids-net,oui.txt iab.txt)) +ifeq ($(ADK_PACKAGE_HWIDS_WITH_GZIP),y) +$(eval $(call HWIDS_INSTALL_template,HWIDS_PCI,hwids-pci,pci.ids.gz)) +$(eval $(call HWIDS_INSTALL_template,HWIDS_USB,hwids-usb,usb.ids.gz)) +else +$(eval $(call HWIDS_INSTALL_template,HWIDS_PCI,hwids-pci,pci.ids)) +$(eval $(call HWIDS_INSTALL_template,HWIDS_USB,hwids-usb,usb.ids)) +endif + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/i2400m-fw/Makefile b/package/i2400m-fw/Makefile new file mode 100644 index 000000000..85aef1ecd --- /dev/null +++ b/package/i2400m-fw/Makefile @@ -0,0 +1,30 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= i2400m-fw +PKG_VERSION:= 1.5.0 +PKG_RELEASE:= 1 +PKG_HASH:= edcb7c5322c0185173a2dc79b3df4bc74964edfa741ebf9a09cd70a32d758c3d +PKG_DESCR:= intel (R) wimax 5150/5350/6250 firmware +PKG_SECTION:= sys/firmware +PKG_URL:= http://www.linuxwimax.org +PKG_SITES:= "http://www.linuxwimax.org/Download?action=AttachFile&do=get&target=" + +DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.bz2 + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,I2400M_FW,i2400m-fw,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:= manual +BUILD_STYLE:= manual +INSTALL_STYLE:= manual + +do-install: + $(INSTALL_DIR) $(IDIR_I2400M_FW)/lib/firmware + $(INSTALL_DATA) $(WRKDIST)/*-fw-usb-*.sbcf \ + $(IDIR_I2400M_FW)/lib/firmware/ + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/inotify-tools/Makefile b/package/inotify-tools/Makefile new file mode 100644 index 000000000..82ea714d4 --- /dev/null +++ b/package/inotify-tools/Makefile @@ -0,0 +1,41 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= inotify-tools +PKG_VERSION:= 3.14 +PKG_RELEASE:= 1 +PKG_HASH:= 222bcca8893d7bf8a1ce207fb39ceead5233b5015623d099392e95197676c92f +PKG_DESCR:= command line programs providing a simple interface to inotify +PKG_SECTION:= sys/fs +PKG_URL:= https://github.com/rvoicilas/inotify-tools/wiki +PKG_SITES:= http://github.com/downloads/rvoicilas/inotify-tools/ + +DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz + +PKG_SUBPKGS:= INOTIFYWAIT INOTIFYWATCH LIBINOTIFYTOOLS +PKGSC_LIBINOTIFYTOOLS:= libs/misc +PKGSD_INOTIFYWAIT:= wait for changes to files using inotify +PKGSD_INOTIFYWATCH:= gather filesystem access statistics using inotify +PKGSD_LIBINOTIFYTOOLS:= inotify tools library + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,INOTIFYWAIT,inotifywait,$(PKG_VERSION)-$(PKG_RELEASE),libinotifytools,$(PKGSD_INOTIFYWAIT),$(PKG_SECTION))) +$(eval $(call PKG_template,INOTIFYWATCH,inotifywatch,$(PKG_VERSION)-$(PKG_RELEASE),libinotifytools,$(PKGSD_INOTIFYWATCH),$(PKG_SECTION))) +$(eval $(call PKG_template,LIBINOTIFYTOOLS,libinotifytools,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_LIBINOTIFYTOOLS),$(PKGSC_LIBINOTIFYTOOLS))) + +inotifywait-install: + $(INSTALL_DIR) $(IDIR_INOTIFYWAIT)/usr/bin + $(INSTALL_BIN) $(WRKINST)/usr/bin/inotifywait $(IDIR_INOTIFYWAIT)/usr/bin + +inotifywatch-install: + $(INSTALL_DIR) $(IDIR_INOTIFYWATCH)/usr/bin + $(INSTALL_BIN) $(WRKINST)/usr/bin/inotifywatch $(IDIR_INOTIFYWATCH)/usr/bin + +libinotifytools-install: + $(INSTALL_DIR) $(IDIR_LIBINOTIFYTOOLS)/usr/lib + $(CP) $(WRKINST)/usr/lib/libinotifytools.so* $(IDIR_LIBINOTIFYTOOLS)/usr/lib + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/ipmitool/Makefile b/package/ipmitool/Makefile new file mode 100644 index 000000000..2fec3dd77 --- /dev/null +++ b/package/ipmitool/Makefile @@ -0,0 +1,28 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= ipmitool +PKG_VERSION:= 1.8.15 +PKG_RELEASE:= 1 +PKG_HASH:= f0964e644a8e693932a3e8da6929d5598ed24645bacd51fbb1a4a09b5e47cf78 +PKG_DESCR:= utility for controlling ipmi enabled devices +PKG_SECTION:= net/misc +PKG_URL:= http://ipmitool.sf.net/ +PKG_SITES:= $(MASTER_SITE_SOURCEFORGE:=ipmitool/) + +DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,IPMITOOL,ipmitool,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIGURE_ENV+= ac_cv_func_malloc_0_nonnull=yes + +ipmitool-install: + $(INSTALL_DIR) $(IDIR_IPMITOOL)/usr/bin + $(INSTALL_BIN) $(WRKINST)/usr/bin/ipmitool \ + $(IDIR_IPMITOOL)/usr/bin + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/kexec-tools/Makefile b/package/kexec-tools/Makefile index 8745ed687..3d633aeb5 100644 --- a/package/kexec-tools/Makefile +++ b/package/kexec-tools/Makefile @@ -4,9 +4,9 @@ include $(ADK_TOPDIR)/rules.mk PKG_NAME:= kexec-tools -PKG_VERSION:= 2.0.8 -PKG_RELEASE:= 2 -PKG_HASH:= f3abe96fa0793e63936725a4471429f070039a1e81e605deb378747194a50c47 +PKG_VERSION:= 2.0.9 +PKG_RELEASE:= 1 +PKG_HASH:= 8ae34a9ceb76350954e1e1e3ca9ab51da15862bd5f2fd14392208e60fb454f71 PKG_DESCR:= kernel exec tools PKG_SECTION:= sys/misc PKG_DEPENDS:= zlib diff --git a/package/kismet/patches/patch-Makefile_in b/package/kismet/patches/patch-Makefile_in deleted file mode 100644 index 97a3cad75..000000000 --- a/package/kismet/patches/patch-Makefile_in +++ /dev/null @@ -1,60 +0,0 @@ ---- kismet-2011-01-R1.orig/Makefile.in 2010-12-19 15:20:16.000000000 +0100 -+++ kismet-2011-01-R1/Makefile.in 2011-02-04 23:14:39.000000000 +0100 -@@ -112,26 +112,26 @@ commoninstall: - - if test -e $(NC); then \ - echo "Installing client"; \ -- $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 555 scripts/kismet $(BIN)/kismet; \ -- $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 555 $(NC) $(BIN)/$(NC); \ -+ $(INSTALL) -m 555 scripts/kismet $(BIN)/kismet; \ -+ $(INSTALL) -m 555 $(NC) $(BIN)/$(NC); \ - fi; -- $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 555 $(PS) $(BIN)/$(PS); -- $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 555 $(DRONE) $(BIN)/$(DRONE); -+ $(INSTALL) -m 555 $(PS) $(BIN)/$(PS); -+ $(INSTALL) -m 555 $(DRONE) $(BIN)/$(DRONE); - - mkdir -p $(MAN)/man1 -- $(INSTALL) -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet.1 $(MAN)/man1/kismet.1 -- $(INSTALL) -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_drone.1 $(MAN)/man1/kismet_drone.1 -+ $(INSTALL) -m 644 man/kismet.1 $(MAN)/man1/kismet.1 -+ $(INSTALL) -m 644 man/kismet_drone.1 $(MAN)/man1/kismet_drone.1 - - mkdir -p $(MAN)/man5 -- $(INSTALL) -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet.conf.5 $(MAN)/man5/kismet.conf.5 -- $(INSTALL) -o $(INSTUSR) -g $(MANGRP) -m 644 man/kismet_drone.conf.5 $(MAN)/man5/kismet_drone.conf.5 -+ $(INSTALL) -m 644 man/kismet.conf.5 $(MAN)/man5/kismet.conf.5 -+ $(INSTALL) -m 644 man/kismet_drone.conf.5 $(MAN)/man5/kismet_drone.conf.5 - - mkdir -p $(WAV) -- $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/new.wav $(WAV)/new.wav -- $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/packet.wav $(WAV)/packet.wav -- $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/alert.wav $(WAV)/alert.wav -- $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/gpslost.wav $(WAV)/gpslost.wav -- $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 644 wav/gpslock.wav $(WAV)/gpslock.wav -+ $(INSTALL) -m 644 wav/new.wav $(WAV)/new.wav -+ $(INSTALL) -m 644 wav/packet.wav $(WAV)/packet.wav -+ $(INSTALL) -m 644 wav/alert.wav $(WAV)/alert.wav -+ $(INSTALL) -m 644 wav/gpslost.wav $(WAV)/gpslost.wav -+ $(INSTALL) -m 644 wav/gpslock.wav $(WAV)/gpslock.wav - - suidinstall: $(CS) - -groupadd -f $(SUIDGROUP) -@@ -174,7 +174,7 @@ install: $(INSTBINS) - echo "if there have been any changes to the base config you will need"; \ - echo "to add them to your config file."; \ - else \ -- $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \ -+ $(INSTALL) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \ - echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet.conf $(ETC)/kismet.conf; \ - echo "Installed config into $(ETC)/kismet.conf."; \ - fi -@@ -183,7 +183,7 @@ install: $(INSTBINS) - echo "if there have been any changes to the base config you will need"; \ - echo "to add them to your config file."; \ - else \ -- $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \ -+ $(INSTALL) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \ - echo install -o $(INSTUSR) -g $(INSTGRP) -m 644 conf/kismet_drone.conf $(ETC)/kismet_drone.conf; \ - echo "Installed drone config into $(ETC)/kismet_drone.conf."; \ - fi diff --git a/package/ldd/Makefile b/package/ldd/Makefile new file mode 100644 index 000000000..587f27acb --- /dev/null +++ b/package/ldd/Makefile @@ -0,0 +1,26 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk +include $(ADK_TOPDIR)/toolchain/glibc/Makefile.inc + +PKG_NAME:= ldd +PKG_DESCR:= Shared library dependency display tool +PKG_SECTION:= dev/tools +PKG_DEPENDS:= glibc bash +PKG_BUILDDEP:= glibc +NO_DISTFILES:= 1 + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,LDD,$(PKG_NAME),$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) + +CONFIG_STYLE:= manual +BUILD_STYLE:= manual +INSTALL_STYLE:= manual + +do-install: + $(INSTALL_DIR) $(IDIR_LDD)/usr/bin + ${INSTALL_BIN} ${STAGING_TARGET_DIR}/usr/bin/ldd ${IDIR_LDD}/usr/bin + +include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/libcap/Makefile b/package/libcap/Makefile index c7227abf3..a0d982b14 100644 --- a/package/libcap/Makefile +++ b/package/libcap/Makefile @@ -4,25 +4,31 @@ include $(ADK_TOPDIR)/rules.mk PKG_NAME:= libcap -PKG_VERSION:= 2.22 -PKG_RELEASE:= 3 +PKG_VERSION:= 2.24 +PKG_RELEASE:= 1 PKG_HASH:= 73ebbd4877b5f69dd28b72098e510c5b318bc480f8201c4061ac98b78c04050f PKG_DESCR:= capabilities library PKG_SECTION:= libs/misc -PKG_BUILDDEP:= pam PKG_URL:= http://www.friedhoff.org/posixfilecaps.html -PKG_SITES:= http://openadk.org/distfiles/ +PKG_SITES:= https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/ PKG_OPTS:= dev -DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2 - include $(ADK_TOPDIR)/mk/package.mk $(eval $(call PKG_template,LIBCAP,libcap,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) +# for Darwin hosts CPPFLAGS_FOR_BUILD+= -I$(STAGING_TARGET_DIR)/usr/include CONFIG_STYLE:= manual +ifeq ($(ADK_TARGET_USE_STATIC_LIBS),y) +ALL_TARGET:= static progs +INSTALL_TARGET:= install-static +else +ALL_TARGET:= shared progs +INSTALL_TARGET:= install-shared +endif + libcap-install: $(INSTALL_DIR) $(IDIR_LIBCAP)/usr/lib $(CP) $(WRKINST)/usr/lib/libcap*.so* \ diff --git a/package/libcap/patches/patch-Make_Rules b/package/libcap/patches/patch-Make_Rules index 09f31b3b4..a6a637d3b 100644 --- a/package/libcap/patches/patch-Make_Rules +++ b/package/libcap/patches/patch-Make_Rules @@ -1,59 +1,61 @@ ---- libcap-2.22.orig/Make.Rules 2011-07-25 04:18:23.000000000 +0200 -+++ libcap-2.22/Make.Rules 2013-11-08 16:22:41.000000000 +0100 -@@ -12,10 +12,6 @@ FAKEROOT=$(DESTDIR) +--- libcap-2.24.orig/Make.Rules 2014-01-06 02:16:21.000000000 +0100 ++++ libcap-2.24/Make.Rules 2015-02-26 14:01:28.000000000 +0100 +@@ -12,22 +12,12 @@ FAKEROOT=$(DESTDIR) # These choices are motivated by the fact that getcap and setcap are # administrative operations that could be needed to recover a system. -ifndef lib --lib=$(shell ldd /usr/bin/ld|fgrep ld-linux|cut -d/ -f2) +-lib=$(shell ldd /usr/bin/ld|egrep "ld-linux|ld.so"|cut -d/ -f2) -endif - - ifdef prefix - exec_prefix=$(prefix) - lib_prefix=$(exec_prefix) -@@ -23,7 +19,7 @@ inc_prefix=$(lib_prefix) - man_prefix=$(prefix)/share - else +-ifdef prefix +-exec_prefix=$(prefix) +-lib_prefix=$(exec_prefix) +-inc_prefix=$(lib_prefix) +-man_prefix=$(prefix)/share +-else ++lib=lib prefix=/usr -exec_prefix= -+exec_prefix=/usr ++exec_prefix=$(prefix) lib_prefix=$(exec_prefix) inc_prefix=$(prefix) man_prefix=$(prefix)/share -@@ -34,7 +30,7 @@ endif - MANDIR=$(FAKEROOT)$(man_prefix)/man - SBINDIR=$(FAKEROOT)$(exec_prefix)/sbin - INCDIR=$(FAKEROOT)$(inc_prefix)/include --LIBDIR=$(FAKEROOT)$(lib_prefix)/$(lib) -+LIBDIR=$(FAKEROOT)$(lib_prefix)/lib +-endif - # common defines for libcap - LIBTITLE=libcap -@@ -47,12 +43,13 @@ MINOR=22 - KERNEL_HEADERS := $(topdir)/libcap/include - IPATH += -fPIC -I$(topdir)/libcap/include -I$(KERNEL_HEADERS) + # Target directories + +@@ -48,28 +38,28 @@ MINOR=24 + KERNEL_HEADERS := $(topdir)/libcap/include/uapi + IPATH += -fPIC -I$(KERNEL_HEADERS) -I$(topdir)/libcap/include -CC := gcc -CFLAGS := -O2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 +CC ?= gcc -+CFLAGS ?= -O2 -+CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 ++CFLAGS ?= -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 BUILD_CC := $(CC) BUILD_CFLAGS := $(CFLAGS) $(IPATH) -AR := ar -RANLIB := ranlib +-DEBUG = -g #-DDEBUG +AR ?= ar +RANLIB ?= ranlib - DEBUG = -g #-DDEBUG ++DEBUG = WARNINGS=-Wall -Wwrite-strings \ -Wpointer-arith -Wcast-qual -Wcast-align \ -@@ -64,11 +61,11 @@ LDFLAGS := #-g + -Wstrict-prototypes -Wmissing-prototypes \ + -Wnested-externs -Winline -Wshadow +-LD=$(CC) -Wl,-x -shared +-LDFLAGS := #-g ++LD=$(CC) -shared ++LDFLAGS ?= #-g + SYSTEM_HEADERS = /usr/include INCS=$(topdir)/libcap/include/sys/capability.h LDFLAGS += -L$(topdir)/libcap --CFLAGS += -Dlinux $(WARNINGS) $(DEBUG) -+CFLAGS += -Dlinux $(WARNINGS) - PAM_CAP := $(shell if [ -f /usr/include/security/pam_modules.h ]; then echo yes ; else echo no ; fi) + CFLAGS += -Dlinux $(WARNINGS) $(DEBUG) +-PAM_CAP := $(shell if [ -f /usr/include/security/pam_modules.h ]; then echo yes ; else echo no ; fi) ++PAM_CAP := no INDENT := $(shell if [ -n "$(which indent 2>/dev/null)" ]; then echo "| indent -kr" ; fi) DYNAMIC := $(shell if [ ! -d "$(topdir)/.git" ]; then echo yes; fi) -LIBATTR := yes diff --git a/package/libcap/patches/patch-Makefile b/package/libcap/patches/patch-Makefile new file mode 100644 index 000000000..8e2f8415b --- /dev/null +++ b/package/libcap/patches/patch-Makefile @@ -0,0 +1,25 @@ +--- libcap-2.24.orig/Makefile 2013-12-27 19:17:17.000000000 +0100 ++++ libcap-2.24/Makefile 2015-02-26 20:36:58.000000000 +0100 +@@ -16,6 +16,22 @@ endif + $(MAKE) -C progs $@ + $(MAKE) -C doc $@ + ++progs: ++ $(MAKE) -C progs all ++ ++shared: ++ $(MAKE) -C libcap shared ++ ++static: ++ $(MAKE) -C libcap static ++ ++install-shared: ++ $(MAKE) -C libcap install-shared ++ ++install-static: ++ $(MAKE) -C libcap install-static ++ ++ + all-here: + + install-here: diff --git a/package/libcap/patches/patch-libcap_Makefile b/package/libcap/patches/patch-libcap_Makefile index f45b642c9..cf7703a43 100644 --- a/package/libcap/patches/patch-libcap_Makefile +++ b/package/libcap/patches/patch-libcap_Makefile @@ -1,7 +1,17 @@ ---- libcap-2.22.orig/libcap/Makefile 2010-08-09 00:26:04.000000000 +0200 -+++ libcap-2.22/libcap/Makefile 2013-10-28 10:46:10.000000000 +0100 -@@ -33,7 +33,7 @@ INCLUDE_GPERF_OUTPUT = -include $(GPERF_ - endif +--- libcap-2.24.orig/libcap/Makefile 2014-01-06 01:55:03.000000000 +0100 ++++ libcap-2.24/libcap/Makefile 2015-02-26 20:34:47.000000000 +0100 +@@ -28,6 +28,9 @@ GPERF_OUTPUT = _caps_output.gperf + + all: $(MINLIBNAME) $(STALIBNAME) libcap.pc + ++static: $(STALIBNAME) ++shared: $(MINLIBNAME) ++ + ifeq ($(shell gperf --version > /dev/null 2>&1 && echo yes),yes) + USE_GPERF_OUTPUT = $(GPERF_OUTPUT) + INCLUDE_GPERF_OUTPUT = -include $(GPERF_OUTPUT) +@@ -43,7 +46,7 @@ libcap.pc: libcap.pc.in + $< >$@ _makenames: _makenames.c cap_names.list.h - $(BUILD_CC) $(BUILD_CFLAGS) $< -o $@ @@ -9,3 +19,24 @@ cap_names.h: _makenames ./_makenames > cap_names.h +@@ -70,6 +73,20 @@ $(MINLIBNAME): $(OBJS) + cap_text.o: cap_text.c $(USE_GPERF_OUTPUT) $(INCLS) + $(CC) $(CFLAGS) $(IPATH) $(INCLUDE_GPERF_OUTPUT) -c $< -o $@ + ++install-shared: install-headers ++ mkdir -p -m 0755 $(LIBDIR) ++ install -m 0644 $(MINLIBNAME) $(LIBDIR)/$(MINLIBNAME) ++ ln -sf $(MINLIBNAME) $(LIBDIR)/$(MAJLIBNAME) ++ ln -sf $(MAJLIBNAME) $(LIBDIR)/$(LIBNAME) ++ ++install-static: install-headers ++ mkdir -p -m 0755 $(LIBDIR) ++ install -m 0644 $(STALIBNAME) $(LIBDIR)/$(STALIBNAME) ++ ++install-headers: ++ mkdir -p -m 0755 $(INCDIR)/sys ++ install -m 0644 include/sys/capability.h $(INCDIR)/sys ++ + install: all + mkdir -p -m 0755 $(INCDIR)/sys + install -m 0644 include/sys/capability.h $(INCDIR)/sys diff --git a/package/libcap/patches/patch-pam_cap_Makefile b/package/libcap/patches/patch-pam_cap_Makefile deleted file mode 100644 index 5608fece5..000000000 --- a/package/libcap/patches/patch-pam_cap_Makefile +++ /dev/null @@ -1,10 +0,0 @@ ---- libcap-2.22.orig/pam_cap/Makefile 2010-08-09 02:08:01.000000000 +0200 -+++ libcap-2.22/pam_cap/Makefile 2013-11-08 16:29:05.000000000 +0100 -@@ -10,7 +10,6 @@ include ../Make.Rules - LDLIBS += -L../libcap -lcap - - all: pam_cap.so -- $(MAKE) testcompile - - install: all - mkdir -p -m 0755 $(LIBDIR)/security diff --git a/package/libpcap/Makefile b/package/libpcap/Makefile index d0b333e5e..618b04d21 100644 --- a/package/libpcap/Makefile +++ b/package/libpcap/Makefile @@ -4,12 +4,11 @@ include $(ADK_TOPDIR)/rules.mk PKG_NAME:= libpcap -PKG_VERSION:= 1.6.1 +PKG_VERSION:= 1.6.2 PKG_RELEASE:= 1 -PKG_HASH:= 116cbb3ac9e96d5dd7b39638a2f894a67fa3dcf06d794e6dae2b9a942ad13476 +PKG_HASH:= 5db3e2998f1eeba2c76da55da5d474248fe19c44f49e15cac8a796a2c7e19690 PKG_DESCR:= low-level packet capture library PKG_SECTION:= libs/net -PKG_BUILDDEP:= m4-host flex-host bison-host libnl PKG_URL:= http://www.tcpdump.org/ PKG_SITES:= http://www.tcpdump.org/release/ PKG_OPTS:= dev @@ -23,23 +22,19 @@ include $(ADK_TOPDIR)/mk/package.mk $(eval $(call PKG_template,LIBPCAP,libpcap,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS})) +XAKE_FLAGS+= GCC_HONOUR_COPTS=s CONFIGURE_ENV+= ac_cv_linux_vers=26 CONFIGURE_ARGS+= --disable-yydebug \ - --with-build-cc=$(CC_FOR_BUILD) \ --disable-dbus \ --without-libnl \ --with-pcap=linux -TARGET_CFLAGS+= ${TARGET_CPPFLAGS} INSTALL_TARGET= install install-shared -MAKE_FLAGS+= STAGING_TARGET_DIR=$(STAGING_TARGET_DIR) -XAKE_FLAGS+= GCC_HONOUR_COPTS=s ifneq (${ADK_PACKAGE_LIBPCAP_WITH_IPV6},) CONFIGURE_ARGS+= --enable-ipv6 else CONFIGURE_ARGS+= --disable-ipv6 endif -#XAKE_FLAGS+= M4=m4 libpcap-install: ${INSTALL_DIR} ${IDIR_LIBPCAP}/usr/lib diff --git a/package/libpcap/patch-Makefile_in b/package/libpcap/patch-Makefile_in new file mode 100644 index 000000000..cd7bdc961 --- /dev/null +++ b/package/libpcap/patch-Makefile_in @@ -0,0 +1,14 @@ + Use $(sort) here, which implicitly removes duplicates. + Otherwise our CFLAGS are passed in via CCOPT and CFLAGS leading + to duplicate -fhonour-copts passing. +--- libpcap-1.6.2.orig/Makefile.in 2014-07-03 00:12:49.000000000 +0200 ++++ libpcap-1.6.2/Makefile.in 2014-09-12 15:12:48.567519024 +0200 +@@ -61,7 +61,7 @@ DEPENDENCY_CFLAG = @DEPENDENCY_CFLAG@ + PROG=libpcap + + # Standard CFLAGS +-FULL_CFLAGS = $(CCOPT) $(INCLS) $(DEFS) $(CFLAGS) ++FULL_CFLAGS = $(sort $(CCOPT) $(INCLS) $(DEFS) $(CFLAGS)) + + INSTALL = @INSTALL@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ diff --git a/package/libqmi/Makefile b/package/libqmi/Makefile new file mode 100644 index 000000000..8f041d2ae --- /dev/null +++ b/package/libqmi/Makefile @@ -0,0 +1,30 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= libqmi +PKG_VERSION:= 1.12.4 +PKG_RELEASE:= 1 +PKG_HASH:= 5527342bc869400d2a9c3038d66ec8ef87980aefb6c7aae593a13ebfee686a15 +PKG_DESCR:= qmi modem protocol helper library +PKG_SECTION:= libs/net +PKG_DEPENDS:= glib +PKG_BUILDDEP:= glib +PKG_URL:= http://cgit.freedesktop.org/libqmi/ +PKG_SITES:= http://cgit.freedesktop.org/libqmi/snapshot/ +PKG_OPTS:= dev + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,LIBQMI,libqmi,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS))) + +AUTOTOOL_STYLE:= autogen + +libqmi-install: + $(INSTALL_DIR) $(IDIR_LIBQMI)/usr/{bin,lib} + $(INSTALL_BIN) $(WRKINST)/usr/bin/qmi{-network,cli} \ + $(IDIR_LIBQMI)/usr/bin + $(CP) $(WRKINST)/usr/lib/libqmi-glib.so* $(IDIR_LIBQMI)/usr/lib/ + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/libqmi/patches/patch-Makefile_am b/package/libqmi/patches/patch-Makefile_am new file mode 100644 index 000000000..e064743aa --- /dev/null +++ b/package/libqmi/patches/patch-Makefile_am @@ -0,0 +1,13 @@ + do not enable gtk-doc +--- libqmi-1.12.4.orig/Makefile.am 2015-02-10 17:31:06.000000000 +0100 ++++ libqmi-1.12.4/Makefile.am 2015-02-20 18:20:29.213191733 +0100 +@@ -4,8 +4,7 @@ SUBDIRS = . data build-aux src utils doc + ACLOCAL_AMFLAGS = -I m4 + + DISTCHECK_CONFIGURE_FLAGS = \ +- --with-udev-base-dir="$$dc_install_base" \ +- --enable-gtk-doc ++ --with-udev-base-dir="$$dc_install_base" + + EXTRA_DIST = \ + gtester.make \ diff --git a/package/libqmi/patches/patch-autogen_sh b/package/libqmi/patches/patch-autogen_sh new file mode 100644 index 000000000..cba4e8ea6 --- /dev/null +++ b/package/libqmi/patches/patch-autogen_sh @@ -0,0 +1,11 @@ + - drop doc stuff which we don't have +--- libqmi-1.12.4.orig/autogen.sh 2015-02-10 17:31:06.000000000 +0100 ++++ libqmi-1.12.4/autogen.sh 2015-02-20 18:05:46.425974772 +0100 +@@ -14,7 +14,6 @@ PKG_NAME=libqmi + } + + (cd $srcdir; +- gtkdocize || exit 1 + mkdir -p m4 + touch README NEWS ChangeLog + autoreconf --force --install --verbose diff --git a/package/libqmi/patches/patch-configure_ac b/package/libqmi/patches/patch-configure_ac new file mode 100644 index 000000000..37f519c4e --- /dev/null +++ b/package/libqmi/patches/patch-configure_ac @@ -0,0 +1,12 @@ +--- libqmi-1.12.4.orig/configure.ac 2015-02-10 17:31:06.000000000 +0100 ++++ libqmi-1.12.4/configure.ac 2015-02-27 22:15:42.000000000 +0100 +@@ -76,9 +76,6 @@ AC_SUBST(GLIB_LIBS) + GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` + AC_SUBST(GLIB_MKENUMS) + +-dnl Documentation +-GTK_DOC_CHECK(1.0) +- + # QMI username + QMI_USERNAME="root" + AC_ARG_ENABLE(qmi-username, diff --git a/package/libqmi/patches/patch-docs_reference_libqmi-glib_Makefile_am b/package/libqmi/patches/patch-docs_reference_libqmi-glib_Makefile_am new file mode 100644 index 000000000..39fa9c415 --- /dev/null +++ b/package/libqmi/patches/patch-docs_reference_libqmi-glib_Makefile_am @@ -0,0 +1,25 @@ + - try to avoid having to have gtk-doc stuff + - and try to prevent the mess involved with it +--- libqmi-1.12.4.orig/docs/reference/libqmi-glib/Makefile.am 2015-02-10 17:31:06.000000000 +0100 ++++ libqmi-1.12.4/docs/reference/libqmi-glib/Makefile.am 2015-02-20 18:24:30.739430307 +0100 +@@ -73,9 +73,9 @@ expand_content_files = + + extra_files = + +-include $(top_srcdir)/gtk-doc.make ++#include $(top_srcdir)/gtk-doc.make + +-EXTRA_DIST += \ ++EXTRA_DIST = \ + libqmi-glib-common.sections \ + $(DOC_MODULE)-sections.txt \ + $(DOC_MODULE)-sections.mstamp \ +@@ -83,7 +83,7 @@ EXTRA_DIST += \ + $(DIAGRAMS) \ + $(NULL) + +-CLEANFILES += \ ++CLEANFILES = \ + $(DOC_MODULE)-decl-list.txt \ + $(DOC_MODULE)-decl.txt \ + $(DOC_MODULE)-overrides.txt \ diff --git a/package/lvm/Makefile b/package/lvm/Makefile index 11a917e45..ec3bc8439 100644 --- a/package/lvm/Makefile +++ b/package/lvm/Makefile @@ -4,9 +4,9 @@ include ${ADK_TOPDIR}/rules.mk PKG_NAME:= lvm -PKG_VERSION:= 2.02.114 +PKG_VERSION:= 2.02.116 PKG_RELEASE:= 1 -PKG_HASH:= de9cb0acfb9c5a6afa6184160c9e066f19043677f91a72c741d153efcd2874a5 +PKG_HASH:= 2479d6ea61c405efcfcd8a78390d00c1d2e9c92c0262f3ed599f2c0fb6f0b767 PKG_DESCR:= logical volume management PKG_SECTION:= sys/fs PKG_DEPENDS:= libdevmapper libncurses @@ -39,7 +39,9 @@ CONFIGURE_ARGS+= --with-user="" --with-group="" \ --with-optimisation="" \ --disable-testing \ --with-lvm1=none -CONFIGURE_ENV+= ac_cv_flag_HAVE_PIE=no +CONFIGURE_ENV+= ac_cv_flag_HAVE_PIE=no \ + ac_cv_func_malloc_0_nonnull=yes \ + ac_cv_func_realloc_0_nonnull=yes lvm-install: ${INSTALL_DIR} ${IDIR_LVM}/usr/sbin diff --git a/package/lvm/patches/patch-lib_commands_toolcontext_c b/package/lvm/patches/patch-lib_commands_toolcontext_c index 397576c9b..7a4bbd7cd 100644 --- a/package/lvm/patches/patch-lib_commands_toolcontext_c +++ b/package/lvm/patches/patch-lib_commands_toolcontext_c @@ -1,6 +1,6 @@ ---- LVM2.2.02.106.orig/lib/commands/toolcontext.c 2014-04-10 17:38:44.000000000 +0200 -+++ LVM2.2.02.106/lib/commands/toolcontext.c 2014-05-29 17:55:05.101305501 +0200 -@@ -1334,6 +1334,8 @@ struct cmd_context *create_toolcontext(u +--- LVM2.2.02.114.orig/lib/commands/toolcontext.c 2014-11-29 00:07:42.000000000 +0100 ++++ LVM2.2.02.114/lib/commands/toolcontext.c 2015-02-28 09:27:09.000000000 +0100 +@@ -1433,6 +1433,8 @@ struct cmd_context *create_toolcontext(u { struct cmd_context *cmd; FILE *new_stream; @@ -9,7 +9,7 @@ int flags; #ifdef M_MMAP_MAX -@@ -1383,10 +1385,10 @@ struct cmd_context *create_toolcontext(u +@@ -1482,10 +1484,10 @@ struct cmd_context *create_toolcontext(u if (is_valid_fd(STDIN_FILENO) && ((flags = fcntl(STDIN_FILENO, F_GETFL)) > 0) && (flags & O_ACCMODE) != O_WRONLY) { @@ -23,7 +23,7 @@ log_sys_error("setvbuf", ""); goto out; } -@@ -1395,10 +1397,10 @@ struct cmd_context *create_toolcontext(u +@@ -1494,10 +1496,10 @@ struct cmd_context *create_toolcontext(u if (is_valid_fd(STDOUT_FILENO) && ((flags = fcntl(STDOUT_FILENO, F_GETFL)) > 0) && (flags & O_ACCMODE) != O_RDONLY) { @@ -37,7 +37,7 @@ _IOLBF, linebuffer_size)) { log_sys_error("setvbuf", ""); goto out; -@@ -1681,6 +1683,8 @@ void destroy_toolcontext(struct cmd_cont +@@ -1805,6 +1807,8 @@ void destroy_toolcontext(struct cmd_cont { struct dm_config_tree *cft_cmdline; FILE *new_stream; @@ -46,7 +46,7 @@ int flags; if (cmd->dump_filter && cmd->filter && cmd->filter->dump && -@@ -1717,9 +1721,9 @@ void destroy_toolcontext(struct cmd_cont +@@ -1840,9 +1844,9 @@ void destroy_toolcontext(struct cmd_cont if (is_valid_fd(STDIN_FILENO) && ((flags = fcntl(STDIN_FILENO, F_GETFL)) > 0) && (flags & O_ACCMODE) != O_WRONLY) { @@ -59,7 +59,7 @@ } else cmd->linebuffer = NULL; /* Leave buffer in place (deliberate leak) */ } -@@ -1727,9 +1731,9 @@ void destroy_toolcontext(struct cmd_cont +@@ -1850,9 +1854,9 @@ void destroy_toolcontext(struct cmd_cont if (is_valid_fd(STDOUT_FILENO) && ((flags = fcntl(STDOUT_FILENO, F_GETFL)) > 0) && (flags & O_ACCMODE) != O_RDONLY) { diff --git a/package/lvm/patches/patch-lib_mm_memlock_c b/package/lvm/patches/patch-lib_mm_memlock_c new file mode 100644 index 000000000..8cc6d8514 --- /dev/null +++ b/package/lvm/patches/patch-lib_mm_memlock_c @@ -0,0 +1,76 @@ +--- LVM2.2.02.114.orig/lib/mm/memlock.c 2014-11-29 00:07:42.000000000 +0100 ++++ LVM2.2.02.114/lib/mm/memlock.c 2015-02-28 09:44:51.000000000 +0100 +@@ -25,7 +25,6 @@ + #include <sys/mman.h> + #include <sys/time.h> + #include <sys/resource.h> +-#include <malloc.h> + + #ifndef DEVMAPPER_SUPPORT + +@@ -134,10 +133,8 @@ static void _touch_memory(void *mem, siz + static void _allocate_memory(void) + { + #ifndef VALGRIND_POOL +- void *stack_mem; ++ void *stack_mem, *temp_malloc_mem; + struct rlimit limit; +- int i, area = 0, missing = _size_malloc_tmp, max_areas = 32, hblks; +- char *areas[max_areas]; + + /* Check if we could preallocate requested stack */ + if ((getrlimit (RLIMIT_STACK, &limit) == 0) && +@@ -146,50 +143,13 @@ static void _allocate_memory(void) + _touch_memory(stack_mem, _size_stack); + /* FIXME else warn user setting got ignored */ + +- /* +- * When a brk() fails due to fragmented address space (which sometimes +- * happens when we try to grab 8M or so), glibc will make a new +- * arena. In this arena, the rules for using “direct” mmap are relaxed, +- * circumventing the MAX_MMAPs and MMAP_THRESHOLD settings. We can, +- * however, detect when this happens with mallinfo() and try to co-opt +- * malloc into using MMAP as a MORECORE substitute instead of returning +- * MMAP'd memory directly. Since MMAP-as-MORECORE does not munmap the +- * memory on free(), this is good enough for our purposes. +- */ +- while (missing > 0) { +- struct mallinfo inf = mallinfo(); +- hblks = inf.hblks; +- +- if ((areas[area] = malloc(_size_malloc_tmp))) +- _touch_memory(areas[area], _size_malloc_tmp); +- +- inf = mallinfo(); +- +- if (hblks < inf.hblks) { +- /* malloc cheated and used mmap, even though we told it +- not to; we try with twice as many areas, each half +- the size, to circumvent the faulty logic in glibc */ +- free(areas[area]); +- _size_malloc_tmp /= 2; +- } else { +- ++ area; +- missing -= _size_malloc_tmp; +- } +- +- if (area == max_areas && missing > 0) { +- /* Too bad. Warn the user and proceed, as things are +- * most likely going to work out anyway. */ +- log_warn("WARNING: Failed to reserve memory, %d bytes missing.", missing); +- break; +- } +- } ++ if ((temp_malloc_mem = malloc(_size_malloc_tmp))) ++ _touch_memory(temp_malloc_mem, _size_malloc_tmp); + + if ((_malloc_mem = malloc(_size_malloc))) + _touch_memory(_malloc_mem, _size_malloc); + +- /* free up the reserves so subsequent malloc's can use that memory */ +- for (i = 0; i < area; ++i) +- free(areas[i]); ++ free(temp_malloc_mem); + #endif + } + diff --git a/package/lvm/patches/patch-tools_lvmcmdline_c b/package/lvm/patches/patch-tools_lvmcmdline_c index 13124f32d..df9a068cd 100644 --- a/package/lvm/patches/patch-tools_lvmcmdline_c +++ b/package/lvm/patches/patch-tools_lvmcmdline_c @@ -1,6 +1,6 @@ ---- LVM2.2.02.106.orig/tools/lvmcmdline.c 2014-04-10 17:38:46.000000000 +0200 -+++ LVM2.2.02.106/tools/lvmcmdline.c 2014-05-29 16:57:14.221581766 +0200 -@@ -1252,9 +1252,12 @@ int lvm_split(char *str, int *argc, char +--- LVM2.2.02.114.orig/tools/lvmcmdline.c 2014-11-29 00:07:43.000000000 +0100 ++++ LVM2.2.02.114/tools/lvmcmdline.c 2015-02-28 09:27:09.000000000 +0100 +@@ -1536,9 +1536,12 @@ int lvm_split(char *str, int *argc, char static int _check_standard_fds(void) { int err = is_valid_fd(STDERR_FILENO); @@ -14,7 +14,7 @@ if (err) perror("stdin stream open"); else -@@ -1264,7 +1267,7 @@ static int _check_standard_fds(void) +@@ -1548,7 +1551,7 @@ static int _check_standard_fds(void) } if (!is_valid_fd(STDOUT_FILENO) && @@ -23,7 +23,7 @@ if (err) perror("stdout stream open"); /* else no stdout */ -@@ -1272,7 +1275,7 @@ static int _check_standard_fds(void) +@@ -1556,7 +1559,7 @@ static int _check_standard_fds(void) } if (!is_valid_fd(STDERR_FILENO) && diff --git a/package/mISDN/Makefile b/package/mISDN/Makefile new file mode 100644 index 000000000..348f1da0d --- /dev/null +++ b/package/mISDN/Makefile @@ -0,0 +1,35 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= mISDN +PKG_VERSION:= 1_1_9_2 +PKG_RELEASE:= 1 +PKG_HASH:= 9ff96d8361891b9a15cf6dbdb57214c36ca13702d5bf7c18ebe259ec5d876c09 +PKG_DESCR:= new isdn stack of the linux kernel +PKG_SECTION:= net/voip +PKG_URL:= http://www.misdn.org +PKG_SITES:= http://www.misdn.org/downloads/releases/ + +PKG_CFLINE_MISDN:= depends on ADK_BROKEN + +DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz + +include $(ADK_TOPDIR)/mk/kernel-ver.mk +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,MISDN,misdn,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:= manual +XAKE_FLAGS+= LINUX=$(LINUX_DIR) KVERS=$(KERNEL_VERSION) +FAKE_FLAGS+= INSTALL_PREFIX=$(WRKINST) + +misdn-install: + $(INSTALL_DIR) $(IDIR_MISDN)/usr/sbin + $(INSTALL_BIN) $(WRKINST)/usr/sbin/{mISDN,misdn-init} \ + $(IDIR_MISDN)/usr/sbin + $(INSTALL_DIR) $(IDIR_MISDN)/lib/modules + $(CP) $(WRKINST)/lib/modules/* $(IDIR_MISDN)/lib/modules/ + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/mISDN/patches/patch-Makefile b/package/mISDN/patches/patch-Makefile new file mode 100644 index 000000000..e3a582632 --- /dev/null +++ b/package/mISDN/patches/patch-Makefile @@ -0,0 +1,53 @@ + - do not use /lib for kernel source dir detection + - drop some non-compiling card drivers + - do not run depmod and stuff +--- mISDN-1_1_9_2.orig/Makefile 2009-06-09 10:41:07.000000000 +0200 ++++ mISDN-1_1_9_2/Makefile 2011-07-11 15:04:00.996001762 +0200 +@@ -14,9 +14,14 @@ ifndef KVERS + KVERS:=$(shell uname -r) + endif + ++ifndef LINUX + MODS=/lib/modules/$(KVERS) + LINUX=$(MODS)/build + LINUX_SOURCE=$(MODS)/source ++else ++LINUX_SOURCE=${LINUX} ++endif ++ + UPDATE_MODULES=$(shell which update-modules) + MODULES_UPDATE=$(shell which modules-update) + DEPMOD=$(shell which depmod) +@@ -30,15 +35,15 @@ MISDN_SRC=$(MISDNDIR)/drivers/isdn/hardw + + CONFIGS+=CONFIG_MISDN_DRV=m + CONFIGS+=CONFIG_MISDN_DSP=m +-CONFIGS+=CONFIG_MISDN_HFCMULTI=m +-CONFIGS+=CONFIG_MISDN_HFCPCI=m ++#CONFIGS+=CONFIG_MISDN_HFCMULTI=m ++#CONFIGS+=CONFIG_MISDN_HFCPCI=m + CONFIGS+=CONFIG_MISDN_HFCUSB=m + CONFIGS+=CONFIG_MISDN_XHFC=m +-CONFIGS+=CONFIG_MISDN_HFCMINI=m +-CONFIGS+=CONFIG_MISDN_W6692=m +-CONFIGS+=CONFIG_MISDN_SPEEDFAX=m +-CONFIGS+=CONFIG_MISDN_AVM_FRITZ=m +-CONFIGS+=CONFIG_MISDN_NETJET=m ++#CONFIGS+=CONFIG_MISDN_HFCMINI=m ++#CONFIGS+=CONFIG_MISDN_W6692=m ++#CONFIGS+=CONFIG_MISDN_SPEEDFAX=m ++#CONFIGS+=CONFIG_MISDN_AVM_FRITZ=m ++#CONFIGS+=CONFIG_MISDN_NETJET=m + CONFIGS+=CONFIG_MISDN_DEBUGTOOL=m + + #CONFIGS+=CONFIG_MISDN_NETDEV=y +@@ -52,9 +57,6 @@ all: VERSION test_old_misdn test_new_mis + export MINCLUDES=$(MISDNDIR)/include ; export MISDNVERSION=$(MISDNVERSION); make -C $(LINUX) SUBDIRS=$(MISDN_SRC) modules $(CONFIGS) + + install: all modules-install misdn-init +- $(DEPMOD) +- $(UPDATE_MODULES) +- $(MODULES_UPDATE) + make -C config install + + modules-install: diff --git a/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_contr_c b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_contr_c new file mode 100644 index 000000000..e33bde4c5 --- /dev/null +++ b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_contr_c @@ -0,0 +1,65 @@ + - capi_ctr_reseted has been renamed in linux kernel commit + 4e329972052c3649367b91de783f6293b8653cb2 + - kernel now wants a struc file_operations for proc files +--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/contr.c 2009-01-22 14:36:34.000000000 +0100 ++++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/contr.c 2011-07-15 18:33:55.765001537 +0200 +@@ -367,17 +367,12 @@ procinfo(struct capi_ctr *ctrl) + } + + static int +-read_proc(char *page, char **start, off_t off, int count, int *eof, struct capi_ctr *ctrl) ++proc_show(struct seq_file *file, void *data) + { +- int len = 0; ++ struct capi_ctr *ctrl = file->private; + +- len += sprintf(page+len, "mISDN_read_proc\n"); +- if (off+count >= len) +- *eof = 1; +- if (len < off) +- return 0; +- *start = page + off; +- return ((count < len-off) ? count : len-off); ++ seq_printf(file, "mISDN_proc_show\n"); ++ return 0; + }; + + +@@ -399,7 +394,7 @@ ResetController(struct capi_ctr *ctrl) + #ifdef OLDCAPI_DRIVER_INTERFACE + contr->ctrl->reseted(contr->ctrl); + #else +- capi_ctr_reseted(contr->ctrl); ++ capi_ctr_down(contr->ctrl); + #endif + } + +@@ -601,6 +596,19 @@ ControllerPutStatus(Controller_t *contr, + contrDebug(contr, CAPI_DBG_CONTR, "%s: %s", __FUNCTION__, msg); + } + ++static int misdn_proc_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, proc_show, PDE(inode)->data); ++} ++ ++static const struct file_operations misdn_proc_fops = { ++ .owner = THIS_MODULE, ++ .open = misdn_proc_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = single_release, ++}; ++ + int + ControllerConstr(Controller_t **contr_p, mISDNstack_t *st, mISDN_pid_t *pid, mISDNobject_t *ocapi) + { +@@ -719,7 +727,7 @@ ControllerConstr(Controller_t **contr_p, + contr->ctrl->load_firmware = LoadFirmware; + contr->ctrl->reset_ctr = ResetController; + contr->ctrl->procinfo = procinfo; +- contr->ctrl->ctr_read_proc = read_proc; ++ contr->ctrl->proc_fops = &misdn_proc_fops; + retval = attach_capi_ctr(contr->ctrl); + #endif + if (!retval) { diff --git a/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_c b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_c new file mode 100644 index 000000000..ab96e3189 --- /dev/null +++ b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_c @@ -0,0 +1,75 @@ + - old lock initialisers got renamed + - init_MUTEX_LOCKED got dropped, use the real sema_init instead + - force sysfs-object creation +--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/core.c 2009-06-09 10:08:45.000000000 +0200 ++++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/core.c 2011-07-20 16:42:18.342001559 +0200 +@@ -23,10 +23,10 @@ static char *mISDN_core_version = MISDN + static void (*dt_new_frame) (mISDNstack_t *stack, enum mISDN_dt_type type, struct sk_buff *skb, int duplicate_skb) = NULL; + + LIST_HEAD(mISDN_objectlist); +-static rwlock_t mISDN_objects_lock = RW_LOCK_UNLOCKED; ++static rwlock_t mISDN_objects_lock = __RW_LOCK_UNLOCKED(old_style_rw_init); + + LIST_HEAD(mISDN_modulelist); +-static rwlock_t mISDN_modules_lock = RW_LOCK_UNLOCKED; ++static rwlock_t mISDN_modules_lock = __RW_LOCK_UNLOCKED(old_style_rw_init); + struct modulelist { + struct list_head list; + struct module *module; +@@ -35,7 +35,7 @@ struct modulelist { + int core_debug; + + static u_char entityarray[MISDN_MAX_ENTITY/8]; +-static spinlock_t entity_lock = SPIN_LOCK_UNLOCKED; ++static spinlock_t entity_lock = __SPIN_LOCK_UNLOCKED(old_style_spin_init); + + static uint debug; + static int obj_id; +@@ -724,7 +724,7 @@ int mISDN_register(mISDNobject_t *obj) { + obj->id); + if (core_debug & DEBUG_CORE_FUNC) + printk(KERN_DEBUG "mISDN_register: obj(%p)\n", obj); +-#ifndef SYSFS_SUPPORT_2_6_24 ++//#ifndef SYSFS_SUPPORT_2_6_24 + retval = mISDN_register_sysfs_obj(obj); + if (retval) { + printk(KERN_ERR "mISDN_register class_device_register return(%d)\n", retval); +@@ -732,7 +732,7 @@ int mISDN_register(mISDNobject_t *obj) { + list_del(&obj->list); + write_unlock_irqrestore(&mISDN_objects_lock, flags); + } +-#endif ++//#endif + return(retval); + } + +@@ -758,9 +758,10 @@ int mISDN_unregister(mISDNobject_t *obj) + if (core_debug & DEBUG_CORE_FUNC) + printk(KERN_DEBUG "mISDN_unregister: mISDN_objectlist(%p<-%p->%p)\n", + mISDN_objectlist.prev, &mISDN_objectlist, mISDN_objectlist.next); ++ mISDN_unregister_sysfs_obj(obj); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) + #ifdef SYSFS_SUPPORT +- device_unregister(&obj->class_dev); ++ //device_unregister(&obj->class_dev); + #endif + #else + class_device_unregister(&obj->class_dev); +@@ -774,7 +775,7 @@ mISDNInit(void) + struct semaphore sem; + int err; + +- init_MUTEX_LOCKED(&sem); ++ sema_init(&sem, 0); + + printk(KERN_INFO "Modular ISDN Stack core version (%s) revision (%s)\n", mISDN_core_version, mISDN_core_revision); + core_debug = debug; +@@ -817,7 +818,7 @@ sysfs_fail: + void mISDN_cleanup(void) { + struct semaphore sem; + +- init_MUTEX_LOCKED(&sem); ++ sema_init(&sem, 0); + + free_mISDNdev(); + if (!list_empty(&mISDN_objectlist)) { diff --git a/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_h b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_h new file mode 100644 index 000000000..bea80f3de --- /dev/null +++ b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_h @@ -0,0 +1,19 @@ + - daemonize is defined in linux/sched.h +--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/core.h 2009-01-22 14:36:34.000000000 +0100 ++++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/core.h 2011-07-20 16:42:17.471001559 +0200 +@@ -4,6 +4,7 @@ + * + */ + ++#include <linux/sched.h> + #include <linux/slab.h> + #include <linux/string.h> + #include <linux/mISDNif.h> +@@ -61,6 +62,7 @@ extern mISDNinstance_t *get_instance(mIS + + /* from sysfs_obj.c */ + extern int mISDN_register_sysfs_obj(mISDNobject_t *); ++extern void mISDN_unregister_sysfs_obj(mISDNobject_t *); + extern int mISDN_sysfs_init(void); + extern void mISDN_sysfs_cleanup(void); + diff --git a/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_debugtool_c b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_debugtool_c new file mode 100644 index 000000000..78ffe69f4 --- /dev/null +++ b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_debugtool_c @@ -0,0 +1,49 @@ + - big kernel lock unavailable + - CLASS_ATTR callbacks changed signature +--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/debugtool.c 2009-01-22 14:36:34.000000000 +0100 ++++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/debugtool.c 2011-07-11 14:46:28.845001528 +0200 +@@ -121,11 +121,11 @@ static void dt_run (void) + struct socket *sock; + struct sockaddr_in addr; + +- lock_kernel(); ++ //lock_kernel(); + current->flags |= PF_NOFREEZE; + daemonize(MODULE_NAME); + allow_signal(SIGKILL); +- unlock_kernel(); ++ //unlock_kernel(); + + /* init socket */ + ret = sock_create(AF_INET, SOCK_DGRAM, IPPROTO_UDP, &sock); +@@ -181,12 +181,12 @@ static struct class dt_class = { + #endif + }; + +-static ssize_t attr_show_enabled (struct class *class, char *buf) ++static ssize_t attr_show_enabled (struct class *class, struct class_attribute *attr, char *buf) + { + return sprintf(buf, "%d\n", dt_enabled); + } + +-static ssize_t attr_store_enabled (struct class *class, const char *buf, size_t count) ++static ssize_t attr_store_enabled (struct class *class, struct class_attribute *attr, const char *buf, size_t count) + { + if (count > 0 && *buf == '1') { + mISDN_dt_enable(); +@@ -241,13 +241,13 @@ void __exit dt_exit(void) + mISDN_module_unregister(THIS_MODULE); + + if (thread) { +- lock_kernel(); ++ //lock_kernel(); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) + ret = kill_pid(find_pid_ns(thread->pid, &init_pid_ns), SIGKILL, 1); + #else + ret = kill_proc(thread->pid, SIGKILL, 1); + #endif +- unlock_kernel(); ++ //unlock_kernel(); + if (ret < 0) + printk(KERN_INFO MODULE_NAME ": Unknown error (%d) while trying to terminate kernel thread!\n", -ret); + wake_up_interruptible(&skb_q_wait); diff --git a/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_hfcs_usb_c b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_hfcs_usb_c new file mode 100644 index 000000000..f8501ef02 --- /dev/null +++ b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_hfcs_usb_c @@ -0,0 +1,17 @@ + - add the viprinet ISDN USB device ID + - some debug output +--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/hfcs_usb.c 2009-01-22 14:36:34.000000000 +0100 ++++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/hfcs_usb.c 2011-07-20 15:00:25.362001559 +0200 +@@ -208,6 +208,12 @@ static struct usb_device_id hfcsusb_idta + {LED_SCHEME1, {0x88, -64, -32, -16}, + "ZyXEL OMNI.NET USB II"}), + }, ++ { ++ USB_DEVICE(0x18d8, 0x1020), ++ .driver_info = (unsigned long) &((hfcsusb_vdata) ++ {LED_SCHEME1, {0, 1, 0, 0}, ++ "Viprinet ISDN"}), ++ }, + { } + }; + diff --git a/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_stack_c b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_stack_c new file mode 100644 index 000000000..972660318 --- /dev/null +++ b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_stack_c @@ -0,0 +1,34 @@ + - same as with core.c + - try forcing sysfs-object creation +--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/stack.c 2009-01-22 14:36:34.000000000 +0100 ++++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/stack.c 2011-07-20 16:43:13.224001559 +0200 +@@ -9,9 +9,9 @@ + #include "core.h" + + static LIST_HEAD(mISDN_stacklist); +-static rwlock_t stacklist_lock = RW_LOCK_UNLOCKED; ++static rwlock_t stacklist_lock = __RW_LOCK_UNLOCKED(old_style_rw_init); + static LIST_HEAD(mISDN_instlist); +-static rwlock_t instlist_lock = RW_LOCK_UNLOCKED; ++static rwlock_t instlist_lock = __RW_LOCK_UNLOCKED(old_style_rw_init); + + int + get_stack_cnt(void) +@@ -793,7 +793,7 @@ delete_stack(mISDNstack_t *st) + struct semaphore sem; + u_long flags; + +- init_MUTEX_LOCKED(&sem); ++ sema_init(&sem, 0); + + if (core_debug & DEBUG_CORE_FUNC) + printk(KERN_DEBUG "%s: st(%p:%08x)\n", __FUNCTION__, st, st->id); +@@ -1216,7 +1216,7 @@ clear_stack(mISDNstack_t *st, int wait) + + if (wait) { + struct semaphore sem; +- init_MUTEX_LOCKED(&sem); ++ sema_init(&sem, 0); + + hhe->data[0] = &sem; + _queue_message(st, skb); diff --git a/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_sysfs_inst_c b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_sysfs_inst_c new file mode 100644 index 000000000..bdc1d1397 --- /dev/null +++ b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_sysfs_inst_c @@ -0,0 +1,30 @@ + - see core.c +--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/sysfs_inst.c 2009-06-09 10:09:20.000000000 +0200 ++++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/sysfs_inst.c 2011-07-11 14:08:22.920000979 +0200 +@@ -82,7 +82,7 @@ static void release_mISDN_inst(struct de + #endif + if (core_debug & DEBUG_SYSFS) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) +- printk(KERN_INFO "release instance class dev %s\n", dev->bus_id); ++ printk(KERN_INFO "release instance class dev %s\n", kobject_name(&dev->kobj)); + #else + printk(KERN_INFO "release instance class dev %s\n", dev->class_id); + #endif +@@ -99,7 +99,7 @@ static void release_mISDN_inst(struct cl + #endif + if (core_debug & DEBUG_SYSFS) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) +- printk(KERN_INFO "release instance class dev %s\n", dev->bus_id); ++ printk(KERN_INFO "release instance class dev %s\n", kobject_name(&dev->kobj)); + #else + printk(KERN_INFO "release instance class dev %s\n", dev->class_id); + #endif +@@ -127,7 +127,7 @@ mISDN_register_sysfs_inst(mISDNinstance_ + + inst->class_dev.class = &inst_dev_class; + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) +- snprintf(inst->class_dev.bus_id, BUS_ID_SIZE, "inst-%08x", inst->id); ++ dev_set_name(&inst->class_dev, "inst-%08x", inst->id); + err = device_register(&inst->class_dev); + #else + snprintf(inst->class_dev.class_id, BUS_ID_SIZE, "inst-%08x", inst->id); diff --git a/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_sysfs_obj_c b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_sysfs_obj_c new file mode 100644 index 000000000..80434a1ba --- /dev/null +++ b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_sysfs_obj_c @@ -0,0 +1,33 @@ + - bus_id field is gone from struct device now +--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/sysfs_obj.c 2009-06-09 08:20:29.000000000 +0200 ++++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/sysfs_obj.c 2011-07-20 16:49:35.771001557 +0200 +@@ -136,7 +136,7 @@ mISDN_register_sysfs_obj(mISDNobject_t * + + obj->class_dev.class = &obj_dev_class; + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) +- snprintf(obj->class_dev.bus_id, BUS_ID_SIZE, "obj-%d", obj->id); ++ dev_set_name(&obj->class_dev, "obj-%d", obj->id); + err = device_register(&obj->class_dev); + #else + snprintf(obj->class_dev.class_id, BUS_ID_SIZE, "obj-%d", obj->id); +@@ -181,6 +181,20 @@ out: + return(err); + } + ++void ++mISDN_unregister_sysfs_obj(mISDNobject_t *obj) { ++#ifdef SYSFS_SUPPORT ++ if (obj->owner) ++ sysfs_remove_link(&obj->class_dev.kobj, "module"); ++ sysfs_remove_group(&obj->class_dev.kobj, &DPROTO_group); ++ sysfs_remove_group(&obj->class_dev.kobj, &BPROTO_group); ++#endif ++ device_remove_file(&obj->class_dev, &dev_attr_refcnt); ++ device_remove_file(&obj->class_dev, &dev_attr_name); ++ device_remove_file(&obj->class_dev, &dev_attr_id); ++ device_unregister(&obj->class_dev); ++} ++ + int + mISDN_sysfs_init(void) { + int err; diff --git a/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_sysfs_st_c b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_sysfs_st_c new file mode 100644 index 000000000..61d88e3fc --- /dev/null +++ b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_sysfs_st_c @@ -0,0 +1,18 @@ + yeah, same as always +--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/sysfs_st.c 2009-06-09 10:10:16.000000000 +0200 ++++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/sysfs_st.c 2011-07-11 14:10:50.061001669 +0200 +@@ -260,11 +260,11 @@ mISDN_register_sysfs_stack(mISDNstack_t + st->class_dev.class = &stack_dev_class; + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) + if (st->id & FLG_CHILD_STACK) +- snprintf(st->class_dev.bus_id, BUS_ID_SIZE, "chst-%08x", st->id); ++ dev_set_name(&st->class_dev, "chst-%08x", st->id); + else if (st->id & FLG_CLONE_STACK) +- snprintf(st->class_dev.bus_id, BUS_ID_SIZE, "clst-%08x", st->id); ++ dev_set_name(&st->class_dev, "clst-%08x", st->id); + else +- snprintf(st->class_dev.bus_id, BUS_ID_SIZE, "st-%08x", st->id); ++ dev_set_name(&st->class_dev, "st-%08x", st->id); + if (st->mgr) + st->class_dev.parent = st->mgr->class_dev.parent; + err = device_register(&st->class_dev); diff --git a/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_udevice_c b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_udevice_c new file mode 100644 index 000000000..468bd0dcb --- /dev/null +++ b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_udevice_c @@ -0,0 +1,36 @@ + - same as with core.c +--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/udevice.c 2009-01-22 14:36:34.000000000 +0100 ++++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/udevice.c 2011-07-11 13:54:44.650001546 +0200 +@@ -57,7 +57,7 @@ typedef struct entity_item { + } entity_item_t; + + static LIST_HEAD(mISDN_devicelist); +-static rwlock_t mISDN_device_lock = RW_LOCK_UNLOCKED; ++static rwlock_t mISDN_device_lock = __RW_LOCK_UNLOCKED(old_style_rw_init); + + static mISDNobject_t udev_obj; + static char MName[] = "UserDevice"; +@@ -1458,7 +1458,7 @@ init_device(u_int minor) { + init_waitqueue_head(&dev->wport.procq); + skb_queue_head_init(&dev->rport.queue); + skb_queue_head_init(&dev->wport.queue); +- init_MUTEX(&dev->io_sema); ++ sema_init(&dev->io_sema, 1); + INIT_LIST_HEAD(&dev->layerlist); + INIT_LIST_HEAD(&dev->stacklist); + INIT_LIST_HEAD(&dev->timerlist); +@@ -1557,12 +1557,12 @@ mISDN_open(struct inode *ino, struct fil + return(-ENOMEM); + dev->open_mode |= filep->f_mode & (FMODE_READ | FMODE_WRITE); + if (dev->open_mode & FMODE_READ){ +- dev->rport.lock = SPIN_LOCK_UNLOCKED; ++ dev->rport.lock = __SPIN_LOCK_UNLOCKED(old_style_spin_init); + dev->rport.maxqlen = DEFAULT_PORT_QUEUELEN; + test_and_set_bit(FLG_mISDNPORT_OPEN, &dev->rport.Flag); + } + if (dev->open_mode & FMODE_WRITE) { +- dev->wport.lock = SPIN_LOCK_UNLOCKED; ++ dev->wport.lock = __SPIN_LOCK_UNLOCKED(old_style_spin_init); + dev->wport.maxqlen = DEFAULT_PORT_QUEUELEN; + test_and_set_bit(FLG_mISDNPORT_OPEN, &dev->wport.Flag); + } diff --git a/package/mISDNuser/Makefile b/package/mISDNuser/Makefile new file mode 100644 index 000000000..d840e2f24 --- /dev/null +++ b/package/mISDNuser/Makefile @@ -0,0 +1,35 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= mISDNuser +PKG_VERSION:= 1_1_9 +PKG_RELEASE:= 1 +PKG_MD5SUM:= e174a60e7040c88d1184364714e55c1b +PKG_DESCR:= misdn kernel link library and includes, this is the out-of-tree version +PKG_SECTION:= net/voip +PKG_DEPENDS:= misdn +PKG_BUILDDEP:= mISDN +PKG_URL:= http://www.misdn.org +PKG_SITES:= http://www.misdn.org/downloads/releases/ +PKG_NOPARALLEL:= 1 + +PKG_CFLINE_MISDNUSER:= depends on ADK_BROKEN + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,MISDNUSER,misdnuser,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:= manual +XAKE_FLAGS+= MISDNDIR=$(STAGING_TARGET_DIR)/usr INSTALL_PREFIX=$(WRKINST) + +misdnuser-install: + $(INSTALL_DIR) $(IDIR_MISDNUSER)/usr/{bin,lib} + $(INSTALL_BIN) $(WRKINST)/usr/bin/{loadfirm,mISDNdebugtool,misdnportinfo} \ + $(IDIR_MISDNUSER)/usr/bin/ + $(INSTALL_BIN) $(WRKINST)/usr/bin/{sendhwctrl,testcon*,testlayer*} \ + $(IDIR_MISDNUSER)/usr/bin/ + $(CP) $(WRKINST)/usr/lib/*.so* $(IDIR_MISDNUSER)/usr/lib/ + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/mISDNuser/patches/patch-Makefile b/package/mISDNuser/patches/patch-Makefile new file mode 100644 index 000000000..77846228f --- /dev/null +++ b/package/mISDNuser/patches/patch-Makefile @@ -0,0 +1,16 @@ + allow CC override + allow CFLAGS enhancement +--- mISDNuser-1_1_9.orig/Makefile 2009-01-21 18:06:34.000000000 +0100 ++++ mISDNuser-1_1_9/Makefile 2011-07-11 17:14:13.425001831 +0200 +@@ -28,7 +28,10 @@ export INCLUDEDIR + LIBDIR=/usr/lib + export LIBDIR + +-CFLAGS:= -g -Wall -I $(INCLUDEDIR) -I $(MISDNINCLUDEDIR) ++CC ?= gcc ++export CC ++ ++CFLAGS+= -g -Wall -I $(INCLUDEDIR) -I $(MISDNINCLUDEDIR) + CFLAGS+= -D CLOSE_REPORT=1 + + #disable this if your system does not support PIC (position independent code) diff --git a/package/mISDNuser/patches/patch-debugtool_Makefile b/package/mISDNuser/patches/patch-debugtool_Makefile new file mode 100644 index 000000000..c531dd074 --- /dev/null +++ b/package/mISDNuser/patches/patch-debugtool_Makefile @@ -0,0 +1,9 @@ + allow CC override +--- mISDNuser-1_1_9.orig/debugtool/Makefile 2008-11-18 12:35:09.000000000 +0100 ++++ mISDNuser-1_1_9/debugtool/Makefile 2011-07-11 17:12:13.520001533 +0200 +@@ -1,4 +1,4 @@ +-CC = gcc ++CC ?= gcc + + CFLAGS += -Wall + diff --git a/package/mISDNuser/patches/patch-i4lnet_Makefile b/package/mISDNuser/patches/patch-i4lnet_Makefile new file mode 100644 index 000000000..3d4150b9a --- /dev/null +++ b/package/mISDNuser/patches/patch-i4lnet_Makefile @@ -0,0 +1,9 @@ + allow CC override +--- mISDNuser-1_1_9.orig/i4lnet/Makefile 2008-11-18 12:35:09.000000000 +0100 ++++ mISDNuser-1_1_9/i4lnet/Makefile 2011-07-11 17:12:22.313001562 +0200 +@@ -1,4 +1,4 @@ +-CC = gcc ++CC ?= gcc + AR = ar + RANLIB = ranlib + diff --git a/package/mISDNuser/patches/patch-lib_Makefile b/package/mISDNuser/patches/patch-lib_Makefile new file mode 100644 index 000000000..db658881a --- /dev/null +++ b/package/mISDNuser/patches/patch-lib_Makefile @@ -0,0 +1,9 @@ + allow CC override +--- mISDNuser-1_1_9.orig/lib/Makefile 2008-11-18 12:35:09.000000000 +0100 ++++ mISDNuser-1_1_9/lib/Makefile 2011-07-11 17:12:25.341001554 +0200 +@@ -1,4 +1,4 @@ +-CC = gcc ++CC ?= gcc + AR = ar + RANLIB = ranlib + diff --git a/package/mISDNuser/patches/patch-suppserv_Makefile b/package/mISDNuser/patches/patch-suppserv_Makefile new file mode 100644 index 000000000..c2600f499 --- /dev/null +++ b/package/mISDNuser/patches/patch-suppserv_Makefile @@ -0,0 +1,9 @@ + allow CC override +--- mISDNuser-1_1_9.orig/suppserv/Makefile 2008-11-18 12:35:09.000000000 +0100 ++++ mISDNuser-1_1_9/suppserv/Makefile 2011-07-11 17:12:30.613001557 +0200 +@@ -1,4 +1,4 @@ +-CC = gcc ++CC ?= gcc + AR = ar + RANLIB = ranlib + diff --git a/package/nand/Makefile b/package/nand/Makefile index 07be2c23e..668cb4e5c 100644 --- a/package/nand/Makefile +++ b/package/nand/Makefile @@ -5,7 +5,7 @@ include ${ADK_TOPDIR}/rules.mk PKG_NAME:= nand PKG_VERSION:= 1.0 -PKG_RELEASE:= 3 +PKG_RELEASE:= 4 PKG_DESCR:= nand flash utility PKG_SECTION:= sys/fs diff --git a/package/nand/src/nand.c b/package/nand/src/nand.c index 29b06e162..85df62677 100644 --- a/package/nand/src/nand.c +++ b/package/nand/src/nand.c @@ -94,7 +94,6 @@ int nand_info(const char *nand) { int fd, ret; mtd_info_t nandinfo; - //struct nand_oobinfo oobinfo; loff_t offset; if ((fd = nand_open(nand, O_RDONLY)) < 0) { @@ -131,17 +130,6 @@ int nand_info(const char *nand) { } } } - - /* - if (ioctl(fd, MEMGETOOBSEL, &oobinfo) != 0) { - fprintf(stderr, "Unable to get NAND oobinfo\n"); - return 1; - } - - if (oobinfo.useecc == MTD_NANDECC_AUTOPLACE) { - fprintf(stdout, "NAND device/driver supports autoplacement of OOB\n"); - } - */ return 0; } @@ -214,7 +202,6 @@ int nand_write(const char *img, const char *nand, int quiet) { static bool pad = true; static const char *standard_input = "-"; - static bool autoplace = true; static bool markbad = true; static int mtdoffset = 0; int cnt = 0; @@ -227,8 +214,6 @@ int nand_write(const char *img, const char *nand, int quiet) { struct mtd_oob_buf oob; loff_t offs; int ret, readlen; - int oobinfochanged = 0; - struct nand_oobinfo old_oobinfo; erase_buffer(oobbuf, sizeof(oobbuf)); @@ -255,28 +240,6 @@ int nand_write(const char *img, const char *nand, int quiet) { exit (EXIT_FAILURE); } - if (autoplace) { - /* Read the current oob info */ - if (ioctl (fd, MEMGETOOBSEL, &old_oobinfo) != 0) { - perror ("MEMGETOOBSEL"); - close (fd); - exit (EXIT_FAILURE); - } - - // autoplace ECC ? - /* - if (autoplace && (old_oobinfo.useecc != MTD_NANDECC_AUTOPLACE)) { - - if (ioctl (fd, MEMSETOOBSEL, &autoplace_oobinfo) != 0) { - perror ("MEMSETOOBSEL"); - close (fd); - exit (EXIT_FAILURE); - } - oobinfochanged = 1; - } - */ - } - oob.length = meminfo.oobsize; oob.ptr = oobbuf; @@ -465,14 +428,6 @@ closeall: close(ifd); restoreoob: - /* - if (oobinfochanged == 1) { - if (ioctl (fd, MEMSETOOBSEL, &old_oobinfo) != 0) { - perror ("MEMSETOOBSEL"); - close (fd); - exit (EXIT_FAILURE); - } - } close(fd); /* diff --git a/package/newt/Makefile b/package/newt/Makefile new file mode 100644 index 000000000..57521d1a2 --- /dev/null +++ b/package/newt/Makefile @@ -0,0 +1,34 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= newt +PKG_VERSION:= 0.52.18 +PKG_RELEASE:= 1 +PKG_HASH:= 771b0e634ede56ae6a6acd910728bb5832ac13ddb0d1d27919d2498dab70c91e +PKG_DESCR:= windowing toolkit +PKG_SECTION:= libs/misc +PKG_DEPENDS:= slang libpopt +PKG_BUILDDEP:= slang popt +PKG_URL:= https://fedorahosted.org/newt/ +PKG_SITES:= https://fedorahosted.org/releases/n/e/$(PKG_NAME)/ + +DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,NEWT,newt,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIGURE_ARGS+= --without-python \ + --without-tcl \ + --without-gpm-support + +newt-install: + $(INSTALL_DIR) $(IDIR_NEWT)/usr/{bin,lib} + $(INSTALL_BIN) $(WRKINST)/usr/bin/whiptail \ + $(IDIR_NEWT)/usr/bin + $(CP) $(WRKINST)/usr/lib/libnewt.so* \ + $(IDIR_NEWT)/usr/lib + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/oprofile/Makefile b/package/oprofile/Makefile index e217a2606..ee6286ea1 100644 --- a/package/oprofile/Makefile +++ b/package/oprofile/Makefile @@ -4,9 +4,9 @@ include $(ADK_TOPDIR)/rules.mk PKG_NAME:= oprofile -PKG_VERSION:= 0.9.9 -PKG_RELEASE:= 4 -PKG_HASH:= 1e523400daaba7b8d0d15269e977a08b40edfea53970774b69ae130e25117597 +PKG_VERSION:= 1.0.0 +PKG_RELEASE:= 1 +PKG_HASH:= 847110b4ecdcf8c8353cd38f94c1b704aad4bfcd9453e38b88d112cfb7e3c45a PKG_DESCR:= system-wide profiles PKG_SECTION:= app/debug PKG_DEPENDS:= libpopt libbfd libstdcxx @@ -16,9 +16,6 @@ PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=oprofile/} DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz -PKG_ARCH_DEPENDS:= !m68k -PKG_LIBC_DEPENDS:= uclibc glibc - PKG_CFLINE_OPROFILE:= select BUSYBOX_EXPR include $(ADK_TOPDIR)/mk/package.mk @@ -30,11 +27,20 @@ CONFIGURE_ARGS+= --with-binutils-libname=binutils \ --with-binutils=${STAGING_TARGET_DIR}/usr/lib oprofile-install: - $(INSTALL_DIR) $(IDIR_OPROFILE)/usr/{bin,share} - $(INSTALL_BIN) $(WRKINST)/usr/bin/opcontrol $(IDIR_OPROFILE)/usr/bin/ - $(INSTALL_BIN) $(WRKINST)/usr/bin/ophelp $(IDIR_OPROFILE)/usr/bin/ - $(INSTALL_BIN) $(WRKINST)/usr/bin/opreport $(IDIR_OPROFILE)/usr/bin/ - $(INSTALL_BIN) $(WRKINST)/usr/bin/oprofiled $(IDIR_OPROFILE)/usr/bin/ + $(INSTALL_DIR) $(IDIR_OPROFILE)/usr/{bin,lib/oprofile,share} + $(INSTALL_BIN) $(WRKINST)/usr/bin/ocount \ + $(WRKINST)/usr/bin/opannotate \ + $(WRKINST)/usr/bin/oparchive \ + $(WRKINST)/usr/bin/op-check-perfevents \ + $(WRKINST)/usr/bin/operf \ + $(WRKINST)/usr/bin/opgprof \ + $(WRKINST)/usr/bin/ophelp \ + $(WRKINST)/usr/bin/opimport \ + $(WRKINST)/usr/bin/opjitconv \ + $(WRKINST)/usr/bin/opreport \ + $(IDIR_OPROFILE)/usr/bin/ ${CP} ${WRKINST}/usr/share/oprofile ${IDIR_OPROFILE}/usr/share/ + ${CP} ${WRKINST}/usr/lib/oprofile/libopagent.so* \ + ${IDIR_OPROFILE}/usr/lib/oprofile include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/oprofile/patches/patch-libop_op_cpu_type_c b/package/oprofile/patches/patch-libop_op_cpu_type_c deleted file mode 100644 index 6064fc5e7..000000000 --- a/package/oprofile/patches/patch-libop_op_cpu_type_c +++ /dev/null @@ -1,42 +0,0 @@ ---- oprofile-0.9.9.orig/libop/op_cpu_type.c 2013-07-29 17:55:07.000000000 +0200 -+++ oprofile-0.9.9/libop/op_cpu_type.c 2013-11-05 20:55:54.000000000 +0100 -@@ -23,9 +23,17 @@ - #include <elf.h> - #include <link.h> - -+#include "config.h" - #include "op_cpu_type.h" - #include "op_hw_specific.h" - -+ -+/* A macro to be used for ppc64 architecture-specific code. The '__powerpc__' macro -+ * is defined for both ppc64 and ppc32 architectures, so we must further qualify by -+ * including the 'HAVE_LIBPFM' macro, since that macro will be defined only for ppc64. -+ */ -+#define PPC64_ARCH (HAVE_LIBPFM) && ((defined(__powerpc__) || defined(__powerpc64__))) -+ - struct cpu_descr { - char const * pretty; - char const * name; -@@ -176,6 +184,7 @@ static char * _get_cpuinfo_cpu_type(char - return _get_cpuinfo_cpu_type_line(buf, len, prefix, 1); - } - -+#if PPC64_ARCH - // The aux vector stuff below is currently only used by ppc64 arch - static ElfW(auxv_t) * auxv_buf = NULL; - -@@ -313,6 +322,13 @@ static op_cpu _get_ppc64_cpu_type(void) - return cpu_type; - } - -+#else -+static op_cpu _get_ppc64_cpu_type(void) -+{ -+ return CPU_NO_GOOD; -+} -+#endif -+ - static op_cpu _get_arm_cpu_type(void) - { - unsigned long cpuid, vendorid; diff --git a/package/pam/Makefile b/package/pam/Makefile index 061c24d03..be3543b96 100644 --- a/package/pam/Makefile +++ b/package/pam/Makefile @@ -15,6 +15,8 @@ PKG_SITES:= http://www.linux-pam.org/library/ PKG_OPTS:= dev PKG_BB:= 1 +PKG_CFLINE_PAM:= depends on !ADK_TARGET_USE_STATIC_LIBS + DISTFILES:= Linux-PAM-$(PKG_VERSION).tar.gz WRKDIST= ${WRKDIR}/Linux-PAM-${PKG_VERSION} diff --git a/package/pdnsd/Makefile b/package/pdnsd/Makefile index bd3ebebe8..e71dd4307 100644 --- a/package/pdnsd/Makefile +++ b/package/pdnsd/Makefile @@ -4,14 +4,14 @@ include $(ADK_TOPDIR)/rules.mk PKG_NAME:= pdnsd -PKG_VERSION:= 1.2.7 -PKG_RELEASE:= 3 -PKG_HASH:= 2777d7317509df7c75c90bcfd7f9ceaec9ea2db164bf00eb797fa54e0b476a00 +PKG_VERSION:= 1.2.9a +PKG_RELEASE:= 1 +PKG_HASH:= bb5835d0caa8c4b31679d6fd6a1a090b71bdf70950db3b1d0cea9cf9cb7e2a7b PKG_DESCR:= proxy dns server PKG_SECTION:= net/dns PKG_DEPENDS:= libpthread -PKG_URL:= http://www.phys.uu.nl/~rombouts/pdnsd.html -PKG_SITES:= http://www.phys.uu.nl/~rombouts/pdnsd/releases/ +PKG_URL:= http://members.home.nl/p.a.rombouts/pdnsd/index.html +PKG_SITES:= http://members.home.nl/p.a.rombouts/pdnsd/releases/ PKG_FLAVOURS_PDNSD:= WITH_IPV6 PKGFD_WITH_IPV6:= enable IPv6 support diff --git a/package/pdnsd/patches/patch-src_Makefile_in b/package/pdnsd/patches/patch-src_Makefile_in deleted file mode 100644 index 6ab8de4e1..000000000 --- a/package/pdnsd/patches/patch-src_Makefile_in +++ /dev/null @@ -1,11 +0,0 @@ ---- pdnsd-1.2.7.orig/src/Makefile.in 2008-09-04 18:20:37.000000000 +0200 -+++ pdnsd-1.2.7/src/Makefile.in 2010-05-29 17:45:45.937500000 +0200 -@@ -171,7 +171,7 @@ pdnsd_SOURCES = conf-parser.c conff.c co - rr_types.h servers.h status.h thread.h cache.h hash.h pdnsd_assert.h \ - freebsd_netinet_ip_icmp.h - --SUBDIRS = pdnsd-ctl rc test -+SUBDIRS = pdnsd-ctl rc - all: all-recursive - - .SUFFIXES: diff --git a/package/pdnsd/patches/patch-src_dns_query_c b/package/pdnsd/patches/patch-src_dns_query_c deleted file mode 100644 index f16c3d497..000000000 --- a/package/pdnsd/patches/patch-src_dns_query_c +++ /dev/null @@ -1,12 +0,0 @@ -use the temporary port, not always the global one over and over again ---- pdnsd-1.2.7.orig/src/dns_query.c 2008-09-01 15:56:51.000000000 +0200 -+++ pdnsd-1.2.7/src/dns_query.c 2010-03-19 21:44:38.837858828 +0100 -@@ -650,7 +650,7 @@ static int bind_socket(int s) - ELSE_IPV6 { - memset(&sin.sin6,0,sizeof(struct sockaddr_in6)); - sin.sin6.sin6_family=AF_INET6; -- sin.sin6.sin6_port=htons(global.port); -+ sin.sin6.sin6_port=htons(prt); - sin.sin6.sin6_flowinfo=IPV6_FLOWINFO; - SET_SOCKA_LEN6(sin.sin6); - sinl=sizeof(struct sockaddr_in6); diff --git a/package/perf/Makefile b/package/perf/Makefile new file mode 100644 index 000000000..75bd8efe4 --- /dev/null +++ b/package/perf/Makefile @@ -0,0 +1,43 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk +include $(ADK_TOPDIR)/mk/kernel-ver.mk + +PKG_NAME:= perf +PKG_VERSION:= $(KERNEL_VERSION) +PKG_RELEASE:= 1 +PKG_DESCR:= userland tools for linux performance counters +PKG_SECTION:= app/debug +PKG_DEPENDS:= elfutils newt +PKG_BUILDDEP:= elfutils newt +PKG_URL:= https://perf.wiki.kernel.org/index.php/Main_Page + +# elfutils require argp() +PKG_LIBC_DEPENDS:= glibc + +NO_DISTFILES:= 1 + +include $(ADK_TOPDIR)/mk/package.mk +include $(ADK_TOPDIR)/mk/kernel-vars.mk + +$(eval $(call PKG_template,PERF,perf,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:= manual +BUILD_STYLE:= manual +INSTALL_STYLE:= manual + +do-build: + $(KERNEL_MAKE_ENV) GCC_HONOUR_COPTS=0 $(MAKE) \ + $(KERNEL_MAKE_OPTS) WERROR=0 -C "$(LINUX_DIR)/tools/perf" all + +do-install: + $(KERNEL_MAKE_ENV) GCC_HONOUR_COPTS=0 $(MAKE) \ + $(KERNEL_MAKE_OPTS) WERROR=0 -C "$(LINUX_DIR)/tools/perf" \ + prefix="$(WRKINST)" install + +perf-install: + $(INSTALL_DIR) $(IDIR_PERF)/usr/bin + $(INSTALL_BIN) $(WRKINST)/bin/perf $(IDIR_PERF)/usr/bin + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/php/Makefile b/package/php/Makefile index 81d75467b..deff3ef4d 100644 --- a/package/php/Makefile +++ b/package/php/Makefile @@ -4,9 +4,9 @@ include $(ADK_TOPDIR)/rules.mk PKG_NAME:= php -PKG_VERSION:= 5.6.3 -PKG_RELEASE:= 2 -PKG_HASH:= fad244506cc7f10fe56aba8129b3c39a4f9316d9544a4fba932c3f81fc2244b5 +PKG_VERSION:= 5.6.5 +PKG_RELEASE:= 1 +PKG_HASH:= c5ef4abaef8c1ea66dcfd5a075a2f357b666aff5c5b686fca7c78c1cfd64e996 PKG_DESCR:= php language interpreter PKG_SECTION:= dev/lang PKG_DEPENDS:= libpthread librt diff --git a/package/samba/Makefile b/package/samba/Makefile index a96cfba26..c1f575b57 100644 --- a/package/samba/Makefile +++ b/package/samba/Makefile @@ -4,9 +4,9 @@ include ${ADK_TOPDIR}/rules.mk PKG_NAME:= samba -PKG_VERSION:= 3.6.24 +PKG_VERSION:= 3.6.25 PKG_RELEASE:= 1 -PKG_HASH:= 11d0bd04b734731970259efc6692b8e749ff671a9b56d8cc5fa98c192ab234a7 +PKG_HASH:= 8f2c8a7f2bd89b0dfd228ed917815852f7c625b2bc0936304ac3ed63aaf83751 PKG_DESCR:= smb file and print server PKG_SECTION:= net/fs PKG_BUILDDEP:= gettext-tiny util-linux popt diff --git a/package/slang/Makefile b/package/slang/Makefile new file mode 100644 index 000000000..1f0e4ee4f --- /dev/null +++ b/package/slang/Makefile @@ -0,0 +1,43 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= slang +PKG_VERSION:= 2.3.0 +PKG_RELEASE:= 1 +PKG_HASH:= f95224060f45e0d8212a5039b339afa5f1a94a1bb0298e796104e5b12e926129 +PKG_DESCR:= multi-platform programmer\'s library designed to allow a developer to create robust software +PKG_SECTION:= libs/misc +PKG_URL:= http://www.jedsoft.org/slang/ +PKG_SITES:= http://www.jedsoft.org/releases/slang/ +PKG_NOPARALLEL:= 1 + +DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.bz2 + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,SLANG,slang,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIGURE_ARGS+= --without-pcre \ + --without-onig \ + --without-png \ + --without-z + +slang-install: + $(INSTALL_DIR) $(IDIR_SLANG)/usr/{bin,lib/slang/v2/modules} + $(INSTALL_BIN) $(WRKINST)/usr/bin/slsh \ + $(IDIR_SLANG)/usr/bin + $(CP) $(WRKINST)/usr/lib/libslang.so* \ + $(IDIR_SLANG)/usr/lib + $(INSTALL_DATA) $(WRKINST)/usr/lib/slang/v2/modules/*.so \ + $(IDIR_SLANG)/usr/lib/slang/v2/modules + $(INSTALL_DIR) $(IDIR_SLANG)/usr/share/slsh/{cmaps,rline} + $(INSTALL_DATA) $(WRKINST)/usr/share/slsh/*.sl \ + $(IDIR_SLANG)/usr/share/slsh + $(INSTALL_DATA) $(WRKINST)/usr/share/slsh/cmaps/*.map \ + $(IDIR_SLANG)/usr/share/slsh/cmaps + $(INSTALL_DATA) $(WRKINST)/usr/share/slsh/rline/*.sl \ + $(IDIR_SLANG)/usr/share/slsh/rline + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/sox/Makefile b/package/sox/Makefile index fd2a12b69..c0c15d79d 100644 --- a/package/sox/Makefile +++ b/package/sox/Makefile @@ -4,9 +4,9 @@ include $(ADK_TOPDIR)/rules.mk PKG_NAME:= sox -PKG_VERSION:= 14.4.1 -PKG_RELEASE:= 2 -PKG_HASH:= 9a8c2c6fe51e608da346a157e111508a957af9e3ecf3de26781d36e9a67fa89b +PKG_VERSION:= 14.4.2 +PKG_RELEASE:= 1 +PKG_HASH:= b45f598643ffbd8e363ff24d61166ccec4836fea6d3888881b8df53e3bb55f6c PKG_DESCR:= swiss army knife of sound processing programs PKG_SECTION:= mm/audio PKG_BUILDDEP:= zlib ncurses diff --git a/package/squeezelite/patches/patch-output_alsa_c b/package/squeezelite/patches/patch-output_alsa_c new file mode 100644 index 000000000..a7d4374bf --- /dev/null +++ b/package/squeezelite/patches/patch-output_alsa_c @@ -0,0 +1,11 @@ +--- squeezelite-8b8dfe6918ebe45ade5f3d9b68d453d7b8128d99.orig/output_alsa.c 2015-02-28 10:18:21.000000000 +0100 ++++ squeezelite-8b8dfe6918ebe45ade5f3d9b68d453d7b8128d99/output_alsa.c 2015-02-28 10:31:59.000000000 +0100 +@@ -853,7 +853,7 @@ void output_init_alsa(log_level level, c + set_mixer(output.device, volume_mixer_name, volume_mixer_index ? atoi(volume_mixer_index) : 0, true, 0, 0); + } + +-#if LINUX ++#if 0 + // RT linux - aim to avoid pagefaults by locking memory: + // https://rt.wiki.kernel.org/index.php/Threaded_RT-application_with_memory_locking_and_stack_handling_example + if (mlockall(MCL_CURRENT | MCL_FUTURE) == -1) { diff --git a/package/squid/Makefile b/package/squid/Makefile index 5edc3057b..9d6f70d49 100644 --- a/package/squid/Makefile +++ b/package/squid/Makefile @@ -4,15 +4,15 @@ include ${ADK_TOPDIR}/rules.mk PKG_NAME:= squid -PKG_VERSION:= 3.4.6 +PKG_VERSION:= 3.5.2 PKG_RELEASE:= 1 -PKG_HASH:= 9ef26cd638c65afa750637b3669057c052890f10c686eb0218eb0d39b4199bc0 +PKG_HASH:= 5af2e16f279466f9fb89c2fef6c09b6824a7e3e7996c9f1c2bc16e7daddd751f PKG_DESCR:= web and cache proxy PKG_SECTION:= net/proxy -PKG_DEPENDS:= libopenssl libpthread libstdcxx libltdl -PKG_BUILDDEP:= openssl libtool +PKG_DEPENDS:= libpthread libstdcxx libltdl +PKG_BUILDDEP:= libtool PKG_URL:= http://www.squid-cache.org/ -PKG_SITES:= http://www.squid-cache.org/Versions/v3/3.4/ +PKG_SITES:= http://www.squid-cache.org/Versions/v3/3.5/ PKG_SUBPKGS:= SQUID SQUID_MOD_BASIC_AUTH_GETPWNAM SQUID_MOD_BASIC_AUTH_NCSA PKG_SUBPKGS+= SQUID_MOD_BASIC_AUTH_SMB SQUID_MOD_DIGEST_AUTH_FILE @@ -147,7 +147,6 @@ CONFIGURE_ARGS+= --datadir=/usr/share/squid \ --disable-debug-cbdata \ --enable-kill-parent-hack \ --enable-arp-acl \ - --enable-ssl \ --enable-err-languages=English \ --enable-default-err-language=English \ --enable-linux-netfilter \ @@ -159,11 +158,11 @@ CONFIGURE_ARGS+= --datadir=/usr/share/squid \ --without-libcap \ --disable-snmp \ --disable-esi \ + --disable-ssl \ --disable-htcp \ --disable-wccp \ --disable-wccpv2 \ --enable-useragent-log \ - --with-openssl=${STAGING_TARGET_DIR}/usr \ --without-krb5-config \ --enable-negotiate-auth-helpers=no \ --enable-auth \ diff --git a/package/squid/patches/patch-acinclude_lib-checks_m4 b/package/squid/patches/patch-acinclude_lib-checks_m4 deleted file mode 100644 index b44b4eb27..000000000 --- a/package/squid/patches/patch-acinclude_lib-checks_m4 +++ /dev/null @@ -1,72 +0,0 @@ ---- squid-3.4.4.orig/acinclude/lib-checks.m4 2014-03-09 10:40:56.000000000 +0100 -+++ squid-3.4.4/acinclude/lib-checks.m4 2014-03-11 19:44:28.088928982 +0100 -@@ -95,69 +95,6 @@ AC_DEFUN([SQUID_CHECK_LIBIPHLPAPI],[ - SQUID_STATE_ROLLBACK(iphlpapi) - ]) - --dnl Checks whether the OpenSSL SSL_get_certificate crashes squid and if a --dnl workaround can be used instead of using the SSL_get_certificate --AC_DEFUN([SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS],[ -- AH_TEMPLATE(SQUID_SSLGETCERTIFICATE_BUGGY, "Define to 1 if the SSL_get_certificate crashes squid") -- AH_TEMPLATE(SQUID_USE_SSLGETCERTIFICATE_HACK, "Define to 1 to use squid workaround for SSL_get_certificate") -- SQUID_STATE_SAVE(check_SSL_get_certificate) -- LIBS="$SSLLIB $LIBS" -- if test "x$SSLLIBDIR" != "x"; then -- LIBS="$LIBS -Wl,-rpath -Wl,$SSLLIBDIR" -- fi -- -- AC_MSG_CHECKING(whether the SSL_get_certificate is buggy) -- AC_RUN_IFELSE([ -- AC_LANG_PROGRAM( -- [ -- #include <openssl/ssl.h> -- #include <openssl/err.h> -- ], -- [ -- SSLeay_add_ssl_algorithms(); -- SSL_CTX *sslContext = SSL_CTX_new(SSLv3_method()); -- SSL *ssl = SSL_new(sslContext); -- X509* cert = SSL_get_certificate(ssl); -- return 0; -- ]) -- ], -- [ -- AC_MSG_RESULT([no]) -- ], -- [ -- AC_DEFINE(SQUID_SSLGETCERTIFICATE_BUGGY, 1) -- AC_MSG_RESULT([yes]) -- ], -- []) -- -- AC_MSG_CHECKING(whether the workaround for SSL_get_certificate works) -- AC_RUN_IFELSE([ -- AC_LANG_PROGRAM( -- [ -- #include <openssl/ssl.h> -- #include <openssl/err.h> -- ], -- [ -- SSLeay_add_ssl_algorithms(); -- SSL_CTX *sslContext = SSL_CTX_new(SSLv3_method()); -- X509 ***pCert = (X509 ***)sslContext->cert; -- X509 *sslCtxCert = pCert && *pCert ? **pCert : (X509 *)0x1; -- if (sslCtxCert != NULL) -- return 1; -- return 0; -- ]) -- ], -- [ -- AC_MSG_RESULT([yes]) -- AC_DEFINE(SQUID_USE_SSLGETCERTIFICATE_HACK, 1) -- ], -- [ -- AC_MSG_RESULT([no]) -- ], --[]) -- --SQUID_STATE_ROLLBACK(check_SSL_get_certificate) --]) - - dnl Checks whether the SSL_CTX_new and similar functions require - dnl a const 'SSL_METHOD *' argument diff --git a/package/squid/patches/patch-configure_ac b/package/squid/patches/patch-configure_ac new file mode 100644 index 000000000..0aae95639 --- /dev/null +++ b/package/squid/patches/patch-configure_ac @@ -0,0 +1,11 @@ +--- squid-3.5.2.orig/configure.ac 2015-02-18 06:18:57.000000000 -0600 ++++ squid-3.5.2/configure.ac 2015-02-20 13:01:31.755039271 -0600 +@@ -1343,7 +1343,7 @@ if test "x$with_openssl" = "xyes"; then + AC_DEFINE(USE_OPENSSL,1,[OpenSSL support is available]) + + # check for other specific broken implementations +- SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS ++ #SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS + SQUID_CHECK_OPENSSL_CONST_SSL_METHOD + SQUID_CHECK_OPENSSL_TXTDB + SQUID_CHECK_OPENSSL_HELLO_OVERWRITE_HACK diff --git a/package/squid/patches/patch-lib_rfcnb_rfcnb-io_c b/package/squid/patches/patch-lib_rfcnb_rfcnb-io_c index 32faad55f..17fd993a7 100644 --- a/package/squid/patches/patch-lib_rfcnb_rfcnb-io_c +++ b/package/squid/patches/patch-lib_rfcnb_rfcnb-io_c @@ -1,11 +1,11 @@ ---- squid-3.4.4.orig/lib/rfcnb/rfcnb-io.c 2014-03-09 10:40:56.000000000 +0100 -+++ squid-3.4.4/lib/rfcnb/rfcnb-io.c 2014-03-27 09:28:30.000000000 +0100 -@@ -30,7 +30,7 @@ - #include "rfcnb/rfcnb-util.h" - #include "rfcnb/std-includes.h" +--- squid-3.5.2.orig/lib/rfcnb/rfcnb-io.c 2015-02-18 06:17:02.000000000 -0600 ++++ squid-3.5.2/lib/rfcnb/rfcnb-io.c 2015-02-20 00:33:21.015450265 -0600 +@@ -40,7 +40,7 @@ + #include <string.h> + #endif #include <sys/uio.h> -#include <sys/signal.h> +#include <signal.h> - #if HAVE_STRING_H - #include <string.h> + int RFCNB_Timeout = 0; /* Timeout in seconds ... */ + diff --git a/package/squid/patches/patch-libltdl_aclocal_m4 b/package/squid/patches/patch-libltdl_aclocal_m4 new file mode 100644 index 000000000..45b9c7e64 --- /dev/null +++ b/package/squid/patches/patch-libltdl_aclocal_m4 @@ -0,0 +1,14 @@ +--- squid-3.5.2.orig/libltdl/aclocal.m4 2015-02-18 06:17:49.000000000 -0600 ++++ squid-3.5.2/libltdl/aclocal.m4 2015-02-23 15:31:16.264583929 -0600 +@@ -486,9 +486,9 @@ _AM_IF_OPTION([no-define],, + # Some tools Automake needs. + AC_REQUIRE([AM_SANITY_CHECK])dnl + AC_REQUIRE([AC_ARG_PROGRAM])dnl +-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) ++AM_MISSING_PROG([ACLOCAL], [aclocal]) + AM_MISSING_PROG([AUTOCONF], [autoconf]) +-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) ++AM_MISSING_PROG([AUTOMAKE], [automake]) + AM_MISSING_PROG([AUTOHEADER], [autoheader]) + AM_MISSING_PROG([MAKEINFO], [makeinfo]) + AC_REQUIRE([AM_PROG_INSTALL_SH])dnl diff --git a/package/squid/patches/patch-src_Makefile_am b/package/squid/patches/patch-src_Makefile_am index 9aec4eca3..049ff3a1d 100644 --- a/package/squid/patches/patch-src_Makefile_am +++ b/package/squid/patches/patch-src_Makefile_am @@ -1,11 +1,11 @@ ---- squid-3.4.4.orig/src/Makefile.am 2014-03-09 10:40:56.000000000 +0100 -+++ squid-3.4.4/src/Makefile.am 2014-03-12 09:46:23.001434141 +0100 -@@ -981,7 +981,7 @@ cache_cf.o: cf_parser.cci +--- squid-3.5.2.orig/src/Makefile.am 2015-02-18 06:17:02.000000000 -0600 ++++ squid-3.5.2/src/Makefile.am 2015-02-23 15:32:32.084583233 -0600 +@@ -970,7 +970,7 @@ cache_cf.o: cf_parser.cci # cf_gen builds the configuration files. cf_gen$(EXEEXT): $(cf_gen_SOURCES) $(cf_gen_DEPENDENCIES) cf_gen_defines.cci -- $(HOSTCXX) -o $@ $(srcdir)/cf_gen.cc -I$(srcdir) -I$(top_builddir)/include/ -I$(top_builddir)/src -+ $(CXX_FOR_BUILD) -o $@ $(srcdir)/cf_gen.cc -I$(srcdir) -I$(top_builddir)/include/ -I$(top_builddir)/src +- $(BUILDCXX) $(BUILDCXXFLAGS) -o $@ $(srcdir)/cf_gen.cc -I$(srcdir) -I$(top_builddir)/include/ -I$(top_builddir)/src ++ $(CXX_FOR_BUILD) $(CXXFLAGS_FOR_BUILD) -o $@ $(srcdir)/cf_gen.cc -I$(srcdir) -I$(top_builddir)/include/ -I$(top_builddir)/src # squid.conf.default is built by cf_gen when making cf_parser.cci squid.conf.default squid.conf.documented: cf_parser.cci diff --git a/package/stats/Makefile b/package/stats/Makefile new file mode 100644 index 000000000..7d52788e6 --- /dev/null +++ b/package/stats/Makefile @@ -0,0 +1,23 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= stats +PKG_VERSION:= 82bd4977b607b8714f361467e37a9d801ff911b6 +PKG_RELEASE:= 1 +PKG_DESCR:= stats utility +PKG_SECTION:= sys/utils +PKG_URL:= https://github.com/rustyrussell/stats +PKG_SITES:= git://github.com/rustyrussell/stats.git + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,STATS,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +stats-install: + $(INSTALL_DIR) $(IDIR_STATS)/usr/bin + $(INSTALL_BIN) $(WRKINST)/usr/bin/stats \ + $(IDIR_STATS)/usr/bin + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/stats/patches/patch-Makefile b/package/stats/patches/patch-Makefile new file mode 100644 index 000000000..0650a3adf --- /dev/null +++ b/package/stats/patches/patch-Makefile @@ -0,0 +1,35 @@ + - allow for passing custom compiler FLAGS + - use host CC and CFLAGS for tools/configurator build +--- stats-82bd4977b607b8714f361467e37a9d801ff911b6.orig/Makefile 2015-02-27 18:30:06.000000000 +0100 ++++ stats-82bd4977b607b8714f361467e37a9d801ff911b6/Makefile 2015-02-27 18:37:14.000000000 +0100 +@@ -1,14 +1,15 @@ + # Destination directory for installation (intended for packagers) + DESTDIR = +-PREFIX = /usr/local ++PREFIX = /usr + ++CC ?= + OPTFLAGS=-O3 -flto + #OPTFLAGS=-g + WARNFLAGS=-Wall -Wstrict-prototypes -Wundef +-CPPFLAGS=-I. +-CFLAGS=$(OPTFLAGS) $(WARNFLAGS) +-LDFLAGS=$(OPTFLAGS) +-LDLIBS=-lm ++CPPFLAGS+=-I. ++CFLAGS+=$(WARNFLAGS) ++LDFLAGS+= ++LDLIBS+=-lm + + # Comment this out (or use "VALGRIND=" on cmdline) if you don't have valgrind. + VALGRIND=valgrind --quiet --leak-check=full --error-exitcode=5 +@@ -41,6 +42,9 @@ $(OFILES): config.h + config.h: tools/configurator + if $< > $@.tmp; then mv $@.tmp $@; else rm -f $@.tmp; fi + ++tools/configurator: CC=${CC_FOR_BUILD} ++tools/configurator: CFLAGS=${CFLAGS_FOR_BUILD} ++tools/configurator: LDFLAGS=${LDFLAGS_FOR_BUILD} + stats: $(OFILES) + + distclean: clean diff --git a/package/supl/Makefile b/package/supl/Makefile new file mode 100644 index 000000000..13e58560f --- /dev/null +++ b/package/supl/Makefile @@ -0,0 +1,34 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= supl +PKG_VERSION:= 1.0.6 +PKG_RELEASE:= 1 +PKG_HASH:= 068dc47ce818ce5634f09a88159df85a6ce3456e2467b11b8c5f8543a99bb347 +PKG_DESCR:= tools for accessing sup/rrlp server +PKG_SECTION:= net/misc +PKG_BUILDDEP:= openssl +PKG_DEPENDS:= libopenssl +PKG_URL:= http://www.tajuma.com/supl/ +PKG_SITES:= $(MASTER_SITE_SOURCEFORGE:=supl/) + +DISTFILES:= $(PKG_NAME)_$(PKG_VERSION).tar.gz +WRKDIST= $(WRKDIR)/trunk + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,SUPL,supl,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:= minimal +CONFIGURE_ARGS+= --precompiled-asn1=yes --prefix="$(WRKINST)/usr" + +supl-install: + $(INSTALL_DIR) $(IDIR_SUPL)/usr/{bin,lib} + $(INSTALL_BIN) $(WRKINST)/usr/bin/supl-{cert,client,proxy} \ + $(IDIR_SUPL)/usr/bin + $(CP) $(WRKINST)/usr/lib/lib{asnrrlp,asnsupl,supl}.so* \ + $(IDIR_SUPL)/usr/lib + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/supl/patches/patch-configure b/package/supl/patches/patch-configure new file mode 100644 index 000000000..1c8f24d49 --- /dev/null +++ b/package/supl/patches/patch-configure @@ -0,0 +1,11 @@ +--- trunk.orig/configure 2011-10-25 21:41:03.000000000 +0200 ++++ trunk/configure 2015-02-27 19:33:11.000000000 +0100 +@@ -91,7 +91,7 @@ cat <<EOF > config.mk + # Modifications to this file are lost if ./configure is ran again. + + CONF_VERSION = 1.0.5 +-CONF_CFLAGS = -Wall -O2 $var_debug ++CONF_CFLAGS = -Wall $var_debug + CONF_ASN_CFLAGS = $var_asn1_debug + CONF_PREFIX = $var_prefix + CONF_PRECOMPILED_ASN = $var_precompiled_asn diff --git a/package/supl/patches/patch-src_Makefile b/package/supl/patches/patch-src_Makefile new file mode 100644 index 000000000..cec5a4771 --- /dev/null +++ b/package/supl/patches/patch-src_Makefile @@ -0,0 +1,16 @@ + - use pkg-config everywhere, otherwise libs are not found +--- trunk.orig/src/Makefile 2011-10-17 20:09:22.000000000 +0200 ++++ trunk/src/Makefile 2015-02-09 16:48:37.244935714 +0100 +@@ -21,10 +21,10 @@ DIST = Makefile $(PROGRAM_SOURCE) $(SUPL + all: supl-client supl-proxy supl-cert + + supl-client: libsupl.so supl-client.o +- $(CC) -o $@ supl-client.o -L. -lsupl -lssl -lm ++ $(CC) -o $@ supl-client.o -L. -lsupl $(shell pkg-config --libs openssl) -lm + + supl-proxy: libsupl.so supl-proxy.o +- $(CC) -o $@ supl-proxy.o -L. -lsupl -lssl -lm ++ $(CC) -o $@ supl-proxy.o -L. -lsupl $(shell pkg-config --libs openssl) -lm + + supl-cert: supl-cert.o + $(CC) -o $@ supl-cert.o $(shell pkg-config --libs openssl) -lm diff --git a/package/supl/patches/patch-src_supl-client_c b/package/supl/patches/patch-src_supl-client_c new file mode 100644 index 000000000..15e2fa727 --- /dev/null +++ b/package/supl/patches/patch-src_supl-client_c @@ -0,0 +1,40 @@ + - implement bind to device functionality +--- trunk.orig/src/supl-client.c 2011-10-21 20:51:38.000000000 +0200 ++++ trunk/src/supl-client.c 2013-04-24 18:55:01.937252375 +0200 +@@ -252,6 +252,7 @@ static char *usage_str = + " --cell gsm:mcc,mns:lac,ci|wcdma:mcc,msn,uc set current gsm/wcdma cell id\n" + " --cell gsm:mcc,mns:lac,ci:lat,lon,uncert set known gsm cell id with position\n" + " --format|-f human machine parseable output\n" ++" --interface|-i iface bind to this interface\n" + " --debug|-d <n> 1 == RRLP, 2 == SUPL, 4 == DEBUG\n" + " --debug-file file write debug to file\n" + " --help|-h show this help\n" +@@ -267,6 +268,7 @@ static struct option long_opts[] = { + { "cell", 1, 0, 0 }, + { "debug", 1, 0, 'd' }, + { "format", 1, 0, 'f' }, ++ { "interface", 1, 0, 0}, + { "test", 1, 0, 't' }, + { "set-pos", 1, 0, 0 }, + { "pos-helper", 1, 0, 0 }, +@@ -310,7 +312,7 @@ int main(int argc, char *argv[]) { + int opt_index; + int c; + +- c = getopt_long(argc, argv, "ad:f:t:", long_opts, &opt_index); ++ c = getopt_long(argc, argv, "ad:f:i:t:", long_opts, &opt_index); + if (c == -1) break; + switch (c) { + case 0: +@@ -374,6 +376,11 @@ int main(int argc, char *argv[]) { + } + break; + ++ case 'i': ++ strncpy(ctx.iface, optarg, IFNAMSIZ); ++ ctx.iface[IFNAMSIZ] = 0; ++ break; ++ + case 'd': + { + int debug = atoi(optarg); diff --git a/package/supl/patches/patch-src_supl_c b/package/supl/patches/patch-src_supl_c new file mode 100644 index 000000000..26ab45b18 --- /dev/null +++ b/package/supl/patches/patch-src_supl_c @@ -0,0 +1,46 @@ + - implement bind to device functionality +--- trunk.orig/src/supl.c 2011-10-27 20:41:19.000000000 +0200 ++++ trunk/src/supl.c 2013-04-24 18:56:17.742529773 +0200 +@@ -41,7 +41,7 @@ static struct supl_debug_s { + } debug; + #endif + +-static int server_connect(char *server); ++static int server_connect(char *server, char *iface); + static int pdu_make_ulp_start(supl_ctx_t *ctx, supl_ulp_t *pdu); + static int pdu_make_ulp_pos_init(supl_ctx_t *ctx, supl_ulp_t *pdu); + static int pdu_make_ulp_rrlp_ack(supl_ctx_t *ctx, supl_ulp_t *pdu, PDU_t *rrlp); +@@ -236,7 +236,7 @@ int EXPORT supl_server_connect(supl_ctx_ + if (!ctx->ssl) return E_SUPL_CONNECT; + + if (server) { +- ctx->fd = server_connect(server); ++ ctx->fd = server_connect(server, ctx->iface); + if (ctx->fd == -1) return E_SUPL_CONNECT; + } + +@@ -266,7 +266,7 @@ void EXPORT supl_close(supl_ctx_t *ctx) + } + + +-static int server_connect(char *server) { ++static int server_connect(char *server, char *iface) { + int fd = -1; + struct addrinfo *ailist, *aip; + struct addrinfo hint; +@@ -283,6 +283,15 @@ static int server_connect(char *server) + if ((fd = socket(aip->ai_family, SOCK_STREAM, 0)) < 0) { + err = errno; + } ++ ++ if (strlen(iface)) { ++ struct ifreq ifr; ++ strncpy(ifr.ifr_name, iface, IFNAMSIZ); ++ ifr.ifr_name[IFNAMSIZ - 1] = 0; ++ if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr))) ++ fprintf(stderr, "Error: binding to device %s failed\n", iface); ++ } ++ + if (connect(fd, aip->ai_addr, aip->ai_addrlen) != 0) { + return -1; + } diff --git a/package/supl/patches/patch-src_supl_h b/package/supl/patches/patch-src_supl_h new file mode 100644 index 000000000..c2e9e8da4 --- /dev/null +++ b/package/supl/patches/patch-src_supl_h @@ -0,0 +1,19 @@ + - implement bind to device functionality +--- trunk.orig/src/supl.h 2011-10-21 20:08:29.000000000 +0200 ++++ trunk/src/supl.h 2013-04-24 18:52:14.916232733 +0200 +@@ -19,6 +19,7 @@ + #include <openssl/ssl.h> + #include <PDU.h> + #include <ULP-PDU.h> ++#include <net/if.h> + + #define SUPL_PORT "7275" + +@@ -204,6 +205,7 @@ typedef struct supl_ctx_s { + size_t size; + } slp_session_id; + ++ char iface[IFNAMSIZ + 1]; + } supl_ctx_t; + + int supl_ctx_new(supl_ctx_t *ctx); diff --git a/package/tcpdump/Makefile b/package/tcpdump/Makefile index 83909d6eb..4ee28cf8d 100644 --- a/package/tcpdump/Makefile +++ b/package/tcpdump/Makefile @@ -4,9 +4,9 @@ include ${ADK_TOPDIR}/rules.mk PKG_NAME:= tcpdump -PKG_VERSION:= 4.6.1 -PKG_RELEASE:= 2 -PKG_HASH:= 4c88c2a9aeb4047074f344fc9b2b6577b219972d359e192f6d12ccf983a13fd7 +PKG_VERSION:= 4.6.2 +PKG_RELEASE:= 1 +PKG_HASH:= 524ee4d8e83a6c663f6879004216a9a5bcb1c68b11920d653eb87b79d008e0b8 PKG_DESCR:= tool for network monitoring and data acquisition PKG_SECTION:= net/debug PKG_DEPENDS:= libpcap diff --git a/package/tcptrace/Makefile b/package/tcptrace/Makefile new file mode 100644 index 000000000..b780a8f84 --- /dev/null +++ b/package/tcptrace/Makefile @@ -0,0 +1,31 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= tcptrace +PKG_VERSION:= 6.6.7 +PKG_RELEASE:= 1 +PKG_HASH:= 63380a4051933ca08979476a9dfc6f959308bc9f60d45255202e388eb56910bd +PKG_DESCR:= tool for analyzing network packet dumps +PKG_SECTION:= net/debug +PKG_DEPENDS:= libpcap +PKG_BUILDDEP:= libpcap +PKG_URL:= http://www.tcptrace.org +PKG_SITES:= http://www.tcptrace.org/download/ + +DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,TCPTRACE,tcptrace,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +FAKE_FLAGS:= BINDIR="$(WRKINST)/usr/bin" MANDIR="$(WRKINST)/usr/man" INSTALL="install -D" +TARGET_CPPFLAGS+= -D_BSD_SOURCE + +tcptrace-install: + $(INSTALL_DIR) $(IDIR_TCPTRACE)/usr/bin + $(INSTALL_BIN) $(WRKINST)/usr/bin/tcptrace \ + $(IDIR_TCPTRACE)/usr/bin + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/tcptrace/patches/patch-Makefile_in b/package/tcptrace/patches/patch-Makefile_in new file mode 100644 index 000000000..abd55f44d --- /dev/null +++ b/package/tcptrace/patches/patch-Makefile_in @@ -0,0 +1,13 @@ +--- tcptrace-6.6.7.orig/Makefile.in 2004-03-04 21:33:56.000000000 +0100 ++++ tcptrace-6.6.7/Makefile.in 2015-02-27 19:17:39.000000000 +0100 +@@ -34,8 +34,8 @@ DEFINES += -DBUNZIP2="\"bunzip2\"" + # + ################################################################## + PCAP_LDLIBS = @V_PCAP_LDLIBS@ +-PCAP_INCS = -I/usr/local/include -I. -I../pcap -I/usr/include/pcap +-PCAP_LDFLAGS = -L/usr/local/lib -Llib -Lpcap -L../pcap -L./cygwin-libs ++PCAP_INCS = -I. -I../pcap ++PCAP_LDFLAGS = -Llib -Lpcap -L../pcap -L./cygwin-libs + + + diff --git a/package/tcptrace/patches/patch-configure b/package/tcptrace/patches/patch-configure new file mode 100644 index 000000000..53ee6ce74 --- /dev/null +++ b/package/tcptrace/patches/patch-configure @@ -0,0 +1,18 @@ + do not bail on cross-compiling, simply assume useful values instead +--- tcptrace-6.6.7.orig/configure 2002-06-21 11:56:26.000000000 +0200 ++++ tcptrace-6.6.7/configure 2012-10-18 18:52:35.154444758 +0200 +@@ -5086,9 +5086,11 @@ echo "$as_me:5085: checking how to print + echo $ECHO_N "checking how to print unsigned long long... $ECHO_C" >&6 + + if test "$cross_compiling" = yes; then +- { { echo "$as_me:5089: error: can not run test program while cross compiling" >&5 +-echo "$as_me: error: can not run test program while cross compiling" >&2;} +- { (exit 1); exit 1; }; } ++ { echo "$as_me: cross_compiling, simply assuming '%llu'" ++ cat >>confdefs.h <<\EOF ++#define USE_LLU 1 ++EOF ++} + else + cat >conftest.$ac_ext <<_ACEOF + #line 5094 "configure" diff --git a/package/wget/Makefile b/package/wget/Makefile index e6ebb6ccb..ad2ab61c1 100644 --- a/package/wget/Makefile +++ b/package/wget/Makefile @@ -32,7 +32,9 @@ ifeq (${ADK_PACKAGE_WGET_WITHOUT_SSL},y) CONFIGURE_ARGS+= --with-ssl=no endif ifeq (${ADK_PACKAGE_WGET_WITH_OPENSSL},y) -CONFIGURE_ARGS+= --with-ssl=openssl +CONFIGURE_ARGS+= --with-ssl=openssl \ + --with-openssl=yes \ + --with-libssl-prefix=${STAGING_TARGET_DIR} endif ifeq (${ADK_PACKAGE_WGET_WITH_GNUTLS},y) CONFIGURE_ARGS+= --with-ssl=gnutls \ diff --git a/package/wireless-regdb/Makefile b/package/wireless-regdb/Makefile new file mode 100644 index 000000000..4bded919f --- /dev/null +++ b/package/wireless-regdb/Makefile @@ -0,0 +1,28 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= wireless-regdb +PKG_VERSION:= 2015.01.30 +PKG_RELEASE:= 1 +PKG_HASH:= 438d7f3d62686bc997098d17fe1aff95c6f6ec061aaab90ab7c2c17e8451ce85 +PKG_DESCR:= binary regulatory database for crda +PKG_SECTION:= libs/net +PKG_URL:= http://wireless.kernel.org/en/developers/Regulatory +PKG_SITES:= https://www.kernel.org/pub/software/network/wireless-regdb/ + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,WIRELESS_REGDB,$(PKG_NAME),$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:= manual +BUILD_STYLE:= manual +INSTALL_STYLE:= manual + +do-install: + $(INSTALL_DIR) $(IDIR_WIRELESS_REGDB)/usr/lib/crda + $(INSTALL_DATA) $(WRKDIST)/regulatory.bin \ + $(IDIR_WIRELESS_REGDB)/usr/lib/crda + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/xterm/Makefile b/package/xterm/Makefile index 37043fc3e..db4e53003 100644 --- a/package/xterm/Makefile +++ b/package/xterm/Makefile @@ -4,9 +4,9 @@ include $(ADK_TOPDIR)/rules.mk PKG_NAME:= xterm -PKG_VERSION:= 306 +PKG_VERSION:= 314 PKG_RELEASE:= 1 -PKG_HASH:= 6a09f60d126603604d0c801e3f5000e4af87b309e8e1d3c0735be50b6d13bdaa +PKG_HASH:= 1dbf1e93796c1b71b22b84e82eb58bcf20a14a7f365158819f3b4dbb29fe93f0 PKG_DESCR:= terminal emulator PKG_SECTION:= x11/apps PKG_DEPENDS:= libxaw libxt libncurses libxft fontconfig diff --git a/package/xterm/patches/patch-xterm_h b/package/xterm/patches/patch-xterm_h deleted file mode 100644 index 7a3418a11..000000000 --- a/package/xterm/patches/patch-xterm_h +++ /dev/null @@ -1,11 +0,0 @@ ---- xterm-297.orig/xterm.h 2013-09-10 12:55:04.000000000 +0200 -+++ xterm-297/xterm.h 2013-10-30 17:19:53.000000000 +0100 -@@ -99,7 +99,7 @@ - #define HAVE_PUTENV 1 - #endif - --#if defined(CSRG_BASED) || defined(__GNU__) -+#if defined(CSRG_BASED) || defined(__linux__) - #define USE_POSIX_TERMIOS 1 - #endif - @@ -25,6 +25,7 @@ SET_DASHX:= : endif # Strip off the annoying quoting +ADK_APPLIANCE_VERSION:= $(strip $(subst ",, $(ADK_APPLIANCE_VERSION))) ADK_TARGET_ARCH:= $(strip $(subst ",, $(ADK_TARGET_ARCH))) ADK_TARGET_SYSTEM:= $(strip $(subst ",, $(ADK_TARGET_SYSTEM))) ADK_TARGET_BOARD:= $(strip $(subst ",, $(ADK_TARGET_BOARD))) @@ -39,6 +40,7 @@ ADK_TARGET_FLOAT:= $(strip $(subst ",, $(ADK_TARGET_FLOAT))) ADK_TARGET_FPU:= $(strip $(subst ",, $(ADK_TARGET_FPU))) ADK_TARGET_ARM_MODE:= $(strip $(subst ",, $(ADK_TARGET_ARM_MODE))) ADK_TARGET_CFLAGS:= $(strip $(subst ",, $(ADK_TARGET_CFLAGS))) +ADK_TARGET_CPU_FLAGS:= $(strip $(subst ",, $(ADK_TARGET_CPU_FLAGS))) ADK_TARGET_CFLAGS_OPT:= $(strip $(subst ",, $(ADK_TARGET_CFLAGS_OPT))) ADK_TARGET_ABI_CFLAGS:= $(strip $(subst ",, $(ADK_TARGET_ABI_CFLAGS))) ADK_TARGET_ABI:= $(strip $(subst ",, $(ADK_TARGET_ABI))) diff --git a/scripts/install b/scripts/install index 0fe925d0f..174d27d5a 100755 --- a/scripts/install +++ b/scripts/install @@ -2,9 +2,26 @@ # This file is part of the OpenADK project. OpenADK is copyrighted # material, please see the LICENCE file in the top-level directory. +# eliminate unwanted install flags: +# -o and -g require root as caller which we don't want +# -s is unwanted as we strip ourselfs if debugging is turned off +declare -a opts +while [[ "$1" ]]; do + case "$1" in + -o|--owner) shift ;; + -g|--group) shift ;; + -s|--strip) ;; + *) opts+=("$1") ;; + esac + shift +done + +# prefer ginstall if available if [ -z "$(which ginstall 2>/dev/null)" ];then - /usr/bin/install "$@" + install=/usr/bin/install else - ginstall "$@" + install=ginstall fi +# do the actual call +exec $install "${opts[@]}" diff --git a/target/Makefile b/target/Makefile index 3291862ba..ddb395b55 100644 --- a/target/Makefile +++ b/target/Makefile @@ -106,6 +106,8 @@ config-prepare: $(ADK_TOPDIR)/.config echo "no miniconfig found for target system"; \ exit 1; \ fi + @cd $(BUILD_DIR) && cmp -s .kernelconfig.board .kernelconfig || \ + cp .kernelconfig.board .kernelconfig endif prepare: $(ADK_TARGET_ARCH)-prepare diff --git a/target/appliances/default.options b/target/appliances/default.options new file mode 100644 index 000000000..bf6ca0e25 --- /dev/null +++ b/target/appliances/default.options @@ -0,0 +1,5 @@ +config ADK_APPLIANCE_VERSION + prompt "version string" + string + help + Configure version for appliance diff --git a/target/appliances/mpd.options b/target/appliances/mpd.options new file mode 100644 index 000000000..dac0ba37c --- /dev/null +++ b/target/appliances/mpd.options @@ -0,0 +1,16 @@ +choice +prompt "Choose a GUI" +depends on ADK_APPLIANCE_MPD + +config ADK_APPLIANCE_MPD_MPDBOX + bool "use mpdbox html/javascript frontend" + select ADK_PACKAGE_MPDBOX + +config ADK_APPLIANCE_MPD_YMPD + bool "use ympd frontend" + select ADK_PACKAGE_YMPD + +config ADK_APPLIANCE_MPD_NOGUI + bool "use no gui frontend" + +endchoice diff --git a/target/arm/Makefile b/target/arm/Makefile index 9efddfac9..634bee924 100644 --- a/target/arm/Makefile +++ b/target/arm/Makefile @@ -108,11 +108,10 @@ kernel-install: kernel-strip dtb-install: ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI),y) - env $(KERNEL_MAKE_ENV) $(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKE_OPTS) \ - dtbs $(MAKE_TRACE) + env $(KERNEL_MAKE_ENV) $(MAKE) $(KERNEL_MAKE_OPTS) dtbs $(MAKE_TRACE) endif ifeq ($(ADK_TARGET_SYSTEM_SOLIDRUN_IMX6),y) - env $(KERNEL_MAKE_ENV) $(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKE_OPTS) \ + env $(KERNEL_MAKE_ENV) $(MAKE) $(KERNEL_MAKE_OPTS) \ imx6q-cubox-i.dtb imx6dl-cubox-i.dtb imx6dl-hummingboard.dtb imx6q-hummingboard.dtb $(MAKE_TRACE) endif for x in $(LINUX_DIR)/arch/arm/boot/dts/*.dtb; do \ diff --git a/target/arm/bcm28xx/patches/3.18.6/0000-raspberry-pi.patch b/target/arm/bcm28xx/patches/3.18.8/0000-raspberry-pi.patch index b66bb6533..b66bb6533 100644 --- a/target/arm/bcm28xx/patches/3.18.6/0000-raspberry-pi.patch +++ b/target/arm/bcm28xx/patches/3.18.8/0000-raspberry-pi.patch diff --git a/target/arm/bcm28xx/patches/3.18.6/0001-add-support-for-rpi-proto-hardware.patch b/target/arm/bcm28xx/patches/3.18.8/0001-add-support-for-rpi-proto-hardware.patch index d2c72cdd5..d2c72cdd5 100644 --- a/target/arm/bcm28xx/patches/3.18.6/0001-add-support-for-rpi-proto-hardware.patch +++ b/target/arm/bcm28xx/patches/3.18.8/0001-add-support-for-rpi-proto-hardware.patch diff --git a/target/arm/bcm28xx/patches/3.18.6/0002-allow-to-control-volume-for-each-channel.patch b/target/arm/bcm28xx/patches/3.18.8/0002-allow-to-control-volume-for-each-channel.patch index 76634e2e8..76634e2e8 100644 --- a/target/arm/bcm28xx/patches/3.18.6/0002-allow-to-control-volume-for-each-channel.patch +++ b/target/arm/bcm28xx/patches/3.18.8/0002-allow-to-control-volume-for-each-channel.patch diff --git a/target/arm/solidrun-imx6/patches/3.18.8/solidrun-imx6-wlan.patch b/target/arm/solidrun-imx6/patches/3.18.8/solidrun-imx6-wlan.patch new file mode 100644 index 000000000..3ab3081db --- /dev/null +++ b/target/arm/solidrun-imx6/patches/3.18.8/solidrun-imx6-wlan.patch @@ -0,0 +1,3252 @@ +diff -Nur linux-3.18.8.orig/arch/arm/boot/dts/imx6qdl-cubox-i.dtsi linux-3.18.8/arch/arm/boot/dts/imx6qdl-cubox-i.dtsi +--- linux-3.18.8.orig/arch/arm/boot/dts/imx6qdl-cubox-i.dtsi 2015-02-27 02:49:36.000000000 +0100 ++++ linux-3.18.8/arch/arm/boot/dts/imx6qdl-cubox-i.dtsi 2015-03-02 03:23:14.000000000 +0100 +@@ -170,6 +170,28 @@ + MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x13059 + >; + }; ++ ++ pinctrl_cubox_i_usdhc2_100mhz: cubox-i-usdhc2-100mhz { ++ fsl,pins = < ++ MX6QDL_PAD_SD2_CMD__SD2_CMD 0x170b9 ++ MX6QDL_PAD_SD2_CLK__SD2_CLK 0x100b9 ++ MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x170b9 ++ MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x170b9 ++ MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x170b9 ++ MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x130b9 ++ >; ++ }; ++ ++ pinctrl_cubox_i_usdhc2_200mhz: cubox-i-usdhc2-200mhz { ++ fsl,pins = < ++ MX6QDL_PAD_SD2_CMD__SD2_CMD 0x170f9 ++ MX6QDL_PAD_SD2_CLK__SD2_CLK 0x100f9 ++ MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x170f9 ++ MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x170f9 ++ MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x170f9 ++ MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x130f9 ++ >; ++ }; + }; + }; + +@@ -194,8 +216,10 @@ + }; + + &usdhc2 { +- pinctrl-names = "default"; ++ pinctrl-names = "default", "state_100mhz", "state_200mhz"; + pinctrl-0 = <&pinctrl_cubox_i_usdhc2_aux &pinctrl_cubox_i_usdhc2>; ++ pinctrl-1 = <&pinctrl_cubox_i_usdhc2_aux &pinctrl_cubox_i_usdhc2_100mhz>; ++ pinctrl-2 = <&pinctrl_cubox_i_usdhc2_aux &pinctrl_cubox_i_usdhc2_200mhz>; + vmmc-supply = <®_3p3v>; + cd-gpios = <&gpio1 4 0>; + status = "okay"; +diff -Nur linux-3.18.8.orig/arch/arm/boot/dts/imx6qdl-microsom.dtsi linux-3.18.8/arch/arm/boot/dts/imx6qdl-microsom.dtsi +--- linux-3.18.8.orig/arch/arm/boot/dts/imx6qdl-microsom.dtsi 2015-02-27 02:49:36.000000000 +0100 ++++ linux-3.18.8/arch/arm/boot/dts/imx6qdl-microsom.dtsi 2015-03-02 02:58:12.000000000 +0100 +@@ -1,15 +1,95 @@ + /* + * Copyright (C) 2013,2014 Russell King + */ ++#include <dt-bindings/gpio/gpio.h> ++/ { ++ regulators { ++ compatible = "simple-bus"; ++ ++ reg_brcm_osc: brcm-osc-reg { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio5 5 0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_microsom_brcm_osc_reg>; ++ regulator-name = "brcm_osc_reg"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ reg_brcm: brcm-reg { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio3 19 0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_microsom_brcm_reg>; ++ regulator-name = "brcm_reg"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ startup-delay-us = <200000>; ++ }; ++ }; ++}; + + &iomuxc { + microsom { ++ pinctrl_microsom_brcm_bt: microsom-brcm-bt { ++ fsl,pins = < ++ MX6QDL_PAD_CSI0_DAT14__GPIO6_IO00 0x40013070 ++ MX6QDL_PAD_CSI0_DAT15__GPIO6_IO01 0x40013070 ++ MX6QDL_PAD_CSI0_DAT18__GPIO6_IO04 0x40013070 ++ >; ++ }; ++ ++ pinctrl_microsom_brcm_osc_reg: microsom-brcm-osc-reg { ++ fsl,pins = < ++ MX6QDL_PAD_DISP0_DAT11__GPIO5_IO05 0x40013070 ++ >; ++ }; ++ ++ pinctrl_microsom_brcm_reg: microsom-brcm-reg { ++ fsl,pins = < ++ MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x40013070 ++ >; ++ }; ++ ++ pinctrl_microsom_brcm_wifi: microsom-brcm-wifi { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_8__XTALOSC_REF_CLK_32K 0x1b0b0 ++ MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20 0x40013070 ++ MX6QDL_PAD_CSI0_DAT8__GPIO5_IO26 0x40013070 ++ MX6QDL_PAD_CSI0_DAT9__GPIO5_IO27 0x40013070 ++ >; ++ }; ++ + pinctrl_microsom_uart1: microsom-uart1 { + fsl,pins = < + MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0b1 + MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0b1 + >; + }; ++ ++ pinctrl_microsom_uart4_1: microsom-uart4 { ++ fsl,pins = < ++ MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA 0x1b0b1 ++ MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA 0x1b0b1 ++ MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B 0x1b0b1 ++ MX6QDL_PAD_CSI0_DAT17__UART4_CTS_B 0x1b0b1 ++ >; ++ }; ++ ++ pinctrl_microsom_usdhc1: microsom-usdhc1 { ++ fsl,pins = < ++ MX6QDL_PAD_SD1_CMD__SD1_CMD 0x17059 ++ MX6QDL_PAD_SD1_CLK__SD1_CLK 0x10059 ++ MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059 ++ MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059 ++ MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059 ++ MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059 ++ >; ++ }; + }; + }; + +@@ -18,3 +98,23 @@ + pinctrl-0 = <&pinctrl_microsom_uart1>; + status = "okay"; + }; ++ ++/* UART4 - Connected to optional BRCM Wifi/BT/FM */ ++&uart4 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_microsom_brcm_bt &pinctrl_microsom_uart4_1>; ++ fsl,uart-has-rtscts; ++ status = "okay"; ++}; ++ ++/* USDHC1 - Connected to optional BRCM Wifi/BT/FM */ ++&usdhc1 { ++ card-external-vcc-supply = <®_brcm>; ++ card-reset-gpios = <&gpio5 26 GPIO_ACTIVE_LOW>, <&gpio6 0 GPIO_ACTIVE_LOW>; ++ keep-power-in-suspend; ++ non-removable; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_microsom_brcm_wifi &pinctrl_microsom_usdhc1>; ++ vmmc-supply = <®_brcm>; ++ status = "okay"; ++}; +diff -Nur linux-3.18.8.orig/Documentation/devicetree/bindings/mmc/mmc.txt linux-3.18.8/Documentation/devicetree/bindings/mmc/mmc.txt +--- linux-3.18.8.orig/Documentation/devicetree/bindings/mmc/mmc.txt 2015-02-27 02:49:36.000000000 +0100 ++++ linux-3.18.8/Documentation/devicetree/bindings/mmc/mmc.txt 2015-03-02 03:25:33.000000000 +0100 +@@ -5,6 +5,8 @@ + Interpreted by the OF core: + - reg: Registers location and length. + - interrupts: Interrupts used by the MMC controller. ++- clocks: Clocks needed for the host controller, if any. ++- clock-names: Goes with clocks above. + + Card detection: + If no property below is supplied, host native card detect is used. +@@ -43,6 +45,15 @@ + - dsr: Value the card's (optional) Driver Stage Register (DSR) should be + programmed with. Valid range: [0 .. 0xffff]. + ++Card power and reset control: ++The following properties can be specified for cases where the MMC ++peripheral needs additional reset, regulator and clock lines. It is for ++example common for WiFi/BT adapters to have these separate from the main ++MMC bus: ++ - card-reset-gpios: Specify GPIOs for card reset (reset active low) ++ - card-external-vcc-supply: Regulator to drive (independent) card VCC ++ - clock with name "card_ext_clock": External clock provided to the card ++ + *NOTE* on CD and WP polarity. To use common for all SD/MMC host controllers line + polarity properties, we have to fix the meaning of the "normal" and "inverted" + line levels. We choose to follow the SDHCI standard, which specifies both those +diff -Nur linux-3.18.8.orig/drivers/mmc/core/core.c linux-3.18.8/drivers/mmc/core/core.c +--- linux-3.18.8.orig/drivers/mmc/core/core.c 2015-02-27 02:49:36.000000000 +0100 ++++ linux-3.18.8/drivers/mmc/core/core.c 2015-03-02 03:25:33.000000000 +0100 +@@ -13,11 +13,13 @@ + #include <linux/module.h> + #include <linux/init.h> + #include <linux/interrupt.h> ++#include <linux/clk.h> + #include <linux/completion.h> + #include <linux/device.h> + #include <linux/delay.h> + #include <linux/pagemap.h> + #include <linux/err.h> ++#include <linux/gpio/consumer.h> + #include <linux/leds.h> + #include <linux/scatterlist.h> + #include <linux/log2.h> +@@ -1507,6 +1509,43 @@ + mmc_host_clk_release(host); + } + ++static void mmc_card_power_up(struct mmc_host *host) ++{ ++ int i; ++ struct gpio_desc **gds = host->card_reset_gpios; ++ ++ for (i = 0; i < ARRAY_SIZE(host->card_reset_gpios); i++) { ++ if (gds[i]) { ++ dev_dbg(host->parent, "Asserting reset line %d", i); ++ gpiod_set_value(gds[i], 1); ++ } ++ } ++ ++ if (host->card_regulator) { ++ dev_dbg(host->parent, "Enabling external regulator"); ++ if (regulator_enable(host->card_regulator)) ++ dev_err(host->parent, "Failed to enable external regulator"); ++ } ++ ++ if (host->card_clk) { ++ dev_dbg(host->parent, "Enabling external clock"); ++ clk_prepare_enable(host->card_clk); ++ } ++ ++ /* 2ms delay to let clocks and power settle */ ++ mmc_delay(20); ++ ++ for (i = 0; i < ARRAY_SIZE(host->card_reset_gpios); i++) { ++ if (gds[i]) { ++ dev_dbg(host->parent, "Deasserting reset line %d", i); ++ gpiod_set_value(gds[i], 0); ++ } ++ } ++ ++ /* 2ms delay to after reset release */ ++ mmc_delay(20); ++} ++ + /* + * Apply power to the MMC stack. This is a two-stage process. + * First, we enable power to the card without the clock running. +@@ -1523,6 +1562,9 @@ + if (host->ios.power_mode == MMC_POWER_ON) + return; + ++ /* Power up the card/module first, if needed */ ++ mmc_card_power_up(host); ++ + mmc_host_clk_hold(host); + + host->ios.vdd = fls(ocr) - 1; +diff -Nur linux-3.18.8.orig/drivers/mmc/core/host.c linux-3.18.8/drivers/mmc/core/host.c +--- linux-3.18.8.orig/drivers/mmc/core/host.c 2015-02-27 02:49:36.000000000 +0100 ++++ linux-3.18.8/drivers/mmc/core/host.c 2015-03-02 03:26:23.000000000 +0100 +@@ -12,14 +12,18 @@ + * MMC host class device management + */ + ++#include <linux/kernel.h> ++#include <linux/clk.h> + #include <linux/device.h> + #include <linux/err.h> ++#include <linux/gpio/consumer.h> + #include <linux/idr.h> + #include <linux/of.h> + #include <linux/of_gpio.h> + #include <linux/pagemap.h> + #include <linux/export.h> + #include <linux/leds.h> ++#include <linux/regulator/consumer.h> + #include <linux/slab.h> + #include <linux/suspend.h> + +@@ -466,6 +470,66 @@ + + EXPORT_SYMBOL(mmc_of_parse); + ++static int mmc_of_parse_child(struct mmc_host *host) ++{ ++ struct device_node *np; ++ struct clk *clk; ++ int i; ++ ++ if (!host->parent || !host->parent->of_node) ++ return 0; ++ ++ np = host->parent->of_node; ++ ++ host->card_regulator = regulator_get(host->parent, "card-external-vcc"); ++ if (IS_ERR(host->card_regulator)) { ++ if (PTR_ERR(host->card_regulator) == -EPROBE_DEFER) ++ return PTR_ERR(host->card_regulator); ++ host->card_regulator = NULL; ++ } ++ ++ /* Parse card power/reset/clock control */ ++ if (of_find_property(np, "card-reset-gpios", NULL)) { ++ struct gpio_desc *gpd; ++ int level = 0; ++ ++ /* ++ * If the regulator is enabled, then we can hold the ++ * card in reset with an active high resets. Otherwise, ++ * hold the resets low. ++ */ ++ if (host->card_regulator && regulator_is_enabled(host->card_regulator)) ++ level = 1; ++ ++ for (i = 0; i < ARRAY_SIZE(host->card_reset_gpios); i++) { ++ gpd = devm_gpiod_get_index(host->parent, "card-reset", i); ++ if (IS_ERR(gpd)) { ++ if (PTR_ERR(gpd) == -EPROBE_DEFER) ++ return PTR_ERR(gpd); ++ break; ++ } ++ gpiod_direction_output(gpd, gpiod_is_active_low(gpd) | level); ++ host->card_reset_gpios[i] = gpd; ++ } ++ ++ gpd = devm_gpiod_get_index(host->parent, "card-reset", ARRAY_SIZE(host->card_reset_gpios)); ++ if (!IS_ERR(gpd)) { ++ dev_warn(host->parent, "More reset gpios than we can handle"); ++ gpiod_put(gpd); ++ } ++ } ++ ++ clk = of_clk_get_by_name(np, "card_ext_clock"); ++ if (IS_ERR(clk)) { ++ if (PTR_ERR(clk) == -EPROBE_DEFER) ++ return PTR_ERR(clk); ++ clk = NULL; ++ } ++ host->card_clk = clk; ++ ++ return 0; ++} ++ + /** + * mmc_alloc_host - initialise the per-host structure. + * @extra: sizeof private data structure +@@ -545,6 +609,10 @@ + { + int err; + ++ err = mmc_of_parse_child(host); ++ if (err) ++ return err; ++ + WARN_ON((host->caps & MMC_CAP_SDIO_IRQ) && + !host->ops->enable_sdio_irq); + +diff -Nur linux-3.18.8.orig/drivers/mmc/host/dw_mmc.c linux-3.18.8/drivers/mmc/host/dw_mmc.c +--- linux-3.18.8.orig/drivers/mmc/host/dw_mmc.c 2015-02-27 02:49:36.000000000 +0100 ++++ linux-3.18.8/drivers/mmc/host/dw_mmc.c 2015-03-02 03:25:56.000000000 +0100 +@@ -2211,6 +2211,8 @@ + if (!mmc) + return -ENOMEM; + ++ mmc_of_parse(mmc); ++ + slot = mmc_priv(mmc); + slot->id = id; + slot->mmc = mmc; +diff -Nur linux-3.18.8.orig/drivers/mmc/host/dw_mmc.c.orig linux-3.18.8/drivers/mmc/host/dw_mmc.c.orig +--- linux-3.18.8.orig/drivers/mmc/host/dw_mmc.c.orig 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.18.8/drivers/mmc/host/dw_mmc.c.orig 2015-02-27 02:49:36.000000000 +0100 +@@ -0,0 +1,2855 @@ ++/* ++ * Synopsys DesignWare Multimedia Card Interface driver ++ * (Based on NXP driver for lpc 31xx) ++ * ++ * Copyright (C) 2009 NXP Semiconductors ++ * Copyright (C) 2009, 2010 Imagination Technologies Ltd. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ */ ++ ++#include <linux/blkdev.h> ++#include <linux/clk.h> ++#include <linux/debugfs.h> ++#include <linux/device.h> ++#include <linux/dma-mapping.h> ++#include <linux/err.h> ++#include <linux/init.h> ++#include <linux/interrupt.h> ++#include <linux/ioport.h> ++#include <linux/module.h> ++#include <linux/platform_device.h> ++#include <linux/seq_file.h> ++#include <linux/slab.h> ++#include <linux/stat.h> ++#include <linux/delay.h> ++#include <linux/irq.h> ++#include <linux/mmc/host.h> ++#include <linux/mmc/mmc.h> ++#include <linux/mmc/sd.h> ++#include <linux/mmc/sdio.h> ++#include <linux/mmc/dw_mmc.h> ++#include <linux/bitops.h> ++#include <linux/regulator/consumer.h> ++#include <linux/workqueue.h> ++#include <linux/of.h> ++#include <linux/of_gpio.h> ++#include <linux/mmc/slot-gpio.h> ++ ++#include "dw_mmc.h" ++ ++/* Common flag combinations */ ++#define DW_MCI_DATA_ERROR_FLAGS (SDMMC_INT_DRTO | SDMMC_INT_DCRC | \ ++ SDMMC_INT_HTO | SDMMC_INT_SBE | \ ++ SDMMC_INT_EBE) ++#define DW_MCI_CMD_ERROR_FLAGS (SDMMC_INT_RTO | SDMMC_INT_RCRC | \ ++ SDMMC_INT_RESP_ERR) ++#define DW_MCI_ERROR_FLAGS (DW_MCI_DATA_ERROR_FLAGS | \ ++ DW_MCI_CMD_ERROR_FLAGS | SDMMC_INT_HLE) ++#define DW_MCI_SEND_STATUS 1 ++#define DW_MCI_RECV_STATUS 2 ++#define DW_MCI_DMA_THRESHOLD 16 ++ ++#define DW_MCI_FREQ_MAX 200000000 /* unit: HZ */ ++#define DW_MCI_FREQ_MIN 400000 /* unit: HZ */ ++ ++#ifdef CONFIG_MMC_DW_IDMAC ++#define IDMAC_INT_CLR (SDMMC_IDMAC_INT_AI | SDMMC_IDMAC_INT_NI | \ ++ SDMMC_IDMAC_INT_CES | SDMMC_IDMAC_INT_DU | \ ++ SDMMC_IDMAC_INT_FBE | SDMMC_IDMAC_INT_RI | \ ++ SDMMC_IDMAC_INT_TI) ++ ++struct idmac_desc { ++ u32 des0; /* Control Descriptor */ ++#define IDMAC_DES0_DIC BIT(1) ++#define IDMAC_DES0_LD BIT(2) ++#define IDMAC_DES0_FD BIT(3) ++#define IDMAC_DES0_CH BIT(4) ++#define IDMAC_DES0_ER BIT(5) ++#define IDMAC_DES0_CES BIT(30) ++#define IDMAC_DES0_OWN BIT(31) ++ ++ u32 des1; /* Buffer sizes */ ++#define IDMAC_SET_BUFFER1_SIZE(d, s) \ ++ ((d)->des1 = ((d)->des1 & 0x03ffe000) | ((s) & 0x1fff)) ++ ++ u32 des2; /* buffer 1 physical address */ ++ ++ u32 des3; /* buffer 2 physical address */ ++}; ++#endif /* CONFIG_MMC_DW_IDMAC */ ++ ++static bool dw_mci_reset(struct dw_mci *host); ++ ++#if defined(CONFIG_DEBUG_FS) ++static int dw_mci_req_show(struct seq_file *s, void *v) ++{ ++ struct dw_mci_slot *slot = s->private; ++ struct mmc_request *mrq; ++ struct mmc_command *cmd; ++ struct mmc_command *stop; ++ struct mmc_data *data; ++ ++ /* Make sure we get a consistent snapshot */ ++ spin_lock_bh(&slot->host->lock); ++ mrq = slot->mrq; ++ ++ if (mrq) { ++ cmd = mrq->cmd; ++ data = mrq->data; ++ stop = mrq->stop; ++ ++ if (cmd) ++ seq_printf(s, ++ "CMD%u(0x%x) flg %x rsp %x %x %x %x err %d\n", ++ cmd->opcode, cmd->arg, cmd->flags, ++ cmd->resp[0], cmd->resp[1], cmd->resp[2], ++ cmd->resp[2], cmd->error); ++ if (data) ++ seq_printf(s, "DATA %u / %u * %u flg %x err %d\n", ++ data->bytes_xfered, data->blocks, ++ data->blksz, data->flags, data->error); ++ if (stop) ++ seq_printf(s, ++ "CMD%u(0x%x) flg %x rsp %x %x %x %x err %d\n", ++ stop->opcode, stop->arg, stop->flags, ++ stop->resp[0], stop->resp[1], stop->resp[2], ++ stop->resp[2], stop->error); ++ } ++ ++ spin_unlock_bh(&slot->host->lock); ++ ++ return 0; ++} ++ ++static int dw_mci_req_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, dw_mci_req_show, inode->i_private); ++} ++ ++static const struct file_operations dw_mci_req_fops = { ++ .owner = THIS_MODULE, ++ .open = dw_mci_req_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = single_release, ++}; ++ ++static int dw_mci_regs_show(struct seq_file *s, void *v) ++{ ++ seq_printf(s, "STATUS:\t0x%08x\n", SDMMC_STATUS); ++ seq_printf(s, "RINTSTS:\t0x%08x\n", SDMMC_RINTSTS); ++ seq_printf(s, "CMD:\t0x%08x\n", SDMMC_CMD); ++ seq_printf(s, "CTRL:\t0x%08x\n", SDMMC_CTRL); ++ seq_printf(s, "INTMASK:\t0x%08x\n", SDMMC_INTMASK); ++ seq_printf(s, "CLKENA:\t0x%08x\n", SDMMC_CLKENA); ++ ++ return 0; ++} ++ ++static int dw_mci_regs_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, dw_mci_regs_show, inode->i_private); ++} ++ ++static const struct file_operations dw_mci_regs_fops = { ++ .owner = THIS_MODULE, ++ .open = dw_mci_regs_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = single_release, ++}; ++ ++static void dw_mci_init_debugfs(struct dw_mci_slot *slot) ++{ ++ struct mmc_host *mmc = slot->mmc; ++ struct dw_mci *host = slot->host; ++ struct dentry *root; ++ struct dentry *node; ++ ++ root = mmc->debugfs_root; ++ if (!root) ++ return; ++ ++ node = debugfs_create_file("regs", S_IRUSR, root, host, ++ &dw_mci_regs_fops); ++ if (!node) ++ goto err; ++ ++ node = debugfs_create_file("req", S_IRUSR, root, slot, ++ &dw_mci_req_fops); ++ if (!node) ++ goto err; ++ ++ node = debugfs_create_u32("state", S_IRUSR, root, (u32 *)&host->state); ++ if (!node) ++ goto err; ++ ++ node = debugfs_create_x32("pending_events", S_IRUSR, root, ++ (u32 *)&host->pending_events); ++ if (!node) ++ goto err; ++ ++ node = debugfs_create_x32("completed_events", S_IRUSR, root, ++ (u32 *)&host->completed_events); ++ if (!node) ++ goto err; ++ ++ return; ++ ++err: ++ dev_err(&mmc->class_dev, "failed to initialize debugfs for slot\n"); ++} ++#endif /* defined(CONFIG_DEBUG_FS) */ ++ ++static void mci_send_cmd(struct dw_mci_slot *slot, u32 cmd, u32 arg); ++ ++static u32 dw_mci_prepare_command(struct mmc_host *mmc, struct mmc_command *cmd) ++{ ++ struct mmc_data *data; ++ struct dw_mci_slot *slot = mmc_priv(mmc); ++ struct dw_mci *host = slot->host; ++ const struct dw_mci_drv_data *drv_data = slot->host->drv_data; ++ u32 cmdr; ++ cmd->error = -EINPROGRESS; ++ ++ cmdr = cmd->opcode; ++ ++ if (cmd->opcode == MMC_STOP_TRANSMISSION || ++ cmd->opcode == MMC_GO_IDLE_STATE || ++ cmd->opcode == MMC_GO_INACTIVE_STATE || ++ (cmd->opcode == SD_IO_RW_DIRECT && ++ ((cmd->arg >> 9) & 0x1FFFF) == SDIO_CCCR_ABORT)) ++ cmdr |= SDMMC_CMD_STOP; ++ else if (cmd->opcode != MMC_SEND_STATUS && cmd->data) ++ cmdr |= SDMMC_CMD_PRV_DAT_WAIT; ++ ++ if (cmd->opcode == SD_SWITCH_VOLTAGE) { ++ u32 clk_en_a; ++ ++ /* Special bit makes CMD11 not die */ ++ cmdr |= SDMMC_CMD_VOLT_SWITCH; ++ ++ /* Change state to continue to handle CMD11 weirdness */ ++ WARN_ON(slot->host->state != STATE_SENDING_CMD); ++ slot->host->state = STATE_SENDING_CMD11; ++ ++ /* ++ * We need to disable low power mode (automatic clock stop) ++ * while doing voltage switch so we don't confuse the card, ++ * since stopping the clock is a specific part of the UHS ++ * voltage change dance. ++ * ++ * Note that low power mode (SDMMC_CLKEN_LOW_PWR) will be ++ * unconditionally turned back on in dw_mci_setup_bus() if it's ++ * ever called with a non-zero clock. That shouldn't happen ++ * until the voltage change is all done. ++ */ ++ clk_en_a = mci_readl(host, CLKENA); ++ clk_en_a &= ~(SDMMC_CLKEN_LOW_PWR << slot->id); ++ mci_writel(host, CLKENA, clk_en_a); ++ mci_send_cmd(slot, SDMMC_CMD_UPD_CLK | ++ SDMMC_CMD_PRV_DAT_WAIT, 0); ++ } ++ ++ if (cmd->flags & MMC_RSP_PRESENT) { ++ /* We expect a response, so set this bit */ ++ cmdr |= SDMMC_CMD_RESP_EXP; ++ if (cmd->flags & MMC_RSP_136) ++ cmdr |= SDMMC_CMD_RESP_LONG; ++ } ++ ++ if (cmd->flags & MMC_RSP_CRC) ++ cmdr |= SDMMC_CMD_RESP_CRC; ++ ++ data = cmd->data; ++ if (data) { ++ cmdr |= SDMMC_CMD_DAT_EXP; ++ if (data->flags & MMC_DATA_STREAM) ++ cmdr |= SDMMC_CMD_STRM_MODE; ++ if (data->flags & MMC_DATA_WRITE) ++ cmdr |= SDMMC_CMD_DAT_WR; ++ } ++ ++ if (drv_data && drv_data->prepare_command) ++ drv_data->prepare_command(slot->host, &cmdr); ++ ++ return cmdr; ++} ++ ++static u32 dw_mci_prep_stop_abort(struct dw_mci *host, struct mmc_command *cmd) ++{ ++ struct mmc_command *stop; ++ u32 cmdr; ++ ++ if (!cmd->data) ++ return 0; ++ ++ stop = &host->stop_abort; ++ cmdr = cmd->opcode; ++ memset(stop, 0, sizeof(struct mmc_command)); ++ ++ if (cmdr == MMC_READ_SINGLE_BLOCK || ++ cmdr == MMC_READ_MULTIPLE_BLOCK || ++ cmdr == MMC_WRITE_BLOCK || ++ cmdr == MMC_WRITE_MULTIPLE_BLOCK) { ++ stop->opcode = MMC_STOP_TRANSMISSION; ++ stop->arg = 0; ++ stop->flags = MMC_RSP_R1B | MMC_CMD_AC; ++ } else if (cmdr == SD_IO_RW_EXTENDED) { ++ stop->opcode = SD_IO_RW_DIRECT; ++ stop->arg |= (1 << 31) | (0 << 28) | (SDIO_CCCR_ABORT << 9) | ++ ((cmd->arg >> 28) & 0x7); ++ stop->flags = MMC_RSP_SPI_R5 | MMC_RSP_R5 | MMC_CMD_AC; ++ } else { ++ return 0; ++ } ++ ++ cmdr = stop->opcode | SDMMC_CMD_STOP | ++ SDMMC_CMD_RESP_CRC | SDMMC_CMD_RESP_EXP; ++ ++ return cmdr; ++} ++ ++static void dw_mci_start_command(struct dw_mci *host, ++ struct mmc_command *cmd, u32 cmd_flags) ++{ ++ host->cmd = cmd; ++ dev_vdbg(host->dev, ++ "start command: ARGR=0x%08x CMDR=0x%08x\n", ++ cmd->arg, cmd_flags); ++ ++ mci_writel(host, CMDARG, cmd->arg); ++ wmb(); ++ ++ mci_writel(host, CMD, cmd_flags | SDMMC_CMD_START); ++} ++ ++static inline void send_stop_abort(struct dw_mci *host, struct mmc_data *data) ++{ ++ struct mmc_command *stop = data->stop ? data->stop : &host->stop_abort; ++ dw_mci_start_command(host, stop, host->stop_cmdr); ++} ++ ++/* DMA interface functions */ ++static void dw_mci_stop_dma(struct dw_mci *host) ++{ ++ if (host->using_dma) { ++ host->dma_ops->stop(host); ++ host->dma_ops->cleanup(host); ++ } ++ ++ /* Data transfer was stopped by the interrupt handler */ ++ set_bit(EVENT_XFER_COMPLETE, &host->pending_events); ++} ++ ++static int dw_mci_get_dma_dir(struct mmc_data *data) ++{ ++ if (data->flags & MMC_DATA_WRITE) ++ return DMA_TO_DEVICE; ++ else ++ return DMA_FROM_DEVICE; ++} ++ ++#ifdef CONFIG_MMC_DW_IDMAC ++static void dw_mci_dma_cleanup(struct dw_mci *host) ++{ ++ struct mmc_data *data = host->data; ++ ++ if (data) ++ if (!data->host_cookie) ++ dma_unmap_sg(host->dev, ++ data->sg, ++ data->sg_len, ++ dw_mci_get_dma_dir(data)); ++} ++ ++static void dw_mci_idmac_reset(struct dw_mci *host) ++{ ++ u32 bmod = mci_readl(host, BMOD); ++ /* Software reset of DMA */ ++ bmod |= SDMMC_IDMAC_SWRESET; ++ mci_writel(host, BMOD, bmod); ++} ++ ++static void dw_mci_idmac_stop_dma(struct dw_mci *host) ++{ ++ u32 temp; ++ ++ /* Disable and reset the IDMAC interface */ ++ temp = mci_readl(host, CTRL); ++ temp &= ~SDMMC_CTRL_USE_IDMAC; ++ temp |= SDMMC_CTRL_DMA_RESET; ++ mci_writel(host, CTRL, temp); ++ ++ /* Stop the IDMAC running */ ++ temp = mci_readl(host, BMOD); ++ temp &= ~(SDMMC_IDMAC_ENABLE | SDMMC_IDMAC_FB); ++ temp |= SDMMC_IDMAC_SWRESET; ++ mci_writel(host, BMOD, temp); ++} ++ ++static void dw_mci_idmac_complete_dma(struct dw_mci *host) ++{ ++ struct mmc_data *data = host->data; ++ ++ dev_vdbg(host->dev, "DMA complete\n"); ++ ++ host->dma_ops->cleanup(host); ++ ++ /* ++ * If the card was removed, data will be NULL. No point in trying to ++ * send the stop command or waiting for NBUSY in this case. ++ */ ++ if (data) { ++ set_bit(EVENT_XFER_COMPLETE, &host->pending_events); ++ tasklet_schedule(&host->tasklet); ++ } ++} ++ ++static void dw_mci_translate_sglist(struct dw_mci *host, struct mmc_data *data, ++ unsigned int sg_len) ++{ ++ int i; ++ struct idmac_desc *desc = host->sg_cpu; ++ ++ for (i = 0; i < sg_len; i++, desc++) { ++ unsigned int length = sg_dma_len(&data->sg[i]); ++ u32 mem_addr = sg_dma_address(&data->sg[i]); ++ ++ /* Set the OWN bit and disable interrupts for this descriptor */ ++ desc->des0 = IDMAC_DES0_OWN | IDMAC_DES0_DIC | IDMAC_DES0_CH; ++ ++ /* Buffer length */ ++ IDMAC_SET_BUFFER1_SIZE(desc, length); ++ ++ /* Physical address to DMA to/from */ ++ desc->des2 = mem_addr; ++ } ++ ++ /* Set first descriptor */ ++ desc = host->sg_cpu; ++ desc->des0 |= IDMAC_DES0_FD; ++ ++ /* Set last descriptor */ ++ desc = host->sg_cpu + (i - 1) * sizeof(struct idmac_desc); ++ desc->des0 &= ~(IDMAC_DES0_CH | IDMAC_DES0_DIC); ++ desc->des0 |= IDMAC_DES0_LD; ++ ++ wmb(); ++} ++ ++static void dw_mci_idmac_start_dma(struct dw_mci *host, unsigned int sg_len) ++{ ++ u32 temp; ++ ++ dw_mci_translate_sglist(host, host->data, sg_len); ++ ++ /* Select IDMAC interface */ ++ temp = mci_readl(host, CTRL); ++ temp |= SDMMC_CTRL_USE_IDMAC; ++ mci_writel(host, CTRL, temp); ++ ++ wmb(); ++ ++ /* Enable the IDMAC */ ++ temp = mci_readl(host, BMOD); ++ temp |= SDMMC_IDMAC_ENABLE | SDMMC_IDMAC_FB; ++ mci_writel(host, BMOD, temp); ++ ++ /* Start it running */ ++ mci_writel(host, PLDMND, 1); ++} ++ ++static int dw_mci_idmac_init(struct dw_mci *host) ++{ ++ struct idmac_desc *p; ++ int i; ++ ++ /* Number of descriptors in the ring buffer */ ++ host->ring_size = PAGE_SIZE / sizeof(struct idmac_desc); ++ ++ /* Forward link the descriptor list */ ++ for (i = 0, p = host->sg_cpu; i < host->ring_size - 1; i++, p++) ++ p->des3 = host->sg_dma + (sizeof(struct idmac_desc) * (i + 1)); ++ ++ /* Set the last descriptor as the end-of-ring descriptor */ ++ p->des3 = host->sg_dma; ++ p->des0 = IDMAC_DES0_ER; ++ ++ dw_mci_idmac_reset(host); ++ ++ /* Mask out interrupts - get Tx & Rx complete only */ ++ mci_writel(host, IDSTS, IDMAC_INT_CLR); ++ mci_writel(host, IDINTEN, SDMMC_IDMAC_INT_NI | SDMMC_IDMAC_INT_RI | ++ SDMMC_IDMAC_INT_TI); ++ ++ /* Set the descriptor base address */ ++ mci_writel(host, DBADDR, host->sg_dma); ++ return 0; ++} ++ ++static const struct dw_mci_dma_ops dw_mci_idmac_ops = { ++ .init = dw_mci_idmac_init, ++ .start = dw_mci_idmac_start_dma, ++ .stop = dw_mci_idmac_stop_dma, ++ .complete = dw_mci_idmac_complete_dma, ++ .cleanup = dw_mci_dma_cleanup, ++}; ++#endif /* CONFIG_MMC_DW_IDMAC */ ++ ++static int dw_mci_pre_dma_transfer(struct dw_mci *host, ++ struct mmc_data *data, ++ bool next) ++{ ++ struct scatterlist *sg; ++ unsigned int i, sg_len; ++ ++ if (!next && data->host_cookie) ++ return data->host_cookie; ++ ++ /* ++ * We don't do DMA on "complex" transfers, i.e. with ++ * non-word-aligned buffers or lengths. Also, we don't bother ++ * with all the DMA setup overhead for short transfers. ++ */ ++ if (data->blocks * data->blksz < DW_MCI_DMA_THRESHOLD) ++ return -EINVAL; ++ ++ if (data->blksz & 3) ++ return -EINVAL; ++ ++ for_each_sg(data->sg, sg, data->sg_len, i) { ++ if (sg->offset & 3 || sg->length & 3) ++ return -EINVAL; ++ } ++ ++ sg_len = dma_map_sg(host->dev, ++ data->sg, ++ data->sg_len, ++ dw_mci_get_dma_dir(data)); ++ if (sg_len == 0) ++ return -EINVAL; ++ ++ if (next) ++ data->host_cookie = sg_len; ++ ++ return sg_len; ++} ++ ++static void dw_mci_pre_req(struct mmc_host *mmc, ++ struct mmc_request *mrq, ++ bool is_first_req) ++{ ++ struct dw_mci_slot *slot = mmc_priv(mmc); ++ struct mmc_data *data = mrq->data; ++ ++ if (!slot->host->use_dma || !data) ++ return; ++ ++ if (data->host_cookie) { ++ data->host_cookie = 0; ++ return; ++ } ++ ++ if (dw_mci_pre_dma_transfer(slot->host, mrq->data, 1) < 0) ++ data->host_cookie = 0; ++} ++ ++static void dw_mci_post_req(struct mmc_host *mmc, ++ struct mmc_request *mrq, ++ int err) ++{ ++ struct dw_mci_slot *slot = mmc_priv(mmc); ++ struct mmc_data *data = mrq->data; ++ ++ if (!slot->host->use_dma || !data) ++ return; ++ ++ if (data->host_cookie) ++ dma_unmap_sg(slot->host->dev, ++ data->sg, ++ data->sg_len, ++ dw_mci_get_dma_dir(data)); ++ data->host_cookie = 0; ++} ++ ++static void dw_mci_adjust_fifoth(struct dw_mci *host, struct mmc_data *data) ++{ ++#ifdef CONFIG_MMC_DW_IDMAC ++ unsigned int blksz = data->blksz; ++ const u32 mszs[] = {1, 4, 8, 16, 32, 64, 128, 256}; ++ u32 fifo_width = 1 << host->data_shift; ++ u32 blksz_depth = blksz / fifo_width, fifoth_val; ++ u32 msize = 0, rx_wmark = 1, tx_wmark, tx_wmark_invers; ++ int idx = (sizeof(mszs) / sizeof(mszs[0])) - 1; ++ ++ tx_wmark = (host->fifo_depth) / 2; ++ tx_wmark_invers = host->fifo_depth - tx_wmark; ++ ++ /* ++ * MSIZE is '1', ++ * if blksz is not a multiple of the FIFO width ++ */ ++ if (blksz % fifo_width) { ++ msize = 0; ++ rx_wmark = 1; ++ goto done; ++ } ++ ++ do { ++ if (!((blksz_depth % mszs[idx]) || ++ (tx_wmark_invers % mszs[idx]))) { ++ msize = idx; ++ rx_wmark = mszs[idx] - 1; ++ break; ++ } ++ } while (--idx > 0); ++ /* ++ * If idx is '0', it won't be tried ++ * Thus, initial values are uesed ++ */ ++done: ++ fifoth_val = SDMMC_SET_FIFOTH(msize, rx_wmark, tx_wmark); ++ mci_writel(host, FIFOTH, fifoth_val); ++#endif ++} ++ ++static void dw_mci_ctrl_rd_thld(struct dw_mci *host, struct mmc_data *data) ++{ ++ unsigned int blksz = data->blksz; ++ u32 blksz_depth, fifo_depth; ++ u16 thld_size; ++ ++ WARN_ON(!(data->flags & MMC_DATA_READ)); ++ ++ /* ++ * CDTHRCTL doesn't exist prior to 240A (in fact that register offset is ++ * in the FIFO region, so we really shouldn't access it). ++ */ ++ if (host->verid < DW_MMC_240A) ++ return; ++ ++ if (host->timing != MMC_TIMING_MMC_HS200 && ++ host->timing != MMC_TIMING_UHS_SDR104) ++ goto disable; ++ ++ blksz_depth = blksz / (1 << host->data_shift); ++ fifo_depth = host->fifo_depth; ++ ++ if (blksz_depth > fifo_depth) ++ goto disable; ++ ++ /* ++ * If (blksz_depth) >= (fifo_depth >> 1), should be 'thld_size <= blksz' ++ * If (blksz_depth) < (fifo_depth >> 1), should be thld_size = blksz ++ * Currently just choose blksz. ++ */ ++ thld_size = blksz; ++ mci_writel(host, CDTHRCTL, SDMMC_SET_RD_THLD(thld_size, 1)); ++ return; ++ ++disable: ++ mci_writel(host, CDTHRCTL, SDMMC_SET_RD_THLD(0, 0)); ++} ++ ++static int dw_mci_submit_data_dma(struct dw_mci *host, struct mmc_data *data) ++{ ++ int sg_len; ++ u32 temp; ++ ++ host->using_dma = 0; ++ ++ /* If we don't have a channel, we can't do DMA */ ++ if (!host->use_dma) ++ return -ENODEV; ++ ++ sg_len = dw_mci_pre_dma_transfer(host, data, 0); ++ if (sg_len < 0) { ++ host->dma_ops->stop(host); ++ return sg_len; ++ } ++ ++ host->using_dma = 1; ++ ++ dev_vdbg(host->dev, ++ "sd sg_cpu: %#lx sg_dma: %#lx sg_len: %d\n", ++ (unsigned long)host->sg_cpu, (unsigned long)host->sg_dma, ++ sg_len); ++ ++ /* ++ * Decide the MSIZE and RX/TX Watermark. ++ * If current block size is same with previous size, ++ * no need to update fifoth. ++ */ ++ if (host->prev_blksz != data->blksz) ++ dw_mci_adjust_fifoth(host, data); ++ ++ /* Enable the DMA interface */ ++ temp = mci_readl(host, CTRL); ++ temp |= SDMMC_CTRL_DMA_ENABLE; ++ mci_writel(host, CTRL, temp); ++ ++ /* Disable RX/TX IRQs, let DMA handle it */ ++ temp = mci_readl(host, INTMASK); ++ temp &= ~(SDMMC_INT_RXDR | SDMMC_INT_TXDR); ++ mci_writel(host, INTMASK, temp); ++ ++ host->dma_ops->start(host, sg_len); ++ ++ return 0; ++} ++ ++static void dw_mci_submit_data(struct dw_mci *host, struct mmc_data *data) ++{ ++ u32 temp; ++ ++ data->error = -EINPROGRESS; ++ ++ WARN_ON(host->data); ++ host->sg = NULL; ++ host->data = data; ++ ++ if (data->flags & MMC_DATA_READ) { ++ host->dir_status = DW_MCI_RECV_STATUS; ++ dw_mci_ctrl_rd_thld(host, data); ++ } else { ++ host->dir_status = DW_MCI_SEND_STATUS; ++ } ++ ++ if (dw_mci_submit_data_dma(host, data)) { ++ int flags = SG_MITER_ATOMIC; ++ if (host->data->flags & MMC_DATA_READ) ++ flags |= SG_MITER_TO_SG; ++ else ++ flags |= SG_MITER_FROM_SG; ++ ++ sg_miter_start(&host->sg_miter, data->sg, data->sg_len, flags); ++ host->sg = data->sg; ++ host->part_buf_start = 0; ++ host->part_buf_count = 0; ++ ++ mci_writel(host, RINTSTS, SDMMC_INT_TXDR | SDMMC_INT_RXDR); ++ temp = mci_readl(host, INTMASK); ++ temp |= SDMMC_INT_TXDR | SDMMC_INT_RXDR; ++ mci_writel(host, INTMASK, temp); ++ ++ temp = mci_readl(host, CTRL); ++ temp &= ~SDMMC_CTRL_DMA_ENABLE; ++ mci_writel(host, CTRL, temp); ++ ++ /* ++ * Use the initial fifoth_val for PIO mode. ++ * If next issued data may be transfered by DMA mode, ++ * prev_blksz should be invalidated. ++ */ ++ mci_writel(host, FIFOTH, host->fifoth_val); ++ host->prev_blksz = 0; ++ } else { ++ /* ++ * Keep the current block size. ++ * It will be used to decide whether to update ++ * fifoth register next time. ++ */ ++ host->prev_blksz = data->blksz; ++ } ++} ++ ++static void mci_send_cmd(struct dw_mci_slot *slot, u32 cmd, u32 arg) ++{ ++ struct dw_mci *host = slot->host; ++ unsigned long timeout = jiffies + msecs_to_jiffies(500); ++ unsigned int cmd_status = 0; ++ ++ mci_writel(host, CMDARG, arg); ++ wmb(); ++ mci_writel(host, CMD, SDMMC_CMD_START | cmd); ++ ++ while (time_before(jiffies, timeout)) { ++ cmd_status = mci_readl(host, CMD); ++ if (!(cmd_status & SDMMC_CMD_START)) ++ return; ++ } ++ dev_err(&slot->mmc->class_dev, ++ "Timeout sending command (cmd %#x arg %#x status %#x)\n", ++ cmd, arg, cmd_status); ++} ++ ++static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit) ++{ ++ struct dw_mci *host = slot->host; ++ unsigned int clock = slot->clock; ++ u32 div; ++ u32 clk_en_a; ++ u32 sdmmc_cmd_bits = SDMMC_CMD_UPD_CLK | SDMMC_CMD_PRV_DAT_WAIT; ++ ++ /* We must continue to set bit 28 in CMD until the change is complete */ ++ if (host->state == STATE_WAITING_CMD11_DONE) ++ sdmmc_cmd_bits |= SDMMC_CMD_VOLT_SWITCH; ++ ++ if (!clock) { ++ mci_writel(host, CLKENA, 0); ++ mci_send_cmd(slot, sdmmc_cmd_bits, 0); ++ } else if (clock != host->current_speed || force_clkinit) { ++ div = host->bus_hz / clock; ++ if (host->bus_hz % clock && host->bus_hz > clock) ++ /* ++ * move the + 1 after the divide to prevent ++ * over-clocking the card. ++ */ ++ div += 1; ++ ++ div = (host->bus_hz != clock) ? DIV_ROUND_UP(div, 2) : 0; ++ ++ if ((clock << div) != slot->__clk_old || force_clkinit) ++ dev_info(&slot->mmc->class_dev, ++ "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n", ++ slot->id, host->bus_hz, clock, ++ div ? ((host->bus_hz / div) >> 1) : ++ host->bus_hz, div); ++ ++ /* disable clock */ ++ mci_writel(host, CLKENA, 0); ++ mci_writel(host, CLKSRC, 0); ++ ++ /* inform CIU */ ++ mci_send_cmd(slot, sdmmc_cmd_bits, 0); ++ ++ /* set clock to desired speed */ ++ mci_writel(host, CLKDIV, div); ++ ++ /* inform CIU */ ++ mci_send_cmd(slot, sdmmc_cmd_bits, 0); ++ ++ /* enable clock; only low power if no SDIO */ ++ clk_en_a = SDMMC_CLKEN_ENABLE << slot->id; ++ if (!(mci_readl(host, INTMASK) & SDMMC_INT_SDIO(slot->id))) ++ clk_en_a |= SDMMC_CLKEN_LOW_PWR << slot->id; ++ mci_writel(host, CLKENA, clk_en_a); ++ ++ /* inform CIU */ ++ mci_send_cmd(slot, sdmmc_cmd_bits, 0); ++ ++ /* keep the clock with reflecting clock dividor */ ++ slot->__clk_old = clock << div; ++ } ++ ++ host->current_speed = clock; ++ ++ /* Set the current slot bus width */ ++ mci_writel(host, CTYPE, (slot->ctype << slot->id)); ++} ++ ++static void __dw_mci_start_request(struct dw_mci *host, ++ struct dw_mci_slot *slot, ++ struct mmc_command *cmd) ++{ ++ struct mmc_request *mrq; ++ struct mmc_data *data; ++ u32 cmdflags; ++ ++ mrq = slot->mrq; ++ ++ host->cur_slot = slot; ++ host->mrq = mrq; ++ ++ host->pending_events = 0; ++ host->completed_events = 0; ++ host->cmd_status = 0; ++ host->data_status = 0; ++ host->dir_status = 0; ++ ++ data = cmd->data; ++ if (data) { ++ mci_writel(host, TMOUT, 0xFFFFFFFF); ++ mci_writel(host, BYTCNT, data->blksz*data->blocks); ++ mci_writel(host, BLKSIZ, data->blksz); ++ } ++ ++ cmdflags = dw_mci_prepare_command(slot->mmc, cmd); ++ ++ /* this is the first command, send the initialization clock */ ++ if (test_and_clear_bit(DW_MMC_CARD_NEED_INIT, &slot->flags)) ++ cmdflags |= SDMMC_CMD_INIT; ++ ++ if (data) { ++ dw_mci_submit_data(host, data); ++ wmb(); ++ } ++ ++ dw_mci_start_command(host, cmd, cmdflags); ++ ++ if (mrq->stop) ++ host->stop_cmdr = dw_mci_prepare_command(slot->mmc, mrq->stop); ++ else ++ host->stop_cmdr = dw_mci_prep_stop_abort(host, cmd); ++} ++ ++static void dw_mci_start_request(struct dw_mci *host, ++ struct dw_mci_slot *slot) ++{ ++ struct mmc_request *mrq = slot->mrq; ++ struct mmc_command *cmd; ++ ++ cmd = mrq->sbc ? mrq->sbc : mrq->cmd; ++ __dw_mci_start_request(host, slot, cmd); ++} ++ ++/* must be called with host->lock held */ ++static void dw_mci_queue_request(struct dw_mci *host, struct dw_mci_slot *slot, ++ struct mmc_request *mrq) ++{ ++ dev_vdbg(&slot->mmc->class_dev, "queue request: state=%d\n", ++ host->state); ++ ++ slot->mrq = mrq; ++ ++ if (host->state == STATE_WAITING_CMD11_DONE) { ++ dev_warn(&slot->mmc->class_dev, ++ "Voltage change didn't complete\n"); ++ /* ++ * this case isn't expected to happen, so we can ++ * either crash here or just try to continue on ++ * in the closest possible state ++ */ ++ host->state = STATE_IDLE; ++ } ++ ++ if (host->state == STATE_IDLE) { ++ host->state = STATE_SENDING_CMD; ++ dw_mci_start_request(host, slot); ++ } else { ++ list_add_tail(&slot->queue_node, &host->queue); ++ } ++} ++ ++static void dw_mci_request(struct mmc_host *mmc, struct mmc_request *mrq) ++{ ++ struct dw_mci_slot *slot = mmc_priv(mmc); ++ struct dw_mci *host = slot->host; ++ ++ WARN_ON(slot->mrq); ++ ++ /* ++ * The check for card presence and queueing of the request must be ++ * atomic, otherwise the card could be removed in between and the ++ * request wouldn't fail until another card was inserted. ++ */ ++ spin_lock_bh(&host->lock); ++ ++ if (!test_bit(DW_MMC_CARD_PRESENT, &slot->flags)) { ++ spin_unlock_bh(&host->lock); ++ mrq->cmd->error = -ENOMEDIUM; ++ mmc_request_done(mmc, mrq); ++ return; ++ } ++ ++ dw_mci_queue_request(host, slot, mrq); ++ ++ spin_unlock_bh(&host->lock); ++} ++ ++static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) ++{ ++ struct dw_mci_slot *slot = mmc_priv(mmc); ++ const struct dw_mci_drv_data *drv_data = slot->host->drv_data; ++ u32 regs; ++ int ret; ++ ++ switch (ios->bus_width) { ++ case MMC_BUS_WIDTH_4: ++ slot->ctype = SDMMC_CTYPE_4BIT; ++ break; ++ case MMC_BUS_WIDTH_8: ++ slot->ctype = SDMMC_CTYPE_8BIT; ++ break; ++ default: ++ /* set default 1 bit mode */ ++ slot->ctype = SDMMC_CTYPE_1BIT; ++ } ++ ++ regs = mci_readl(slot->host, UHS_REG); ++ ++ /* DDR mode set */ ++ if (ios->timing == MMC_TIMING_MMC_DDR52) ++ regs |= ((0x1 << slot->id) << 16); ++ else ++ regs &= ~((0x1 << slot->id) << 16); ++ ++ mci_writel(slot->host, UHS_REG, regs); ++ slot->host->timing = ios->timing; ++ ++ /* ++ * Use mirror of ios->clock to prevent race with mmc ++ * core ios update when finding the minimum. ++ */ ++ slot->clock = ios->clock; ++ ++ if (drv_data && drv_data->set_ios) ++ drv_data->set_ios(slot->host, ios); ++ ++ /* Slot specific timing and width adjustment */ ++ dw_mci_setup_bus(slot, false); ++ ++ if (slot->host->state == STATE_WAITING_CMD11_DONE && ios->clock != 0) ++ slot->host->state = STATE_IDLE; ++ ++ switch (ios->power_mode) { ++ case MMC_POWER_UP: ++ if (!IS_ERR(mmc->supply.vmmc)) { ++ ret = mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ++ ios->vdd); ++ if (ret) { ++ dev_err(slot->host->dev, ++ "failed to enable vmmc regulator\n"); ++ /*return, if failed turn on vmmc*/ ++ return; ++ } ++ } ++ if (!IS_ERR(mmc->supply.vqmmc) && !slot->host->vqmmc_enabled) { ++ ret = regulator_enable(mmc->supply.vqmmc); ++ if (ret < 0) ++ dev_err(slot->host->dev, ++ "failed to enable vqmmc regulator\n"); ++ else ++ slot->host->vqmmc_enabled = true; ++ } ++ set_bit(DW_MMC_CARD_NEED_INIT, &slot->flags); ++ regs = mci_readl(slot->host, PWREN); ++ regs |= (1 << slot->id); ++ mci_writel(slot->host, PWREN, regs); ++ break; ++ case MMC_POWER_OFF: ++ if (!IS_ERR(mmc->supply.vmmc)) ++ mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); ++ ++ if (!IS_ERR(mmc->supply.vqmmc) && slot->host->vqmmc_enabled) { ++ regulator_disable(mmc->supply.vqmmc); ++ slot->host->vqmmc_enabled = false; ++ } ++ ++ regs = mci_readl(slot->host, PWREN); ++ regs &= ~(1 << slot->id); ++ mci_writel(slot->host, PWREN, regs); ++ break; ++ default: ++ break; ++ } ++} ++ ++static int dw_mci_card_busy(struct mmc_host *mmc) ++{ ++ struct dw_mci_slot *slot = mmc_priv(mmc); ++ u32 status; ++ ++ /* ++ * Check the busy bit which is low when DAT[3:0] ++ * (the data lines) are 0000 ++ */ ++ status = mci_readl(slot->host, STATUS); ++ ++ return !!(status & SDMMC_STATUS_BUSY); ++} ++ ++static int dw_mci_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios) ++{ ++ struct dw_mci_slot *slot = mmc_priv(mmc); ++ struct dw_mci *host = slot->host; ++ u32 uhs; ++ u32 v18 = SDMMC_UHS_18V << slot->id; ++ int min_uv, max_uv; ++ int ret; ++ ++ /* ++ * Program the voltage. Note that some instances of dw_mmc may use ++ * the UHS_REG for this. For other instances (like exynos) the UHS_REG ++ * does no harm but you need to set the regulator directly. Try both. ++ */ ++ uhs = mci_readl(host, UHS_REG); ++ if (ios->signal_voltage == MMC_SIGNAL_VOLTAGE_330) { ++ min_uv = 2700000; ++ max_uv = 3600000; ++ uhs &= ~v18; ++ } else { ++ min_uv = 1700000; ++ max_uv = 1950000; ++ uhs |= v18; ++ } ++ if (!IS_ERR(mmc->supply.vqmmc)) { ++ ret = regulator_set_voltage(mmc->supply.vqmmc, min_uv, max_uv); ++ ++ if (ret) { ++ dev_err(&mmc->class_dev, ++ "Regulator set error %d: %d - %d\n", ++ ret, min_uv, max_uv); ++ return ret; ++ } ++ } ++ mci_writel(host, UHS_REG, uhs); ++ ++ return 0; ++} ++ ++static int dw_mci_get_ro(struct mmc_host *mmc) ++{ ++ int read_only; ++ struct dw_mci_slot *slot = mmc_priv(mmc); ++ int gpio_ro = mmc_gpio_get_ro(mmc); ++ ++ /* Use platform get_ro function, else try on board write protect */ ++ if ((slot->quirks & DW_MCI_SLOT_QUIRK_NO_WRITE_PROTECT) || ++ (slot->host->quirks & DW_MCI_QUIRK_NO_WRITE_PROTECT)) ++ read_only = 0; ++ else if (!IS_ERR_VALUE(gpio_ro)) ++ read_only = gpio_ro; ++ else ++ read_only = ++ mci_readl(slot->host, WRTPRT) & (1 << slot->id) ? 1 : 0; ++ ++ dev_dbg(&mmc->class_dev, "card is %s\n", ++ read_only ? "read-only" : "read-write"); ++ ++ return read_only; ++} ++ ++static int dw_mci_get_cd(struct mmc_host *mmc) ++{ ++ int present; ++ struct dw_mci_slot *slot = mmc_priv(mmc); ++ struct dw_mci_board *brd = slot->host->pdata; ++ struct dw_mci *host = slot->host; ++ int gpio_cd = mmc_gpio_get_cd(mmc); ++ ++ /* Use platform get_cd function, else try onboard card detect */ ++ if (brd->quirks & DW_MCI_QUIRK_BROKEN_CARD_DETECTION) ++ present = 1; ++ else if (!IS_ERR_VALUE(gpio_cd)) ++ present = gpio_cd; ++ else ++ present = (mci_readl(slot->host, CDETECT) & (1 << slot->id)) ++ == 0 ? 1 : 0; ++ ++ spin_lock_bh(&host->lock); ++ if (present) { ++ set_bit(DW_MMC_CARD_PRESENT, &slot->flags); ++ dev_dbg(&mmc->class_dev, "card is present\n"); ++ } else { ++ clear_bit(DW_MMC_CARD_PRESENT, &slot->flags); ++ dev_dbg(&mmc->class_dev, "card is not present\n"); ++ } ++ spin_unlock_bh(&host->lock); ++ ++ return present; ++} ++ ++/* ++ * Disable lower power mode. ++ * ++ * Low power mode will stop the card clock when idle. According to the ++ * description of the CLKENA register we should disable low power mode ++ * for SDIO cards if we need SDIO interrupts to work. ++ * ++ * This function is fast if low power mode is already disabled. ++ */ ++static void dw_mci_disable_low_power(struct dw_mci_slot *slot) ++{ ++ struct dw_mci *host = slot->host; ++ u32 clk_en_a; ++ const u32 clken_low_pwr = SDMMC_CLKEN_LOW_PWR << slot->id; ++ ++ clk_en_a = mci_readl(host, CLKENA); ++ ++ if (clk_en_a & clken_low_pwr) { ++ mci_writel(host, CLKENA, clk_en_a & ~clken_low_pwr); ++ mci_send_cmd(slot, SDMMC_CMD_UPD_CLK | ++ SDMMC_CMD_PRV_DAT_WAIT, 0); ++ } ++} ++ ++static void dw_mci_enable_sdio_irq(struct mmc_host *mmc, int enb) ++{ ++ struct dw_mci_slot *slot = mmc_priv(mmc); ++ struct dw_mci *host = slot->host; ++ u32 int_mask; ++ ++ /* Enable/disable Slot Specific SDIO interrupt */ ++ int_mask = mci_readl(host, INTMASK); ++ if (enb) { ++ /* ++ * Turn off low power mode if it was enabled. This is a bit of ++ * a heavy operation and we disable / enable IRQs a lot, so ++ * we'll leave low power mode disabled and it will get ++ * re-enabled again in dw_mci_setup_bus(). ++ */ ++ dw_mci_disable_low_power(slot); ++ ++ mci_writel(host, INTMASK, ++ (int_mask | SDMMC_INT_SDIO(slot->id))); ++ } else { ++ mci_writel(host, INTMASK, ++ (int_mask & ~SDMMC_INT_SDIO(slot->id))); ++ } ++} ++ ++static int dw_mci_execute_tuning(struct mmc_host *mmc, u32 opcode) ++{ ++ struct dw_mci_slot *slot = mmc_priv(mmc); ++ struct dw_mci *host = slot->host; ++ const struct dw_mci_drv_data *drv_data = host->drv_data; ++ struct dw_mci_tuning_data tuning_data; ++ int err = -ENOSYS; ++ ++ if (opcode == MMC_SEND_TUNING_BLOCK_HS200) { ++ if (mmc->ios.bus_width == MMC_BUS_WIDTH_8) { ++ tuning_data.blk_pattern = tuning_blk_pattern_8bit; ++ tuning_data.blksz = sizeof(tuning_blk_pattern_8bit); ++ } else if (mmc->ios.bus_width == MMC_BUS_WIDTH_4) { ++ tuning_data.blk_pattern = tuning_blk_pattern_4bit; ++ tuning_data.blksz = sizeof(tuning_blk_pattern_4bit); ++ } else { ++ return -EINVAL; ++ } ++ } else if (opcode == MMC_SEND_TUNING_BLOCK) { ++ tuning_data.blk_pattern = tuning_blk_pattern_4bit; ++ tuning_data.blksz = sizeof(tuning_blk_pattern_4bit); ++ } else { ++ dev_err(host->dev, ++ "Undefined command(%d) for tuning\n", opcode); ++ return -EINVAL; ++ } ++ ++ if (drv_data && drv_data->execute_tuning) ++ err = drv_data->execute_tuning(slot, opcode, &tuning_data); ++ return err; ++} ++ ++static const struct mmc_host_ops dw_mci_ops = { ++ .request = dw_mci_request, ++ .pre_req = dw_mci_pre_req, ++ .post_req = dw_mci_post_req, ++ .set_ios = dw_mci_set_ios, ++ .get_ro = dw_mci_get_ro, ++ .get_cd = dw_mci_get_cd, ++ .enable_sdio_irq = dw_mci_enable_sdio_irq, ++ .execute_tuning = dw_mci_execute_tuning, ++ .card_busy = dw_mci_card_busy, ++ .start_signal_voltage_switch = dw_mci_switch_voltage, ++ ++}; ++ ++static void dw_mci_request_end(struct dw_mci *host, struct mmc_request *mrq) ++ __releases(&host->lock) ++ __acquires(&host->lock) ++{ ++ struct dw_mci_slot *slot; ++ struct mmc_host *prev_mmc = host->cur_slot->mmc; ++ ++ WARN_ON(host->cmd || host->data); ++ ++ host->cur_slot->mrq = NULL; ++ host->mrq = NULL; ++ if (!list_empty(&host->queue)) { ++ slot = list_entry(host->queue.next, ++ struct dw_mci_slot, queue_node); ++ list_del(&slot->queue_node); ++ dev_vdbg(host->dev, "list not empty: %s is next\n", ++ mmc_hostname(slot->mmc)); ++ host->state = STATE_SENDING_CMD; ++ dw_mci_start_request(host, slot); ++ } else { ++ dev_vdbg(host->dev, "list empty\n"); ++ ++ if (host->state == STATE_SENDING_CMD11) ++ host->state = STATE_WAITING_CMD11_DONE; ++ else ++ host->state = STATE_IDLE; ++ } ++ ++ spin_unlock(&host->lock); ++ mmc_request_done(prev_mmc, mrq); ++ spin_lock(&host->lock); ++} ++ ++static int dw_mci_command_complete(struct dw_mci *host, struct mmc_command *cmd) ++{ ++ u32 status = host->cmd_status; ++ ++ host->cmd_status = 0; ++ ++ /* Read the response from the card (up to 16 bytes) */ ++ if (cmd->flags & MMC_RSP_PRESENT) { ++ if (cmd->flags & MMC_RSP_136) { ++ cmd->resp[3] = mci_readl(host, RESP0); ++ cmd->resp[2] = mci_readl(host, RESP1); ++ cmd->resp[1] = mci_readl(host, RESP2); ++ cmd->resp[0] = mci_readl(host, RESP3); ++ } else { ++ cmd->resp[0] = mci_readl(host, RESP0); ++ cmd->resp[1] = 0; ++ cmd->resp[2] = 0; ++ cmd->resp[3] = 0; ++ } ++ } ++ ++ if (status & SDMMC_INT_RTO) ++ cmd->error = -ETIMEDOUT; ++ else if ((cmd->flags & MMC_RSP_CRC) && (status & SDMMC_INT_RCRC)) ++ cmd->error = -EILSEQ; ++ else if (status & SDMMC_INT_RESP_ERR) ++ cmd->error = -EIO; ++ else ++ cmd->error = 0; ++ ++ if (cmd->error) { ++ /* newer ip versions need a delay between retries */ ++ if (host->quirks & DW_MCI_QUIRK_RETRY_DELAY) ++ mdelay(20); ++ } ++ ++ return cmd->error; ++} ++ ++static int dw_mci_data_complete(struct dw_mci *host, struct mmc_data *data) ++{ ++ u32 status = host->data_status; ++ ++ if (status & DW_MCI_DATA_ERROR_FLAGS) { ++ if (status & SDMMC_INT_DRTO) { ++ data->error = -ETIMEDOUT; ++ } else if (status & SDMMC_INT_DCRC) { ++ data->error = -EILSEQ; ++ } else if (status & SDMMC_INT_EBE) { ++ if (host->dir_status == ++ DW_MCI_SEND_STATUS) { ++ /* ++ * No data CRC status was returned. ++ * The number of bytes transferred ++ * will be exaggerated in PIO mode. ++ */ ++ data->bytes_xfered = 0; ++ data->error = -ETIMEDOUT; ++ } else if (host->dir_status == ++ DW_MCI_RECV_STATUS) { ++ data->error = -EIO; ++ } ++ } else { ++ /* SDMMC_INT_SBE is included */ ++ data->error = -EIO; ++ } ++ ++ dev_dbg(host->dev, "data error, status 0x%08x\n", status); ++ ++ /* ++ * After an error, there may be data lingering ++ * in the FIFO ++ */ ++ dw_mci_reset(host); ++ } else { ++ data->bytes_xfered = data->blocks * data->blksz; ++ data->error = 0; ++ } ++ ++ return data->error; ++} ++ ++static void dw_mci_tasklet_func(unsigned long priv) ++{ ++ struct dw_mci *host = (struct dw_mci *)priv; ++ struct mmc_data *data; ++ struct mmc_command *cmd; ++ struct mmc_request *mrq; ++ enum dw_mci_state state; ++ enum dw_mci_state prev_state; ++ unsigned int err; ++ ++ spin_lock(&host->lock); ++ ++ state = host->state; ++ data = host->data; ++ mrq = host->mrq; ++ ++ do { ++ prev_state = state; ++ ++ switch (state) { ++ case STATE_IDLE: ++ case STATE_WAITING_CMD11_DONE: ++ break; ++ ++ case STATE_SENDING_CMD11: ++ case STATE_SENDING_CMD: ++ if (!test_and_clear_bit(EVENT_CMD_COMPLETE, ++ &host->pending_events)) ++ break; ++ ++ cmd = host->cmd; ++ host->cmd = NULL; ++ set_bit(EVENT_CMD_COMPLETE, &host->completed_events); ++ err = dw_mci_command_complete(host, cmd); ++ if (cmd == mrq->sbc && !err) { ++ prev_state = state = STATE_SENDING_CMD; ++ __dw_mci_start_request(host, host->cur_slot, ++ mrq->cmd); ++ goto unlock; ++ } ++ ++ if (cmd->data && err) { ++ dw_mci_stop_dma(host); ++ send_stop_abort(host, data); ++ state = STATE_SENDING_STOP; ++ break; ++ } ++ ++ if (!cmd->data || err) { ++ dw_mci_request_end(host, mrq); ++ goto unlock; ++ } ++ ++ prev_state = state = STATE_SENDING_DATA; ++ /* fall through */ ++ ++ case STATE_SENDING_DATA: ++ /* ++ * We could get a data error and never a transfer ++ * complete so we'd better check for it here. ++ * ++ * Note that we don't really care if we also got a ++ * transfer complete; stopping the DMA and sending an ++ * abort won't hurt. ++ */ ++ if (test_and_clear_bit(EVENT_DATA_ERROR, ++ &host->pending_events)) { ++ dw_mci_stop_dma(host); ++ send_stop_abort(host, data); ++ state = STATE_DATA_ERROR; ++ break; ++ } ++ ++ if (!test_and_clear_bit(EVENT_XFER_COMPLETE, ++ &host->pending_events)) ++ break; ++ ++ set_bit(EVENT_XFER_COMPLETE, &host->completed_events); ++ ++ /* ++ * Handle an EVENT_DATA_ERROR that might have shown up ++ * before the transfer completed. This might not have ++ * been caught by the check above because the interrupt ++ * could have gone off between the previous check and ++ * the check for transfer complete. ++ * ++ * Technically this ought not be needed assuming we ++ * get a DATA_COMPLETE eventually (we'll notice the ++ * error and end the request), but it shouldn't hurt. ++ * ++ * This has the advantage of sending the stop command. ++ */ ++ if (test_and_clear_bit(EVENT_DATA_ERROR, ++ &host->pending_events)) { ++ dw_mci_stop_dma(host); ++ send_stop_abort(host, data); ++ state = STATE_DATA_ERROR; ++ break; ++ } ++ prev_state = state = STATE_DATA_BUSY; ++ ++ /* fall through */ ++ ++ case STATE_DATA_BUSY: ++ if (!test_and_clear_bit(EVENT_DATA_COMPLETE, ++ &host->pending_events)) ++ break; ++ ++ host->data = NULL; ++ set_bit(EVENT_DATA_COMPLETE, &host->completed_events); ++ err = dw_mci_data_complete(host, data); ++ ++ if (!err) { ++ if (!data->stop || mrq->sbc) { ++ if (mrq->sbc && data->stop) ++ data->stop->error = 0; ++ dw_mci_request_end(host, mrq); ++ goto unlock; ++ } ++ ++ /* stop command for open-ended transfer*/ ++ if (data->stop) ++ send_stop_abort(host, data); ++ } else { ++ /* ++ * If we don't have a command complete now we'll ++ * never get one since we just reset everything; ++ * better end the request. ++ * ++ * If we do have a command complete we'll fall ++ * through to the SENDING_STOP command and ++ * everything will be peachy keen. ++ */ ++ if (!test_bit(EVENT_CMD_COMPLETE, ++ &host->pending_events)) { ++ host->cmd = NULL; ++ dw_mci_request_end(host, mrq); ++ goto unlock; ++ } ++ } ++ ++ /* ++ * If err has non-zero, ++ * stop-abort command has been already issued. ++ */ ++ prev_state = state = STATE_SENDING_STOP; ++ ++ /* fall through */ ++ ++ case STATE_SENDING_STOP: ++ if (!test_and_clear_bit(EVENT_CMD_COMPLETE, ++ &host->pending_events)) ++ break; ++ ++ /* CMD error in data command */ ++ if (mrq->cmd->error && mrq->data) ++ dw_mci_reset(host); ++ ++ host->cmd = NULL; ++ host->data = NULL; ++ ++ if (mrq->stop) ++ dw_mci_command_complete(host, mrq->stop); ++ else ++ host->cmd_status = 0; ++ ++ dw_mci_request_end(host, mrq); ++ goto unlock; ++ ++ case STATE_DATA_ERROR: ++ if (!test_and_clear_bit(EVENT_XFER_COMPLETE, ++ &host->pending_events)) ++ break; ++ ++ state = STATE_DATA_BUSY; ++ break; ++ } ++ } while (state != prev_state); ++ ++ host->state = state; ++unlock: ++ spin_unlock(&host->lock); ++ ++} ++ ++/* push final bytes to part_buf, only use during push */ ++static void dw_mci_set_part_bytes(struct dw_mci *host, void *buf, int cnt) ++{ ++ memcpy((void *)&host->part_buf, buf, cnt); ++ host->part_buf_count = cnt; ++} ++ ++/* append bytes to part_buf, only use during push */ ++static int dw_mci_push_part_bytes(struct dw_mci *host, void *buf, int cnt) ++{ ++ cnt = min(cnt, (1 << host->data_shift) - host->part_buf_count); ++ memcpy((void *)&host->part_buf + host->part_buf_count, buf, cnt); ++ host->part_buf_count += cnt; ++ return cnt; ++} ++ ++/* pull first bytes from part_buf, only use during pull */ ++static int dw_mci_pull_part_bytes(struct dw_mci *host, void *buf, int cnt) ++{ ++ cnt = min(cnt, (int)host->part_buf_count); ++ if (cnt) { ++ memcpy(buf, (void *)&host->part_buf + host->part_buf_start, ++ cnt); ++ host->part_buf_count -= cnt; ++ host->part_buf_start += cnt; ++ } ++ return cnt; ++} ++ ++/* pull final bytes from the part_buf, assuming it's just been filled */ ++static void dw_mci_pull_final_bytes(struct dw_mci *host, void *buf, int cnt) ++{ ++ memcpy(buf, &host->part_buf, cnt); ++ host->part_buf_start = cnt; ++ host->part_buf_count = (1 << host->data_shift) - cnt; ++} ++ ++static void dw_mci_push_data16(struct dw_mci *host, void *buf, int cnt) ++{ ++ struct mmc_data *data = host->data; ++ int init_cnt = cnt; ++ ++ /* try and push anything in the part_buf */ ++ if (unlikely(host->part_buf_count)) { ++ int len = dw_mci_push_part_bytes(host, buf, cnt); ++ buf += len; ++ cnt -= len; ++ if (host->part_buf_count == 2) { ++ mci_writew(host, DATA(host->data_offset), ++ host->part_buf16); ++ host->part_buf_count = 0; ++ } ++ } ++#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ++ if (unlikely((unsigned long)buf & 0x1)) { ++ while (cnt >= 2) { ++ u16 aligned_buf[64]; ++ int len = min(cnt & -2, (int)sizeof(aligned_buf)); ++ int items = len >> 1; ++ int i; ++ /* memcpy from input buffer into aligned buffer */ ++ memcpy(aligned_buf, buf, len); ++ buf += len; ++ cnt -= len; ++ /* push data from aligned buffer into fifo */ ++ for (i = 0; i < items; ++i) ++ mci_writew(host, DATA(host->data_offset), ++ aligned_buf[i]); ++ } ++ } else ++#endif ++ { ++ u16 *pdata = buf; ++ for (; cnt >= 2; cnt -= 2) ++ mci_writew(host, DATA(host->data_offset), *pdata++); ++ buf = pdata; ++ } ++ /* put anything remaining in the part_buf */ ++ if (cnt) { ++ dw_mci_set_part_bytes(host, buf, cnt); ++ /* Push data if we have reached the expected data length */ ++ if ((data->bytes_xfered + init_cnt) == ++ (data->blksz * data->blocks)) ++ mci_writew(host, DATA(host->data_offset), ++ host->part_buf16); ++ } ++} ++ ++static void dw_mci_pull_data16(struct dw_mci *host, void *buf, int cnt) ++{ ++#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ++ if (unlikely((unsigned long)buf & 0x1)) { ++ while (cnt >= 2) { ++ /* pull data from fifo into aligned buffer */ ++ u16 aligned_buf[64]; ++ int len = min(cnt & -2, (int)sizeof(aligned_buf)); ++ int items = len >> 1; ++ int i; ++ for (i = 0; i < items; ++i) ++ aligned_buf[i] = mci_readw(host, ++ DATA(host->data_offset)); ++ /* memcpy from aligned buffer into output buffer */ ++ memcpy(buf, aligned_buf, len); ++ buf += len; ++ cnt -= len; ++ } ++ } else ++#endif ++ { ++ u16 *pdata = buf; ++ for (; cnt >= 2; cnt -= 2) ++ *pdata++ = mci_readw(host, DATA(host->data_offset)); ++ buf = pdata; ++ } ++ if (cnt) { ++ host->part_buf16 = mci_readw(host, DATA(host->data_offset)); ++ dw_mci_pull_final_bytes(host, buf, cnt); ++ } ++} ++ ++static void dw_mci_push_data32(struct dw_mci *host, void *buf, int cnt) ++{ ++ struct mmc_data *data = host->data; ++ int init_cnt = cnt; ++ ++ /* try and push anything in the part_buf */ ++ if (unlikely(host->part_buf_count)) { ++ int len = dw_mci_push_part_bytes(host, buf, cnt); ++ buf += len; ++ cnt -= len; ++ if (host->part_buf_count == 4) { ++ mci_writel(host, DATA(host->data_offset), ++ host->part_buf32); ++ host->part_buf_count = 0; ++ } ++ } ++#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ++ if (unlikely((unsigned long)buf & 0x3)) { ++ while (cnt >= 4) { ++ u32 aligned_buf[32]; ++ int len = min(cnt & -4, (int)sizeof(aligned_buf)); ++ int items = len >> 2; ++ int i; ++ /* memcpy from input buffer into aligned buffer */ ++ memcpy(aligned_buf, buf, len); ++ buf += len; ++ cnt -= len; ++ /* push data from aligned buffer into fifo */ ++ for (i = 0; i < items; ++i) ++ mci_writel(host, DATA(host->data_offset), ++ aligned_buf[i]); ++ } ++ } else ++#endif ++ { ++ u32 *pdata = buf; ++ for (; cnt >= 4; cnt -= 4) ++ mci_writel(host, DATA(host->data_offset), *pdata++); ++ buf = pdata; ++ } ++ /* put anything remaining in the part_buf */ ++ if (cnt) { ++ dw_mci_set_part_bytes(host, buf, cnt); ++ /* Push data if we have reached the expected data length */ ++ if ((data->bytes_xfered + init_cnt) == ++ (data->blksz * data->blocks)) ++ mci_writel(host, DATA(host->data_offset), ++ host->part_buf32); ++ } ++} ++ ++static void dw_mci_pull_data32(struct dw_mci *host, void *buf, int cnt) ++{ ++#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ++ if (unlikely((unsigned long)buf & 0x3)) { ++ while (cnt >= 4) { ++ /* pull data from fifo into aligned buffer */ ++ u32 aligned_buf[32]; ++ int len = min(cnt & -4, (int)sizeof(aligned_buf)); ++ int items = len >> 2; ++ int i; ++ for (i = 0; i < items; ++i) ++ aligned_buf[i] = mci_readl(host, ++ DATA(host->data_offset)); ++ /* memcpy from aligned buffer into output buffer */ ++ memcpy(buf, aligned_buf, len); ++ buf += len; ++ cnt -= len; ++ } ++ } else ++#endif ++ { ++ u32 *pdata = buf; ++ for (; cnt >= 4; cnt -= 4) ++ *pdata++ = mci_readl(host, DATA(host->data_offset)); ++ buf = pdata; ++ } ++ if (cnt) { ++ host->part_buf32 = mci_readl(host, DATA(host->data_offset)); ++ dw_mci_pull_final_bytes(host, buf, cnt); ++ } ++} ++ ++static void dw_mci_push_data64(struct dw_mci *host, void *buf, int cnt) ++{ ++ struct mmc_data *data = host->data; ++ int init_cnt = cnt; ++ ++ /* try and push anything in the part_buf */ ++ if (unlikely(host->part_buf_count)) { ++ int len = dw_mci_push_part_bytes(host, buf, cnt); ++ buf += len; ++ cnt -= len; ++ ++ if (host->part_buf_count == 8) { ++ mci_writeq(host, DATA(host->data_offset), ++ host->part_buf); ++ host->part_buf_count = 0; ++ } ++ } ++#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ++ if (unlikely((unsigned long)buf & 0x7)) { ++ while (cnt >= 8) { ++ u64 aligned_buf[16]; ++ int len = min(cnt & -8, (int)sizeof(aligned_buf)); ++ int items = len >> 3; ++ int i; ++ /* memcpy from input buffer into aligned buffer */ ++ memcpy(aligned_buf, buf, len); ++ buf += len; ++ cnt -= len; ++ /* push data from aligned buffer into fifo */ ++ for (i = 0; i < items; ++i) ++ mci_writeq(host, DATA(host->data_offset), ++ aligned_buf[i]); ++ } ++ } else ++#endif ++ { ++ u64 *pdata = buf; ++ for (; cnt >= 8; cnt -= 8) ++ mci_writeq(host, DATA(host->data_offset), *pdata++); ++ buf = pdata; ++ } ++ /* put anything remaining in the part_buf */ ++ if (cnt) { ++ dw_mci_set_part_bytes(host, buf, cnt); ++ /* Push data if we have reached the expected data length */ ++ if ((data->bytes_xfered + init_cnt) == ++ (data->blksz * data->blocks)) ++ mci_writeq(host, DATA(host->data_offset), ++ host->part_buf); ++ } ++} ++ ++static void dw_mci_pull_data64(struct dw_mci *host, void *buf, int cnt) ++{ ++#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ++ if (unlikely((unsigned long)buf & 0x7)) { ++ while (cnt >= 8) { ++ /* pull data from fifo into aligned buffer */ ++ u64 aligned_buf[16]; ++ int len = min(cnt & -8, (int)sizeof(aligned_buf)); ++ int items = len >> 3; ++ int i; ++ for (i = 0; i < items; ++i) ++ aligned_buf[i] = mci_readq(host, ++ DATA(host->data_offset)); ++ /* memcpy from aligned buffer into output buffer */ ++ memcpy(buf, aligned_buf, len); ++ buf += len; ++ cnt -= len; ++ } ++ } else ++#endif ++ { ++ u64 *pdata = buf; ++ for (; cnt >= 8; cnt -= 8) ++ *pdata++ = mci_readq(host, DATA(host->data_offset)); ++ buf = pdata; ++ } ++ if (cnt) { ++ host->part_buf = mci_readq(host, DATA(host->data_offset)); ++ dw_mci_pull_final_bytes(host, buf, cnt); ++ } ++} ++ ++static void dw_mci_pull_data(struct dw_mci *host, void *buf, int cnt) ++{ ++ int len; ++ ++ /* get remaining partial bytes */ ++ len = dw_mci_pull_part_bytes(host, buf, cnt); ++ if (unlikely(len == cnt)) ++ return; ++ buf += len; ++ cnt -= len; ++ ++ /* get the rest of the data */ ++ host->pull_data(host, buf, cnt); ++} ++ ++static void dw_mci_read_data_pio(struct dw_mci *host, bool dto) ++{ ++ struct sg_mapping_iter *sg_miter = &host->sg_miter; ++ void *buf; ++ unsigned int offset; ++ struct mmc_data *data = host->data; ++ int shift = host->data_shift; ++ u32 status; ++ unsigned int len; ++ unsigned int remain, fcnt; ++ ++ do { ++ if (!sg_miter_next(sg_miter)) ++ goto done; ++ ++ host->sg = sg_miter->piter.sg; ++ buf = sg_miter->addr; ++ remain = sg_miter->length; ++ offset = 0; ++ ++ do { ++ fcnt = (SDMMC_GET_FCNT(mci_readl(host, STATUS)) ++ << shift) + host->part_buf_count; ++ len = min(remain, fcnt); ++ if (!len) ++ break; ++ dw_mci_pull_data(host, (void *)(buf + offset), len); ++ data->bytes_xfered += len; ++ offset += len; ++ remain -= len; ++ } while (remain); ++ ++ sg_miter->consumed = offset; ++ status = mci_readl(host, MINTSTS); ++ mci_writel(host, RINTSTS, SDMMC_INT_RXDR); ++ /* if the RXDR is ready read again */ ++ } while ((status & SDMMC_INT_RXDR) || ++ (dto && SDMMC_GET_FCNT(mci_readl(host, STATUS)))); ++ ++ if (!remain) { ++ if (!sg_miter_next(sg_miter)) ++ goto done; ++ sg_miter->consumed = 0; ++ } ++ sg_miter_stop(sg_miter); ++ return; ++ ++done: ++ sg_miter_stop(sg_miter); ++ host->sg = NULL; ++ smp_wmb(); ++ set_bit(EVENT_XFER_COMPLETE, &host->pending_events); ++} ++ ++static void dw_mci_write_data_pio(struct dw_mci *host) ++{ ++ struct sg_mapping_iter *sg_miter = &host->sg_miter; ++ void *buf; ++ unsigned int offset; ++ struct mmc_data *data = host->data; ++ int shift = host->data_shift; ++ u32 status; ++ unsigned int len; ++ unsigned int fifo_depth = host->fifo_depth; ++ unsigned int remain, fcnt; ++ ++ do { ++ if (!sg_miter_next(sg_miter)) ++ goto done; ++ ++ host->sg = sg_miter->piter.sg; ++ buf = sg_miter->addr; ++ remain = sg_miter->length; ++ offset = 0; ++ ++ do { ++ fcnt = ((fifo_depth - ++ SDMMC_GET_FCNT(mci_readl(host, STATUS))) ++ << shift) - host->part_buf_count; ++ len = min(remain, fcnt); ++ if (!len) ++ break; ++ host->push_data(host, (void *)(buf + offset), len); ++ data->bytes_xfered += len; ++ offset += len; ++ remain -= len; ++ } while (remain); ++ ++ sg_miter->consumed = offset; ++ status = mci_readl(host, MINTSTS); ++ mci_writel(host, RINTSTS, SDMMC_INT_TXDR); ++ } while (status & SDMMC_INT_TXDR); /* if TXDR write again */ ++ ++ if (!remain) { ++ if (!sg_miter_next(sg_miter)) ++ goto done; ++ sg_miter->consumed = 0; ++ } ++ sg_miter_stop(sg_miter); ++ return; ++ ++done: ++ sg_miter_stop(sg_miter); ++ host->sg = NULL; ++ smp_wmb(); ++ set_bit(EVENT_XFER_COMPLETE, &host->pending_events); ++} ++ ++static void dw_mci_cmd_interrupt(struct dw_mci *host, u32 status) ++{ ++ if (!host->cmd_status) ++ host->cmd_status = status; ++ ++ smp_wmb(); ++ ++ set_bit(EVENT_CMD_COMPLETE, &host->pending_events); ++ tasklet_schedule(&host->tasklet); ++} ++ ++static irqreturn_t dw_mci_interrupt(int irq, void *dev_id) ++{ ++ struct dw_mci *host = dev_id; ++ u32 pending; ++ int i; ++ ++ pending = mci_readl(host, MINTSTS); /* read-only mask reg */ ++ ++ /* ++ * DTO fix - version 2.10a and below, and only if internal DMA ++ * is configured. ++ */ ++ if (host->quirks & DW_MCI_QUIRK_IDMAC_DTO) { ++ if (!pending && ++ ((mci_readl(host, STATUS) >> 17) & 0x1fff)) ++ pending |= SDMMC_INT_DATA_OVER; ++ } ++ ++ if (pending) { ++ /* Check volt switch first, since it can look like an error */ ++ if ((host->state == STATE_SENDING_CMD11) && ++ (pending & SDMMC_INT_VOLT_SWITCH)) { ++ mci_writel(host, RINTSTS, SDMMC_INT_VOLT_SWITCH); ++ pending &= ~SDMMC_INT_VOLT_SWITCH; ++ dw_mci_cmd_interrupt(host, pending); ++ } ++ ++ if (pending & DW_MCI_CMD_ERROR_FLAGS) { ++ mci_writel(host, RINTSTS, DW_MCI_CMD_ERROR_FLAGS); ++ host->cmd_status = pending; ++ smp_wmb(); ++ set_bit(EVENT_CMD_COMPLETE, &host->pending_events); ++ } ++ ++ if (pending & DW_MCI_DATA_ERROR_FLAGS) { ++ /* if there is an error report DATA_ERROR */ ++ mci_writel(host, RINTSTS, DW_MCI_DATA_ERROR_FLAGS); ++ host->data_status = pending; ++ smp_wmb(); ++ set_bit(EVENT_DATA_ERROR, &host->pending_events); ++ tasklet_schedule(&host->tasklet); ++ } ++ ++ if (pending & SDMMC_INT_DATA_OVER) { ++ mci_writel(host, RINTSTS, SDMMC_INT_DATA_OVER); ++ if (!host->data_status) ++ host->data_status = pending; ++ smp_wmb(); ++ if (host->dir_status == DW_MCI_RECV_STATUS) { ++ if (host->sg != NULL) ++ dw_mci_read_data_pio(host, true); ++ } ++ set_bit(EVENT_DATA_COMPLETE, &host->pending_events); ++ tasklet_schedule(&host->tasklet); ++ } ++ ++ if (pending & SDMMC_INT_RXDR) { ++ mci_writel(host, RINTSTS, SDMMC_INT_RXDR); ++ if (host->dir_status == DW_MCI_RECV_STATUS && host->sg) ++ dw_mci_read_data_pio(host, false); ++ } ++ ++ if (pending & SDMMC_INT_TXDR) { ++ mci_writel(host, RINTSTS, SDMMC_INT_TXDR); ++ if (host->dir_status == DW_MCI_SEND_STATUS && host->sg) ++ dw_mci_write_data_pio(host); ++ } ++ ++ if (pending & SDMMC_INT_CMD_DONE) { ++ mci_writel(host, RINTSTS, SDMMC_INT_CMD_DONE); ++ dw_mci_cmd_interrupt(host, pending); ++ } ++ ++ if (pending & SDMMC_INT_CD) { ++ mci_writel(host, RINTSTS, SDMMC_INT_CD); ++ queue_work(host->card_workqueue, &host->card_work); ++ } ++ ++ /* Handle SDIO Interrupts */ ++ for (i = 0; i < host->num_slots; i++) { ++ struct dw_mci_slot *slot = host->slot[i]; ++ if (pending & SDMMC_INT_SDIO(i)) { ++ mci_writel(host, RINTSTS, SDMMC_INT_SDIO(i)); ++ mmc_signal_sdio_irq(slot->mmc); ++ } ++ } ++ ++ } ++ ++#ifdef CONFIG_MMC_DW_IDMAC ++ /* Handle DMA interrupts */ ++ pending = mci_readl(host, IDSTS); ++ if (pending & (SDMMC_IDMAC_INT_TI | SDMMC_IDMAC_INT_RI)) { ++ mci_writel(host, IDSTS, SDMMC_IDMAC_INT_TI | SDMMC_IDMAC_INT_RI); ++ mci_writel(host, IDSTS, SDMMC_IDMAC_INT_NI); ++ host->dma_ops->complete(host); ++ } ++#endif ++ ++ return IRQ_HANDLED; ++} ++ ++static void dw_mci_work_routine_card(struct work_struct *work) ++{ ++ struct dw_mci *host = container_of(work, struct dw_mci, card_work); ++ int i; ++ ++ for (i = 0; i < host->num_slots; i++) { ++ struct dw_mci_slot *slot = host->slot[i]; ++ struct mmc_host *mmc = slot->mmc; ++ struct mmc_request *mrq; ++ int present; ++ ++ present = dw_mci_get_cd(mmc); ++ while (present != slot->last_detect_state) { ++ dev_dbg(&slot->mmc->class_dev, "card %s\n", ++ present ? "inserted" : "removed"); ++ ++ spin_lock_bh(&host->lock); ++ ++ /* Card change detected */ ++ slot->last_detect_state = present; ++ ++ /* Clean up queue if present */ ++ mrq = slot->mrq; ++ if (mrq) { ++ if (mrq == host->mrq) { ++ host->data = NULL; ++ host->cmd = NULL; ++ ++ switch (host->state) { ++ case STATE_IDLE: ++ case STATE_WAITING_CMD11_DONE: ++ break; ++ case STATE_SENDING_CMD11: ++ case STATE_SENDING_CMD: ++ mrq->cmd->error = -ENOMEDIUM; ++ if (!mrq->data) ++ break; ++ /* fall through */ ++ case STATE_SENDING_DATA: ++ mrq->data->error = -ENOMEDIUM; ++ dw_mci_stop_dma(host); ++ break; ++ case STATE_DATA_BUSY: ++ case STATE_DATA_ERROR: ++ if (mrq->data->error == -EINPROGRESS) ++ mrq->data->error = -ENOMEDIUM; ++ /* fall through */ ++ case STATE_SENDING_STOP: ++ if (mrq->stop) ++ mrq->stop->error = -ENOMEDIUM; ++ break; ++ } ++ ++ dw_mci_request_end(host, mrq); ++ } else { ++ list_del(&slot->queue_node); ++ mrq->cmd->error = -ENOMEDIUM; ++ if (mrq->data) ++ mrq->data->error = -ENOMEDIUM; ++ if (mrq->stop) ++ mrq->stop->error = -ENOMEDIUM; ++ ++ spin_unlock(&host->lock); ++ mmc_request_done(slot->mmc, mrq); ++ spin_lock(&host->lock); ++ } ++ } ++ ++ /* Power down slot */ ++ if (present == 0) ++ dw_mci_reset(host); ++ ++ spin_unlock_bh(&host->lock); ++ ++ present = dw_mci_get_cd(mmc); ++ } ++ ++ mmc_detect_change(slot->mmc, ++ msecs_to_jiffies(host->pdata->detect_delay_ms)); ++ } ++} ++ ++#ifdef CONFIG_OF ++/* given a slot id, find out the device node representing that slot */ ++static struct device_node *dw_mci_of_find_slot_node(struct device *dev, u8 slot) ++{ ++ struct device_node *np; ++ const __be32 *addr; ++ int len; ++ ++ if (!dev || !dev->of_node) ++ return NULL; ++ ++ for_each_child_of_node(dev->of_node, np) { ++ addr = of_get_property(np, "reg", &len); ++ if (!addr || (len < sizeof(int))) ++ continue; ++ if (be32_to_cpup(addr) == slot) ++ return np; ++ } ++ return NULL; ++} ++ ++static struct dw_mci_of_slot_quirks { ++ char *quirk; ++ int id; ++} of_slot_quirks[] = { ++ { ++ .quirk = "disable-wp", ++ .id = DW_MCI_SLOT_QUIRK_NO_WRITE_PROTECT, ++ }, ++}; ++ ++static int dw_mci_of_get_slot_quirks(struct device *dev, u8 slot) ++{ ++ struct device_node *np = dw_mci_of_find_slot_node(dev, slot); ++ int quirks = 0; ++ int idx; ++ ++ /* get quirks */ ++ for (idx = 0; idx < ARRAY_SIZE(of_slot_quirks); idx++) ++ if (of_get_property(np, of_slot_quirks[idx].quirk, NULL)) { ++ dev_warn(dev, "Slot quirk %s is deprecated\n", ++ of_slot_quirks[idx].quirk); ++ quirks |= of_slot_quirks[idx].id; ++ } ++ ++ return quirks; ++} ++#else /* CONFIG_OF */ ++static int dw_mci_of_get_slot_quirks(struct device *dev, u8 slot) ++{ ++ return 0; ++} ++#endif /* CONFIG_OF */ ++ ++static int dw_mci_init_slot(struct dw_mci *host, unsigned int id) ++{ ++ struct mmc_host *mmc; ++ struct dw_mci_slot *slot; ++ const struct dw_mci_drv_data *drv_data = host->drv_data; ++ int ctrl_id, ret; ++ u32 freq[2]; ++ ++ mmc = mmc_alloc_host(sizeof(struct dw_mci_slot), host->dev); ++ if (!mmc) ++ return -ENOMEM; ++ ++ slot = mmc_priv(mmc); ++ slot->id = id; ++ slot->mmc = mmc; ++ slot->host = host; ++ host->slot[id] = slot; ++ ++ slot->quirks = dw_mci_of_get_slot_quirks(host->dev, slot->id); ++ ++ mmc->ops = &dw_mci_ops; ++ if (of_property_read_u32_array(host->dev->of_node, ++ "clock-freq-min-max", freq, 2)) { ++ mmc->f_min = DW_MCI_FREQ_MIN; ++ mmc->f_max = DW_MCI_FREQ_MAX; ++ } else { ++ mmc->f_min = freq[0]; ++ mmc->f_max = freq[1]; ++ } ++ ++ /*if there are external regulators, get them*/ ++ ret = mmc_regulator_get_supply(mmc); ++ if (ret == -EPROBE_DEFER) ++ goto err_host_allocated; ++ ++ if (!mmc->ocr_avail) ++ mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; ++ ++ if (host->pdata->caps) ++ mmc->caps = host->pdata->caps; ++ ++ if (host->pdata->pm_caps) ++ mmc->pm_caps = host->pdata->pm_caps; ++ ++ if (host->dev->of_node) { ++ ctrl_id = of_alias_get_id(host->dev->of_node, "mshc"); ++ if (ctrl_id < 0) ++ ctrl_id = 0; ++ } else { ++ ctrl_id = to_platform_device(host->dev)->id; ++ } ++ if (drv_data && drv_data->caps) ++ mmc->caps |= drv_data->caps[ctrl_id]; ++ ++ if (host->pdata->caps2) ++ mmc->caps2 = host->pdata->caps2; ++ ++ ret = mmc_of_parse(mmc); ++ if (ret) ++ goto err_host_allocated; ++ ++ if (host->pdata->blk_settings) { ++ mmc->max_segs = host->pdata->blk_settings->max_segs; ++ mmc->max_blk_size = host->pdata->blk_settings->max_blk_size; ++ mmc->max_blk_count = host->pdata->blk_settings->max_blk_count; ++ mmc->max_req_size = host->pdata->blk_settings->max_req_size; ++ mmc->max_seg_size = host->pdata->blk_settings->max_seg_size; ++ } else { ++ /* Useful defaults if platform data is unset. */ ++#ifdef CONFIG_MMC_DW_IDMAC ++ mmc->max_segs = host->ring_size; ++ mmc->max_blk_size = 65536; ++ mmc->max_blk_count = host->ring_size; ++ mmc->max_seg_size = 0x1000; ++ mmc->max_req_size = mmc->max_seg_size * mmc->max_blk_count; ++#else ++ mmc->max_segs = 64; ++ mmc->max_blk_size = 65536; /* BLKSIZ is 16 bits */ ++ mmc->max_blk_count = 512; ++ mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; ++ mmc->max_seg_size = mmc->max_req_size; ++#endif /* CONFIG_MMC_DW_IDMAC */ ++ } ++ ++ if (dw_mci_get_cd(mmc)) ++ set_bit(DW_MMC_CARD_PRESENT, &slot->flags); ++ else ++ clear_bit(DW_MMC_CARD_PRESENT, &slot->flags); ++ ++ ret = mmc_add_host(mmc); ++ if (ret) ++ goto err_host_allocated; ++ ++#if defined(CONFIG_DEBUG_FS) ++ dw_mci_init_debugfs(slot); ++#endif ++ ++ /* Card initially undetected */ ++ slot->last_detect_state = 0; ++ ++ return 0; ++ ++err_host_allocated: ++ mmc_free_host(mmc); ++ return ret; ++} ++ ++static void dw_mci_cleanup_slot(struct dw_mci_slot *slot, unsigned int id) ++{ ++ /* Debugfs stuff is cleaned up by mmc core */ ++ mmc_remove_host(slot->mmc); ++ slot->host->slot[id] = NULL; ++ mmc_free_host(slot->mmc); ++} ++ ++static void dw_mci_init_dma(struct dw_mci *host) ++{ ++ /* Alloc memory for sg translation */ ++ host->sg_cpu = dmam_alloc_coherent(host->dev, PAGE_SIZE, ++ &host->sg_dma, GFP_KERNEL); ++ if (!host->sg_cpu) { ++ dev_err(host->dev, "%s: could not alloc DMA memory\n", ++ __func__); ++ goto no_dma; ++ } ++ ++ /* Determine which DMA interface to use */ ++#ifdef CONFIG_MMC_DW_IDMAC ++ host->dma_ops = &dw_mci_idmac_ops; ++ dev_info(host->dev, "Using internal DMA controller.\n"); ++#endif ++ ++ if (!host->dma_ops) ++ goto no_dma; ++ ++ if (host->dma_ops->init && host->dma_ops->start && ++ host->dma_ops->stop && host->dma_ops->cleanup) { ++ if (host->dma_ops->init(host)) { ++ dev_err(host->dev, "%s: Unable to initialize " ++ "DMA Controller.\n", __func__); ++ goto no_dma; ++ } ++ } else { ++ dev_err(host->dev, "DMA initialization not found.\n"); ++ goto no_dma; ++ } ++ ++ host->use_dma = 1; ++ return; ++ ++no_dma: ++ dev_info(host->dev, "Using PIO mode.\n"); ++ host->use_dma = 0; ++ return; ++} ++ ++static bool dw_mci_ctrl_reset(struct dw_mci *host, u32 reset) ++{ ++ unsigned long timeout = jiffies + msecs_to_jiffies(500); ++ u32 ctrl; ++ ++ ctrl = mci_readl(host, CTRL); ++ ctrl |= reset; ++ mci_writel(host, CTRL, ctrl); ++ ++ /* wait till resets clear */ ++ do { ++ ctrl = mci_readl(host, CTRL); ++ if (!(ctrl & reset)) ++ return true; ++ } while (time_before(jiffies, timeout)); ++ ++ dev_err(host->dev, ++ "Timeout resetting block (ctrl reset %#x)\n", ++ ctrl & reset); ++ ++ return false; ++} ++ ++static bool dw_mci_reset(struct dw_mci *host) ++{ ++ u32 flags = SDMMC_CTRL_RESET | SDMMC_CTRL_FIFO_RESET; ++ bool ret = false; ++ ++ /* ++ * Reseting generates a block interrupt, hence setting ++ * the scatter-gather pointer to NULL. ++ */ ++ if (host->sg) { ++ sg_miter_stop(&host->sg_miter); ++ host->sg = NULL; ++ } ++ ++ if (host->use_dma) ++ flags |= SDMMC_CTRL_DMA_RESET; ++ ++ if (dw_mci_ctrl_reset(host, flags)) { ++ /* ++ * In all cases we clear the RAWINTS register to clear any ++ * interrupts. ++ */ ++ mci_writel(host, RINTSTS, 0xFFFFFFFF); ++ ++ /* if using dma we wait for dma_req to clear */ ++ if (host->use_dma) { ++ unsigned long timeout = jiffies + msecs_to_jiffies(500); ++ u32 status; ++ do { ++ status = mci_readl(host, STATUS); ++ if (!(status & SDMMC_STATUS_DMA_REQ)) ++ break; ++ cpu_relax(); ++ } while (time_before(jiffies, timeout)); ++ ++ if (status & SDMMC_STATUS_DMA_REQ) { ++ dev_err(host->dev, ++ "%s: Timeout waiting for dma_req to " ++ "clear during reset\n", __func__); ++ goto ciu_out; ++ } ++ ++ /* when using DMA next we reset the fifo again */ ++ if (!dw_mci_ctrl_reset(host, SDMMC_CTRL_FIFO_RESET)) ++ goto ciu_out; ++ } ++ } else { ++ /* if the controller reset bit did clear, then set clock regs */ ++ if (!(mci_readl(host, CTRL) & SDMMC_CTRL_RESET)) { ++ dev_err(host->dev, "%s: fifo/dma reset bits didn't " ++ "clear but ciu was reset, doing clock update\n", ++ __func__); ++ goto ciu_out; ++ } ++ } ++ ++#if IS_ENABLED(CONFIG_MMC_DW_IDMAC) ++ /* It is also recommended that we reset and reprogram idmac */ ++ dw_mci_idmac_reset(host); ++#endif ++ ++ ret = true; ++ ++ciu_out: ++ /* After a CTRL reset we need to have CIU set clock registers */ ++ mci_send_cmd(host->cur_slot, SDMMC_CMD_UPD_CLK, 0); ++ ++ return ret; ++} ++ ++#ifdef CONFIG_OF ++static struct dw_mci_of_quirks { ++ char *quirk; ++ int id; ++} of_quirks[] = { ++ { ++ .quirk = "broken-cd", ++ .id = DW_MCI_QUIRK_BROKEN_CARD_DETECTION, ++ }, { ++ .quirk = "disable-wp", ++ .id = DW_MCI_QUIRK_NO_WRITE_PROTECT, ++ }, ++}; ++ ++static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host) ++{ ++ struct dw_mci_board *pdata; ++ struct device *dev = host->dev; ++ struct device_node *np = dev->of_node; ++ const struct dw_mci_drv_data *drv_data = host->drv_data; ++ int idx, ret; ++ u32 clock_frequency; ++ ++ pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL); ++ if (!pdata) { ++ dev_err(dev, "could not allocate memory for pdata\n"); ++ return ERR_PTR(-ENOMEM); ++ } ++ ++ /* find out number of slots supported */ ++ if (of_property_read_u32(dev->of_node, "num-slots", ++ &pdata->num_slots)) { ++ dev_info(dev, "num-slots property not found, " ++ "assuming 1 slot is available\n"); ++ pdata->num_slots = 1; ++ } ++ ++ /* get quirks */ ++ for (idx = 0; idx < ARRAY_SIZE(of_quirks); idx++) ++ if (of_get_property(np, of_quirks[idx].quirk, NULL)) ++ pdata->quirks |= of_quirks[idx].id; ++ ++ if (of_property_read_u32(np, "fifo-depth", &pdata->fifo_depth)) ++ dev_info(dev, "fifo-depth property not found, using " ++ "value of FIFOTH register as default\n"); ++ ++ of_property_read_u32(np, "card-detect-delay", &pdata->detect_delay_ms); ++ ++ if (!of_property_read_u32(np, "clock-frequency", &clock_frequency)) ++ pdata->bus_hz = clock_frequency; ++ ++ if (drv_data && drv_data->parse_dt) { ++ ret = drv_data->parse_dt(host); ++ if (ret) ++ return ERR_PTR(ret); ++ } ++ ++ if (of_find_property(np, "supports-highspeed", NULL)) ++ pdata->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED; ++ ++ return pdata; ++} ++ ++#else /* CONFIG_OF */ ++static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host) ++{ ++ return ERR_PTR(-EINVAL); ++} ++#endif /* CONFIG_OF */ ++ ++int dw_mci_probe(struct dw_mci *host) ++{ ++ const struct dw_mci_drv_data *drv_data = host->drv_data; ++ int width, i, ret = 0; ++ u32 fifo_size; ++ int init_slots = 0; ++ ++ if (!host->pdata) { ++ host->pdata = dw_mci_parse_dt(host); ++ if (IS_ERR(host->pdata)) { ++ dev_err(host->dev, "platform data not available\n"); ++ return -EINVAL; ++ } ++ } ++ ++ if (host->pdata->num_slots > 1) { ++ dev_err(host->dev, ++ "Platform data must supply num_slots.\n"); ++ return -ENODEV; ++ } ++ ++ host->biu_clk = devm_clk_get(host->dev, "biu"); ++ if (IS_ERR(host->biu_clk)) { ++ dev_dbg(host->dev, "biu clock not available\n"); ++ } else { ++ ret = clk_prepare_enable(host->biu_clk); ++ if (ret) { ++ dev_err(host->dev, "failed to enable biu clock\n"); ++ return ret; ++ } ++ } ++ ++ host->ciu_clk = devm_clk_get(host->dev, "ciu"); ++ if (IS_ERR(host->ciu_clk)) { ++ dev_dbg(host->dev, "ciu clock not available\n"); ++ host->bus_hz = host->pdata->bus_hz; ++ } else { ++ ret = clk_prepare_enable(host->ciu_clk); ++ if (ret) { ++ dev_err(host->dev, "failed to enable ciu clock\n"); ++ goto err_clk_biu; ++ } ++ ++ if (host->pdata->bus_hz) { ++ ret = clk_set_rate(host->ciu_clk, host->pdata->bus_hz); ++ if (ret) ++ dev_warn(host->dev, ++ "Unable to set bus rate to %uHz\n", ++ host->pdata->bus_hz); ++ } ++ host->bus_hz = clk_get_rate(host->ciu_clk); ++ } ++ ++ if (!host->bus_hz) { ++ dev_err(host->dev, ++ "Platform data must supply bus speed\n"); ++ ret = -ENODEV; ++ goto err_clk_ciu; ++ } ++ ++ if (drv_data && drv_data->init) { ++ ret = drv_data->init(host); ++ if (ret) { ++ dev_err(host->dev, ++ "implementation specific init failed\n"); ++ goto err_clk_ciu; ++ } ++ } ++ ++ if (drv_data && drv_data->setup_clock) { ++ ret = drv_data->setup_clock(host); ++ if (ret) { ++ dev_err(host->dev, ++ "implementation specific clock setup failed\n"); ++ goto err_clk_ciu; ++ } ++ } ++ ++ host->quirks = host->pdata->quirks; ++ ++ spin_lock_init(&host->lock); ++ INIT_LIST_HEAD(&host->queue); ++ ++ /* ++ * Get the host data width - this assumes that HCON has been set with ++ * the correct values. ++ */ ++ i = (mci_readl(host, HCON) >> 7) & 0x7; ++ if (!i) { ++ host->push_data = dw_mci_push_data16; ++ host->pull_data = dw_mci_pull_data16; ++ width = 16; ++ host->data_shift = 1; ++ } else if (i == 2) { ++ host->push_data = dw_mci_push_data64; ++ host->pull_data = dw_mci_pull_data64; ++ width = 64; ++ host->data_shift = 3; ++ } else { ++ /* Check for a reserved value, and warn if it is */ ++ WARN((i != 1), ++ "HCON reports a reserved host data width!\n" ++ "Defaulting to 32-bit access.\n"); ++ host->push_data = dw_mci_push_data32; ++ host->pull_data = dw_mci_pull_data32; ++ width = 32; ++ host->data_shift = 2; ++ } ++ ++ /* Reset all blocks */ ++ if (!dw_mci_ctrl_reset(host, SDMMC_CTRL_ALL_RESET_FLAGS)) ++ return -ENODEV; ++ ++ host->dma_ops = host->pdata->dma_ops; ++ dw_mci_init_dma(host); ++ ++ /* Clear the interrupts for the host controller */ ++ mci_writel(host, RINTSTS, 0xFFFFFFFF); ++ mci_writel(host, INTMASK, 0); /* disable all mmc interrupt first */ ++ ++ /* Put in max timeout */ ++ mci_writel(host, TMOUT, 0xFFFFFFFF); ++ ++ /* ++ * FIFO threshold settings RxMark = fifo_size / 2 - 1, ++ * Tx Mark = fifo_size / 2 DMA Size = 8 ++ */ ++ if (!host->pdata->fifo_depth) { ++ /* ++ * Power-on value of RX_WMark is FIFO_DEPTH-1, but this may ++ * have been overwritten by the bootloader, just like we're ++ * about to do, so if you know the value for your hardware, you ++ * should put it in the platform data. ++ */ ++ fifo_size = mci_readl(host, FIFOTH); ++ fifo_size = 1 + ((fifo_size >> 16) & 0xfff); ++ } else { ++ fifo_size = host->pdata->fifo_depth; ++ } ++ host->fifo_depth = fifo_size; ++ host->fifoth_val = ++ SDMMC_SET_FIFOTH(0x2, fifo_size / 2 - 1, fifo_size / 2); ++ mci_writel(host, FIFOTH, host->fifoth_val); ++ ++ /* disable clock to CIU */ ++ mci_writel(host, CLKENA, 0); ++ mci_writel(host, CLKSRC, 0); ++ ++ /* ++ * In 2.40a spec, Data offset is changed. ++ * Need to check the version-id and set data-offset for DATA register. ++ */ ++ host->verid = SDMMC_GET_VERID(mci_readl(host, VERID)); ++ dev_info(host->dev, "Version ID is %04x\n", host->verid); ++ ++ if (host->verid < DW_MMC_240A) ++ host->data_offset = DATA_OFFSET; ++ else ++ host->data_offset = DATA_240A_OFFSET; ++ ++ tasklet_init(&host->tasklet, dw_mci_tasklet_func, (unsigned long)host); ++ host->card_workqueue = alloc_workqueue("dw-mci-card", ++ WQ_MEM_RECLAIM, 1); ++ if (!host->card_workqueue) { ++ ret = -ENOMEM; ++ goto err_dmaunmap; ++ } ++ INIT_WORK(&host->card_work, dw_mci_work_routine_card); ++ ret = devm_request_irq(host->dev, host->irq, dw_mci_interrupt, ++ host->irq_flags, "dw-mci", host); ++ if (ret) ++ goto err_workqueue; ++ ++ if (host->pdata->num_slots) ++ host->num_slots = host->pdata->num_slots; ++ else ++ host->num_slots = ((mci_readl(host, HCON) >> 1) & 0x1F) + 1; ++ ++ /* ++ * Enable interrupts for command done, data over, data empty, card det, ++ * receive ready and error such as transmit, receive timeout, crc error ++ */ ++ mci_writel(host, RINTSTS, 0xFFFFFFFF); ++ mci_writel(host, INTMASK, SDMMC_INT_CMD_DONE | SDMMC_INT_DATA_OVER | ++ SDMMC_INT_TXDR | SDMMC_INT_RXDR | ++ DW_MCI_ERROR_FLAGS | SDMMC_INT_CD); ++ mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE); /* Enable mci interrupt */ ++ ++ dev_info(host->dev, "DW MMC controller at irq %d, " ++ "%d bit host data width, " ++ "%u deep fifo\n", ++ host->irq, width, fifo_size); ++ ++ /* We need at least one slot to succeed */ ++ for (i = 0; i < host->num_slots; i++) { ++ ret = dw_mci_init_slot(host, i); ++ if (ret) ++ dev_dbg(host->dev, "slot %d init failed\n", i); ++ else ++ init_slots++; ++ } ++ ++ if (init_slots) { ++ dev_info(host->dev, "%d slots initialized\n", init_slots); ++ } else { ++ dev_dbg(host->dev, "attempted to initialize %d slots, " ++ "but failed on all\n", host->num_slots); ++ goto err_workqueue; ++ } ++ ++ if (host->quirks & DW_MCI_QUIRK_IDMAC_DTO) ++ dev_info(host->dev, "Internal DMAC interrupt fix enabled.\n"); ++ ++ return 0; ++ ++err_workqueue: ++ destroy_workqueue(host->card_workqueue); ++ ++err_dmaunmap: ++ if (host->use_dma && host->dma_ops->exit) ++ host->dma_ops->exit(host); ++ ++err_clk_ciu: ++ if (!IS_ERR(host->ciu_clk)) ++ clk_disable_unprepare(host->ciu_clk); ++ ++err_clk_biu: ++ if (!IS_ERR(host->biu_clk)) ++ clk_disable_unprepare(host->biu_clk); ++ ++ return ret; ++} ++EXPORT_SYMBOL(dw_mci_probe); ++ ++void dw_mci_remove(struct dw_mci *host) ++{ ++ int i; ++ ++ mci_writel(host, RINTSTS, 0xFFFFFFFF); ++ mci_writel(host, INTMASK, 0); /* disable all mmc interrupt first */ ++ ++ for (i = 0; i < host->num_slots; i++) { ++ dev_dbg(host->dev, "remove slot %d\n", i); ++ if (host->slot[i]) ++ dw_mci_cleanup_slot(host->slot[i], i); ++ } ++ ++ /* disable clock to CIU */ ++ mci_writel(host, CLKENA, 0); ++ mci_writel(host, CLKSRC, 0); ++ ++ destroy_workqueue(host->card_workqueue); ++ ++ if (host->use_dma && host->dma_ops->exit) ++ host->dma_ops->exit(host); ++ ++ if (!IS_ERR(host->ciu_clk)) ++ clk_disable_unprepare(host->ciu_clk); ++ ++ if (!IS_ERR(host->biu_clk)) ++ clk_disable_unprepare(host->biu_clk); ++} ++EXPORT_SYMBOL(dw_mci_remove); ++ ++ ++ ++#ifdef CONFIG_PM_SLEEP ++/* ++ * TODO: we should probably disable the clock to the card in the suspend path. ++ */ ++int dw_mci_suspend(struct dw_mci *host) ++{ ++ return 0; ++} ++EXPORT_SYMBOL(dw_mci_suspend); ++ ++int dw_mci_resume(struct dw_mci *host) ++{ ++ int i, ret; ++ ++ if (!dw_mci_ctrl_reset(host, SDMMC_CTRL_ALL_RESET_FLAGS)) { ++ ret = -ENODEV; ++ return ret; ++ } ++ ++ if (host->use_dma && host->dma_ops->init) ++ host->dma_ops->init(host); ++ ++ /* ++ * Restore the initial value at FIFOTH register ++ * And Invalidate the prev_blksz with zero ++ */ ++ mci_writel(host, FIFOTH, host->fifoth_val); ++ host->prev_blksz = 0; ++ ++ /* Put in max timeout */ ++ mci_writel(host, TMOUT, 0xFFFFFFFF); ++ ++ mci_writel(host, RINTSTS, 0xFFFFFFFF); ++ mci_writel(host, INTMASK, SDMMC_INT_CMD_DONE | SDMMC_INT_DATA_OVER | ++ SDMMC_INT_TXDR | SDMMC_INT_RXDR | ++ DW_MCI_ERROR_FLAGS | SDMMC_INT_CD); ++ mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE); ++ ++ for (i = 0; i < host->num_slots; i++) { ++ struct dw_mci_slot *slot = host->slot[i]; ++ if (!slot) ++ continue; ++ if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) { ++ dw_mci_set_ios(slot->mmc, &slot->mmc->ios); ++ dw_mci_setup_bus(slot, true); ++ } ++ } ++ return 0; ++} ++EXPORT_SYMBOL(dw_mci_resume); ++#endif /* CONFIG_PM_SLEEP */ ++ ++static int __init dw_mci_init(void) ++{ ++ pr_info("Synopsys Designware Multimedia Card Interface Driver\n"); ++ return 0; ++} ++ ++static void __exit dw_mci_exit(void) ++{ ++} ++ ++module_init(dw_mci_init); ++module_exit(dw_mci_exit); ++ ++MODULE_DESCRIPTION("DW Multimedia Card Interface driver"); ++MODULE_AUTHOR("NXP Semiconductor VietNam"); ++MODULE_AUTHOR("Imagination Technologies Ltd"); ++MODULE_LICENSE("GPL v2"); +diff -Nur linux-3.18.8.orig/include/linux/mmc/host.h linux-3.18.8/include/linux/mmc/host.h +--- linux-3.18.8.orig/include/linux/mmc/host.h 2015-02-27 02:49:36.000000000 +0100 ++++ linux-3.18.8/include/linux/mmc/host.h 2015-03-02 03:25:33.000000000 +0100 +@@ -305,6 +305,11 @@ + unsigned long clkgate_delay; + #endif + ++ /* card specific properties to deal with power and reset */ ++ struct regulator *card_regulator; /* External VCC needed by the card */ ++ struct gpio_desc *card_reset_gpios[2]; /* External resets, active low */ ++ struct clk *card_clk; /* External clock needed by the card */ ++ + /* host specific block data */ + unsigned int max_seg_size; /* see blk_queue_max_segment_size */ + unsigned short max_segs; /* see blk_queue_max_segments */ diff --git a/target/config/Config.in.adk b/target/config/Config.in.adk index 86f38c2dd..90759cea2 100644 --- a/target/config/Config.in.adk +++ b/target/config/Config.in.adk @@ -110,4 +110,16 @@ config ADK_HOST_CYGWIN bool "Cygwin" endchoice + +config ADK_PRELINK + prompt "Prelink binaries and libraries in Image" + boolean + help + Do prelinking for faster loading of binaries. + +config ADK_PRELINK_OPTS + string "additional options to pass to prelink" + default "-mR" + depends on ADK_PRELINK + endmenu diff --git a/target/config/Config.in.cpu b/target/config/Config.in.cpu index f41204db4..a1fd577b9 100644 --- a/target/config/Config.in.cpu +++ b/target/config/Config.in.cpu @@ -81,13 +81,13 @@ config ADK_CPU_CORTEX_A7 bool select ADK_TARGET_WITH_NPTL select ADK_TARGET_WITH_MMU - select ADK_TARGET_CPU_WITH_FPU_VFP4 + select ADK_TARGET_CPU_WITH_FPU_VFPV4 config ADK_CPU_CORTEX_A9 bool select ADK_TARGET_WITH_NPTL select ADK_TARGET_WITH_MMU - select ADK_TARGET_CPU_WITH_FPU_VFP3 + select ADK_TARGET_CPU_WITH_FPU_VFPV3 config ADK_CPU_CORTEX_A53 bool @@ -112,6 +112,21 @@ config ADK_CPU_GEODE select ADK_TARGET_WITH_NPTL select ADK_TARGET_WITH_MMU +config ADK_CPU_I486 + bool + select ADK_TARGET_WITH_NPTL + select ADK_TARGET_WITH_MMU + +config ADK_CPU_I586 + bool + select ADK_TARGET_WITH_NPTL + select ADK_TARGET_WITH_MMU + +config ADK_CPU_I686 + bool + select ADK_TARGET_WITH_NPTL + select ADK_TARGET_WITH_MMU + config ADK_CPU_LOONGSON2F bool select ADK_TARGET_WITH_NPTL @@ -228,17 +243,14 @@ config ADK_TARGET_CPU_WITH_FPU config ADK_TARGET_CPU_WITH_FPU_VFP bool select ADK_TARGET_CPU_WITH_FPU - select ADK_fpu_vfp -config ADK_TARGET_CPU_WITH_FPU_VFP3 +config ADK_TARGET_CPU_WITH_FPU_VFPV3 bool select ADK_TARGET_CPU_WITH_FPU - select ADK_fpu_vfp3 -config ADK_TARGET_CPU_WITH_FPU_VFP4 +config ADK_TARGET_CPU_WITH_FPU_VFPV4 bool select ADK_TARGET_CPU_WITH_FPU - select ADK_fpu_vfp4 config ADK_TARGET_CPU_WITH_VT bool @@ -283,42 +295,45 @@ config ADK_TARGET_GCC_CPU string default "440" if ADK_CPU_PPC_440 default "5208" if ADK_CPU_CF_5208 - default "amdfam10" if ADK_CPU_AMDFAM10 default "arc700" if ADK_CPU_ARC700 default "arcv2em" if ADK_CPU_ARCv2EM default "arm1176jzf-s" if ADK_CPU_ARM1176JZF_S default "arm926ej-s" if ADK_CPU_ARM926EJ_S default "armv8-a" if ADK_CPU_ARMV8 - default "athlon" if ADK_CPU_ATHLON - default "atom" if ADK_CPU_ATOM default "cortex-a7" if ADK_CPU_CORTEX_A7 default "cortex-a9" if ADK_CPU_CORTEX_A9 default "cortex-a53" if ADK_CPU_CORTEX_A53 default "cortex-a57" if ADK_CPU_CORTEX_A57 default "cortex-m3" if ADK_CPU_CORTEX_M3 default "cortex-m4" if ADK_CPU_CORTEX_M4 - default "geode" if ADK_CPU_GEODE - default "i486" if ADK_CPU_I486 - default "i586" if ADK_CPU_I586 - default "i686" if ADK_CPU_I686 - default "pentium-m" if ADK_CPU_PENTIUM_M default "powerpc" if ADK_CPU_PPC default "powerpc64" if ADK_CPU_PPC64 default "ultrasparc" if ADK_CPU_SPARC_V9 - default "v10" if ADK_CPU_CRIS_V10 - default "v32" if ADK_CPU_CRIS_V32 - default "v7.10.d" if ADK_CPU_MICROBLAZE default "v8" if ADK_CPU_SPARC_V8 - default "x86-64" if ADK_CPU_X86_64 default "xscale" if ADK_CPU_XSCALE config ADK_TARGET_GCC_ARCH string + default "amdfam10" if ADK_CPU_AMDFAM10 + default "athlon" if ADK_CPU_ATHLON + default "atom" if ADK_CPU_ATOM + default "geode" if ADK_CPU_GEODE + default "i486" if ADK_CPU_I486 + default "i586" if ADK_CPU_I586 + default "i686" if ADK_CPU_I686 default "loongson2f" if ADK_CPU_LOONGSON2F default "mips32" if ADK_CPU_MIPS32 default "mips32r2" if ADK_CPU_MIPS32R2 default "mips64" if ADK_CPU_MIPS64 default "mips64r2" if ADK_CPU_MIPS64R2 + default "pentium-m" if ADK_CPU_PENTIUM_M + default "x86-64" if ADK_CPU_X86_64 + +config ADK_TARGET_CPU_FLAGS + string + default "-mcpu=v10" if ADK_CPU_CRIS_V10 + default "-mcpu=v32" if ADK_CPU_CRIS_V32 + default "-mcpu=v7.10.d" if ADK_CPU_MICROBLAZE config ADK_TARGET_CPU_ARCH string diff --git a/target/config/Config.in.fpu.default b/target/config/Config.in.fpu.default index 0fd8f616c..c55b0a602 100644 --- a/target/config/Config.in.fpu.default +++ b/target/config/Config.in.fpu.default @@ -4,7 +4,7 @@ config ADK_TARGET_FPU string depends on ADK_TARGET_ARCH_ARM - default "vfp" if ADK_TARGET_CPU_WITH_FPU_VFP - default "vfp3" if ADK_TARGET_CPU_WITH_FPU_VFP3 - default "vfp4" if ADK_TARGET_CPU_WITH_FPU_VFP4 default "neon" if ADK_TARGET_CPU_WITH_NEON + default "vfp" if ADK_TARGET_CPU_WITH_FPU_VFP + default "vfpv3" if ADK_TARGET_CPU_WITH_FPU_VFPV3 + default "vfpv4" if ADK_TARGET_CPU_WITH_FPU_VFPV4 diff --git a/target/config/Config.in.kernelversion.choice b/target/config/Config.in.kernelversion.choice index d2cbeb18e..3fc342096 100644 --- a/target/config/Config.in.kernelversion.choice +++ b/target/config/Config.in.kernelversion.choice @@ -4,14 +4,14 @@ choice prompt "Kernel Version" depends on ADK_TARGET_KERNEL_CUSTOMISING -default ADK_KERNEL_VERSION_3_18_6 +default ADK_KERNEL_VERSION_3_18_8 config ADK_KERNEL_VERSION_3_19_0 bool "3.19" select ADK_KERNEL_VERSION_3_19 -config ADK_KERNEL_VERSION_3_18_6 - bool "3.18.6" +config ADK_KERNEL_VERSION_3_18_8 + bool "3.18.8" depends on !ADK_TARGET_SYSTEM_MIKROTIK_RB4XX depends on !ADK_TARGET_ARCH_NIOS2 select ADK_KERNEL_VERSION_3_18 diff --git a/target/config/Config.in.kernelversion.default b/target/config/Config.in.kernelversion.default index ca7eda996..f231d180a 100644 --- a/target/config/Config.in.kernelversion.default +++ b/target/config/Config.in.kernelversion.default @@ -28,7 +28,7 @@ config ADK_KERNEL_VERSION_2_6_32 config ADK_KERNEL_VERSION string default "3.19" if ADK_KERNEL_VERSION_3_19_0 - default "3.18.6" if ADK_KERNEL_VERSION_3_18_6 + default "3.18.8" if ADK_KERNEL_VERSION_3_18_8 default "3.14.28" if ADK_KERNEL_VERSION_3_14_28 default "3.12.37" if ADK_KERNEL_VERSION_3_12_37 default "3.10.53" if ADK_KERNEL_VERSION_3_10_53 diff --git a/target/config/Config.in.libc.choice b/target/config/Config.in.libc.choice index 572beae75..9a3587131 100644 --- a/target/config/Config.in.libc.choice +++ b/target/config/Config.in.libc.choice @@ -10,6 +10,7 @@ config ADK_TARGET_LIB_UCLIBC_NG depends on \ !ADK_TARGET_ARCH_AARCH64 && \ !ADK_TARGET_ARCH_ALPHA && \ + !ADK_TARGET_ARCH_MICROBLAZE && \ !ADK_TARGET_ARCH_NIOS2 && \ !ADK_TARGET_ARCH_SPARC64 && \ !ADK_TARGET_ARCH_PPC64 && \ diff --git a/target/config/Config.in.qemu b/target/config/Config.in.qemu index e7b15818c..2e16341ba 100644 --- a/target/config/Config.in.qemu +++ b/target/config/Config.in.qemu @@ -35,8 +35,6 @@ depends on ADK_TARGET_SYSTEM_QEMU_ARM config ADK_TARGET_QEMU_ARM_MODEL_VEXPRESS_A9 bool "ARM Ltd. Versatile Express with Cortex-A9" select ADK_CPU_CORTEX_A9 - select ADK_TARGET_CPU_WITH_FPU - select ADK_TARGET_CPU_WITH_FPU_NEON config ADK_TARGET_QEMU_ARM_MODEL_STELLARIS_M3 bool "Stellaris LM3S6965EVB with Cortex-M3" diff --git a/target/cris/uclibc.config b/target/cris/uclibc.config index 5d952788d..6911ce9cc 100644 --- a/target/cris/uclibc.config +++ b/target/cris/uclibc.config @@ -89,9 +89,9 @@ UCLIBC_HAS_THREADS=y PTHREADS_DEBUG_SUPPORT=y UCLIBC_HAS_SYSLOG=y UCLIBC_HAS_LFS=y -MALLOC=y +# MALLOC=y # MALLOC_SIMPLE is not set -# MALLOC_STANDARD is not set +MALLOC_STANDARD=y MALLOC_GLIBC_COMPAT=y UCLIBC_HAS_OBSTACK=y UCLIBC_DYNAMIC_ATEXIT=y diff --git a/target/linux/config/Config.in.block b/target/linux/config/Config.in.block index a72a95012..d9d13a616 100644 --- a/target/linux/config/Config.in.block +++ b/target/linux/config/Config.in.block @@ -411,7 +411,6 @@ config ADK_KERNEL_DM_CRYPT select ADK_KERNEL_CRYPTO_CBC select ADK_KERNEL_CRYPTO_BLKCIPHER depends on ADK_KERNEL_BLK_DEV_DM - default m if ADK_PACKAGE_CRYPTSETUP default n help This device-mapper target allows you to create a device that @@ -439,7 +438,6 @@ config ADK_KERNEL_BLK_DEV_DRBD tristate "DRBD support (Network RAID 1)" select ADK_KERNEL_BLK_DEV select ADK_KERNEL_CONNECTOR - default m if ADK_PACKAGE_DRBD default n help DRBD - http://www.drbd.org @@ -447,8 +445,6 @@ config ADK_KERNEL_BLK_DEV_DRBD config ADK_KERNEL_BLK_DEV_LOOP tristate "Loop mount support" select ADK_KERNEL_BLK_DEV - default m if ADK_PACKAGE_LOSETUP - default m if ADK_PACKAGE_LTP default n help Saying Y here will allow you to use a regular file as a block diff --git a/target/linux/config/Config.in.cpu b/target/linux/config/Config.in.cpu index fa4ead68d..797e1a60e 100644 --- a/target/linux/config/Config.in.cpu +++ b/target/linux/config/Config.in.cpu @@ -40,6 +40,18 @@ config ADK_KERNEL_CPU_FREQ_GOV_ONDEMAND config ADK_KERNEL_CPU_FREQ_GOV_CONSERVATIVE bool +config ADK_KERNEL_ARM_IMX6Q_CPUFREQ + bool "CPU frequency support for IMX6 boards" + select ADK_KERNEL_CPU_FREQ + select ADK_KERNEL_REGULATOR + select ADK_KERNEL_REGULATOR_FIXED_VOLTAGE + select ADK_KERNEL_REGULATOR_ANATOP + select ADK_KERNEL_REGULATOR_PFUZE100 + depends on ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 + depends on !ADK_KERNEL_VERSION_3_12 + default y if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 + default n + config ADK_KERNEL_ARM_IMX6_CPUFREQ bool "CPU frequency support for IMX6 boards" select ADK_KERNEL_CPU_FREQ @@ -48,6 +60,7 @@ config ADK_KERNEL_ARM_IMX6_CPUFREQ select ADK_KERNEL_REGULATOR_ANATOP select ADK_KERNEL_REGULATOR_PFUZE100 depends on ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 + depends on ADK_KERNEL_VERSION_3_12 default y if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 default n diff --git a/target/linux/config/Config.in.crypto b/target/linux/config/Config.in.crypto index 3454077b0..8b1ceb056 100644 --- a/target/linux/config/Config.in.crypto +++ b/target/linux/config/Config.in.crypto @@ -154,9 +154,6 @@ config ADK_KERNEL_CRYPTO_CBC tristate select ADK_KERNEL_CRYPTO_BLKCIPHER select ADK_KERNEL_CRYPTO_MANAGER - default m if ADK_PACKAGE_CRYPTSETUP - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help CBC: Cipher Block Chaining mode @@ -210,8 +207,6 @@ config ADK_KERNEL_CRYPTO_HMAC tristate select ADK_KERNEL_CRYPTO_HASH select ADK_KERNEL_CRYPTO_MANAGER - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help HMAC: Keyed-Hashing for Message Authentication (RFC2104). @@ -242,8 +237,6 @@ config ADK_KERNEL_CRYPTO_MD5 prompt "MD5 digest algorithm" tristate select ADK_KERNEL_CRYPTO_HASH - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help MD5 message digest algorithm (RFC1321). @@ -252,8 +245,6 @@ config ADK_KERNEL_CRYPTO_SHA1 prompt "SHA1 digest algorithm" tristate select ADK_KERNEL_CRYPTO_HASH - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2). @@ -262,7 +253,6 @@ config ADK_KERNEL_CRYPTO_SHA256 prompt "SHA256 digest algorithm" tristate select ADK_KERNEL_CRYPTO_HASH - default m if ADK_PACKAGE_CRYPTSETUP default n help SHA256 secure hash standard (DFIPS 180-2). @@ -444,8 +434,6 @@ config ADK_KERNEL_CRYPTO_DES prompt "DES and Triple DES EDE cipher algorithms" tristate select ADK_KERNEL_CRYPTO_ALGAPI - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3). @@ -546,8 +534,6 @@ config ADK_KERNEL_CRYPTO_NULL select ADK_KERNEL_CRYPTO_ALGAPI select ADK_KERNEL_CRYPTO_BLKCIPHER select ADK_KERNEL_CRYPTO_HASH - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help These are 'Null' algorithms, used by IPsec, which do nothing. diff --git a/target/linux/config/Config.in.debug b/target/linux/config/Config.in.debug index a2287f5f5..f2a00666e 100644 --- a/target/linux/config/Config.in.debug +++ b/target/linux/config/Config.in.debug @@ -123,7 +123,6 @@ config ADK_KERNEL_OPROFILE tristate select ADK_KERNEL_PROFILING depends on !ADK_TARGET_ARCH_M68K - default m if ADK_PACKAGE_OPROFILE default n help use oprofile package to make use of the kernel support. diff --git a/target/linux/config/Config.in.fs b/target/linux/config/Config.in.fs index 5bf161bf6..6ff67959d 100644 --- a/target/linux/config/Config.in.fs +++ b/target/linux/config/Config.in.fs @@ -195,10 +195,6 @@ config ADK_KERNEL_BTRFS_FS config ADK_KERNEL_FUSE_FS prompt "Filesystem in Userspace support" tristate - default m if ADK_PACKAGE_DAVFS2 - default m if ADK_PACKAGE_FUSE - default m if ADK_PACKAGE_NTFS_3G - default m if ADK_PACKAGE_WDFS default n help With FUSE it is possible to implement a fully functional diff --git a/target/linux/config/Config.in.fsnet b/target/linux/config/Config.in.fsnet index ad91da1e3..26f78090a 100644 --- a/target/linux/config/Config.in.fsnet +++ b/target/linux/config/Config.in.fsnet @@ -16,7 +16,6 @@ config ADK_KERNEL_CIFS select ADK_KERNEL_CRYPTO_DES select ADK_KERNEL_CRYPTO_SHA256 select ADK_KERNEL_NLS_UTF8 - default m if ADK_PACKAGE_CIFS_UTILS default n help This is the client VFS module for the Common Internet File System @@ -68,7 +67,6 @@ config ADK_KERNEL_NFS_FS select ADK_KERNEL_SUNRPC select ADK_KERNEL_LOCKD select ADK_KERNEL_NETWORK_FILESYSTEMS - default m if ADK_PACKAGE_NFS_UTILS_CLIENT default n help If you are connected to some other (usually local) Unix computer @@ -124,7 +122,6 @@ config ADK_KERNEL_NFSD select ADK_KERNEL_SUNRPC select ADK_KERNEL_LOCKD select ADK_KERNEL_NETWORK_FILESYSTEMS - default m if ADK_PACKAGE_NFS_UTILS_SERVER default n help If you want your Linux box to act as an NFS *server*, so that other @@ -175,7 +172,6 @@ config ADK_KERNEL_RPCSEC_GSS_KRB5 select ADK_KERNEL_CRYPTO_SHA1 select ADK_KERNEL_CRYPTO_AES select ADK_KERNEL_CRYPTO_ARC4 - default m if ADK_PACKAGE_NFS_UTILS_V4 default n help diff --git a/target/linux/config/Config.in.graphics b/target/linux/config/Config.in.graphics index dbd6185d0..3c8c683ef 100644 --- a/target/linux/config/Config.in.graphics +++ b/target/linux/config/Config.in.graphics @@ -71,7 +71,6 @@ config ADK_KERNEL_MXC_GPU_VIV config ADK_KERNEL_MXC_ASRC tristate - default m if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 config ADK_KERNEL_MXC_HDMI_CEC boolean @@ -183,7 +182,6 @@ config ADK_KERNEL_DRM_DW_HDMI_AUDIO tristate depends on ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 depends on ADK_KERNEL_VERSION_3_16 - #default m if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 default n help @@ -191,7 +189,6 @@ config ADK_KERNEL_DRM_DW_HDMI_CEC tristate depends on ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 depends on ADK_KERNEL_VERSION_3_16 - #default m if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 default n help diff --git a/target/linux/config/Config.in.input b/target/linux/config/Config.in.input index c636de8fa..0eeb235c4 100644 --- a/target/linux/config/Config.in.input +++ b/target/linux/config/Config.in.input @@ -145,8 +145,6 @@ config ADK_KERNEL_MOUSE_PS2 config ADK_KERNEL_INPUT_EVDEV tristate "Event device support" select ADK_KERNEL_INPUT - default m if ADK_PACKAGE_XF86_INPUT_EVDEV - default m if ADK_PACKAGE_XF86_INPUT_EVTOUCH default n endmenu diff --git a/target/linux/config/Config.in.ipsec b/target/linux/config/Config.in.ipsec index 8f0323291..da638c40c 100644 --- a/target/linux/config/Config.in.ipsec +++ b/target/linux/config/Config.in.ipsec @@ -3,8 +3,6 @@ menu "IPSec support" config ADK_KERNEL_NET_KEY prompt "PF_KEYv2 socket family" tristate - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help PF_KEYv2 socket family, compatible to KAME ones. @@ -12,8 +10,6 @@ config ADK_KERNEL_NET_KEY config ADK_KERNEL_XFRM_USER prompt "IPsec usertools support" tristate - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help @@ -21,8 +17,6 @@ config ADK_KERNEL_INET_AH prompt "IPsec AH support" tristate select ADK_KERNEL_CRYPTO_HASH - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help Support for IPsec AH. @@ -31,8 +25,6 @@ config ADK_KERNEL_INET_ESP prompt "IPsec ESP support" tristate select ADK_KERNEL_CRYPTO_AEAD - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help Support for IPsec ESP. @@ -42,8 +34,6 @@ config ADK_KERNEL_INET_IPCOMP tristate select ADK_KERNEL_CRYPTO_DEFLATE select ADK_KERNEL_INET_TUNNEL - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help Support for IP Payload Compression Protocol (IPComp) (RFC3173), @@ -52,8 +42,6 @@ config ADK_KERNEL_INET_IPCOMP config ADK_KERNEL_INET_XFRM_MODE_TRANSPORT prompt "IPsec transport mode" tristate - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help Support for IPsec transport mode. @@ -61,8 +49,6 @@ config ADK_KERNEL_INET_XFRM_MODE_TRANSPORT config ADK_KERNEL_INET_XFRM_MODE_TUNNEL prompt "IPsec tunnel mode" tristate - default m if ADK_PACKAGE_STRONGSWAN - default m if ADK_PACKAGE_OPENSWAN default n help Support for IPsec tunnel mode. diff --git a/target/linux/config/Config.in.ipvs b/target/linux/config/Config.in.ipvs index 16106e7a3..b5526fe93 100644 --- a/target/linux/config/Config.in.ipvs +++ b/target/linux/config/Config.in.ipvs @@ -5,7 +5,6 @@ config ADK_KERNEL_IP_VS tristate select ADK_KERNEL_NETFILTER select ADK_KERNEL_NF_CONNTRACK - default m if ADK_PACKAGE_IPVSADM default n config ADK_KERNEL_IP_VS_DEBUG diff --git a/target/linux/config/Config.in.kernel b/target/linux/config/Config.in.kernel index 68dfae242..81f7cedeb 100644 --- a/target/linux/config/Config.in.kernel +++ b/target/linux/config/Config.in.kernel @@ -175,6 +175,10 @@ endchoice menu "Kernel options" +config ADK_KERNEL_BINFMT_FLAT + bool + default y if ADK_TARGET_BINFMT_FLAT + config ADK_KERNEL_MMU bool @@ -184,11 +188,13 @@ config ADK_KERNEL_VFP config ADK_KERNEL_VFPv3 bool - default y if ADK_TARGET_CPU_WITH_FPU_VFP3 + select ADK_KERNEL_VFP + default y if ADK_TARGET_CPU_WITH_FPU_VFPV3 config ADK_KERNEL_VFPv4 bool - default y if ADK_TARGET_CPU_WITH_FPU_VFP4 + select ADK_KERNEL_VFP + default y if ADK_TARGET_CPU_WITH_FPU_VFPV4 config ADK_KERNEL_NEON bool diff --git a/target/linux/config/Config.in.netfilter.core b/target/linux/config/Config.in.netfilter.core index 5a42efd04..4b3cb48eb 100644 --- a/target/linux/config/Config.in.netfilter.core +++ b/target/linux/config/Config.in.netfilter.core @@ -1,7 +1,6 @@ config ADK_KERNEL_NF_CONNTRACK tristate 'Netfilter connection tracking support' select ADK_KERNEL_NETFILTER_XTABLES - default m if ADK_PACKAGE_IPTABLES default n help Connection tracking keeps a record of what packets have passed diff --git a/target/linux/config/Config.in.netfilter.ebt b/target/linux/config/Config.in.netfilter.ebt index 76eeb5e7b..16d2cab5a 100644 --- a/target/linux/config/Config.in.netfilter.ebt +++ b/target/linux/config/Config.in.netfilter.ebt @@ -2,7 +2,6 @@ config ADK_KERNEL_BRIDGE_NF_EBTABLES prompt 'Ethernet Bridge tables support' tristate select ADK_KERNEL_BRIDGE_NETFILTER - default m if ADK_PACKAGE_EBTABLES default n help ebtables is a general, extensible frame/packet identification diff --git a/target/linux/config/Config.in.netfilter.ip4 b/target/linux/config/Config.in.netfilter.ip4 index 77617ea12..648a412a7 100644 --- a/target/linux/config/Config.in.netfilter.ip4 +++ b/target/linux/config/Config.in.netfilter.ip4 @@ -7,7 +7,6 @@ config ADK_KERNEL_NF_NAT_IPV4 config ADK_KERNEL_IP_NF_IPTABLES tristate 'IP tables support' select ADK_KERNEL_NETFILTER_XTABLES - default m if ADK_PACKAGE_IPTABLES default n help iptables is a general, extensible packet identification framework. @@ -18,7 +17,6 @@ config ADK_KERNEL_IP_NF_IPTABLES config ADK_KERNEL_IP_NF_FILTER tristate 'IP Packet Filtering table support' depends on ADK_KERNEL_IP_NF_IPTABLES - default m if ADK_PACKAGE_IPTABLES default n help Packet filtering defines a table `filter', which has a series of @@ -31,7 +29,6 @@ config ADK_KERNEL_IP_NF_NAT select ADK_KERNEL_NF_NAT select ADK_KERNEL_NF_NAT_IPV4 depends on ADK_KERNEL_IP_NF_IPTABLES - default m if ADK_PACKAGE_IPTABLES default n help @@ -48,7 +45,6 @@ config ADK_KERNEL_NF_CONNTRACK_IPV4 tristate 'IP connection tracking support (required for NAT)' select ADK_KERNEL_NF_CONNTRACK select ADK_KERNEL_NETFILTER_XT_MATCH_CONNTRACK - default m if ADK_PACKAGE_IPTABLES default n help Connection tracking keeps a record of what packets have passed @@ -70,7 +66,6 @@ menu "IP target support" config ADK_KERNEL_IP_NF_TARGET_MASQUERADE tristate 'MASQUERADE target support' depends on ADK_KERNEL_NF_NAT - default m if ADK_PACKAGE_IPTABLES default n help Masquerading is a special case of NAT: all outgoing connections are @@ -82,7 +77,6 @@ config ADK_KERNEL_IP_NF_TARGET_MASQUERADE config ADK_KERNEL_IP_NF_TARGET_REJECT tristate 'REJECT target support' depends on ADK_KERNEL_IP_NF_FILTER - default m if ADK_PACKAGE_IPTABLES default n help The REJECT target allows a filtering rule to specify that an ICMP diff --git a/target/linux/patches/3.18.6/microblaze-axi.patch b/target/linux/patches/3.18.6/microblaze-axi.patch deleted file mode 100644 index 1a4b17d8c..000000000 --- a/target/linux/patches/3.18.6/microblaze-axi.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -Nur linux-3.13.3.orig/drivers/net/ethernet/xilinx/xilinx_axienet_main.c linux-3.13.3/drivers/net/ethernet/xilinx/xilinx_axienet_main.c ---- linux-3.13.3.orig/drivers/net/ethernet/xilinx/xilinx_axienet_main.c 2014-02-13 23:00:14.000000000 +0100 -+++ linux-3.13.3/drivers/net/ethernet/xilinx/xilinx_axienet_main.c 2014-02-24 08:03:57.000000000 +0100 -@@ -25,6 +25,7 @@ - #include <linux/init.h> - #include <linux/module.h> - #include <linux/netdevice.h> -+#include <linux/of_irq.h> - #include <linux/of_mdio.h> - #include <linux/of_platform.h> - #include <linux/of_address.h> diff --git a/target/linux/patches/3.18.6/bsd-compatibility.patch b/target/linux/patches/3.18.8/bsd-compatibility.patch index b954b658f..b954b658f 100644 --- a/target/linux/patches/3.18.6/bsd-compatibility.patch +++ b/target/linux/patches/3.18.8/bsd-compatibility.patch diff --git a/target/linux/patches/3.18.6/cleankernel.patch b/target/linux/patches/3.18.8/cleankernel.patch index d8c055dc3..d8c055dc3 100644 --- a/target/linux/patches/3.18.6/cleankernel.patch +++ b/target/linux/patches/3.18.8/cleankernel.patch diff --git a/target/linux/patches/3.18.6/cris-header.patch b/target/linux/patches/3.18.8/cris-header.patch index 3db07e530..3db07e530 100644 --- a/target/linux/patches/3.18.6/cris-header.patch +++ b/target/linux/patches/3.18.8/cris-header.patch diff --git a/target/linux/patches/3.18.6/defaults.patch b/target/linux/patches/3.18.8/defaults.patch index 6cdca084e..6cdca084e 100644 --- a/target/linux/patches/3.18.6/defaults.patch +++ b/target/linux/patches/3.18.8/defaults.patch diff --git a/target/linux/patches/3.18.6/export-symbol-for-exmap.patch b/target/linux/patches/3.18.8/export-symbol-for-exmap.patch index 4f0fc8449..4f0fc8449 100644 --- a/target/linux/patches/3.18.6/export-symbol-for-exmap.patch +++ b/target/linux/patches/3.18.8/export-symbol-for-exmap.patch diff --git a/target/linux/patches/3.18.6/gemalto.patch b/target/linux/patches/3.18.8/gemalto.patch index 65f7af1d7..65f7af1d7 100644 --- a/target/linux/patches/3.18.6/gemalto.patch +++ b/target/linux/patches/3.18.8/gemalto.patch diff --git a/target/linux/patches/3.18.6/initramfs-nosizelimit.patch b/target/linux/patches/3.18.8/initramfs-nosizelimit.patch index 40d2f6bd8..40d2f6bd8 100644 --- a/target/linux/patches/3.18.6/initramfs-nosizelimit.patch +++ b/target/linux/patches/3.18.8/initramfs-nosizelimit.patch diff --git a/target/linux/patches/3.18.6/lemote-rfkill.patch b/target/linux/patches/3.18.8/lemote-rfkill.patch index a61488434..a61488434 100644 --- a/target/linux/patches/3.18.6/lemote-rfkill.patch +++ b/target/linux/patches/3.18.8/lemote-rfkill.patch diff --git a/target/linux/patches/3.18.6/microblaze-ethernet.patch b/target/linux/patches/3.18.8/microblaze-ethernet.patch index 742ab477e..742ab477e 100644 --- a/target/linux/patches/3.18.6/microblaze-ethernet.patch +++ b/target/linux/patches/3.18.8/microblaze-ethernet.patch diff --git a/target/linux/patches/3.18.6/mkpiggy.patch b/target/linux/patches/3.18.8/mkpiggy.patch index 751678b74..751678b74 100644 --- a/target/linux/patches/3.18.6/mkpiggy.patch +++ b/target/linux/patches/3.18.8/mkpiggy.patch diff --git a/target/linux/patches/3.18.6/mtd-rootfs.patch b/target/linux/patches/3.18.8/mtd-rootfs.patch index 775d5fc80..775d5fc80 100644 --- a/target/linux/patches/3.18.6/mtd-rootfs.patch +++ b/target/linux/patches/3.18.8/mtd-rootfs.patch diff --git a/target/linux/patches/3.18.6/nfsv3-tcp.patch b/target/linux/patches/3.18.8/nfsv3-tcp.patch index d5e07e1c2..d5e07e1c2 100644 --- a/target/linux/patches/3.18.6/nfsv3-tcp.patch +++ b/target/linux/patches/3.18.8/nfsv3-tcp.patch diff --git a/target/linux/patches/3.18.6/non-static.patch b/target/linux/patches/3.18.8/non-static.patch index a967703d0..a967703d0 100644 --- a/target/linux/patches/3.18.6/non-static.patch +++ b/target/linux/patches/3.18.8/non-static.patch diff --git a/target/linux/patches/3.18.6/patch-fblogo b/target/linux/patches/3.18.8/patch-fblogo index f1fad64c1..f1fad64c1 100644 --- a/target/linux/patches/3.18.6/patch-fblogo +++ b/target/linux/patches/3.18.8/patch-fblogo diff --git a/target/linux/patches/3.18.6/patch-yaffs2 b/target/linux/patches/3.18.8/patch-yaffs2 index bb244c7ca..bb244c7ca 100644 --- a/target/linux/patches/3.18.6/patch-yaffs2 +++ b/target/linux/patches/3.18.8/patch-yaffs2 diff --git a/target/linux/patches/3.18.6/ppc64-missing-zlib.patch b/target/linux/patches/3.18.8/ppc64-missing-zlib.patch index c6e0616be..c6e0616be 100644 --- a/target/linux/patches/3.18.6/ppc64-missing-zlib.patch +++ b/target/linux/patches/3.18.8/ppc64-missing-zlib.patch diff --git a/target/linux/patches/3.18.6/regmap-bool.patch b/target/linux/patches/3.18.8/regmap-bool.patch index 5c0ff5e2c..5c0ff5e2c 100644 --- a/target/linux/patches/3.18.6/regmap-bool.patch +++ b/target/linux/patches/3.18.8/regmap-bool.patch diff --git a/target/linux/patches/3.18.6/relocs.patch b/target/linux/patches/3.18.8/relocs.patch index 69a7c88a9..69a7c88a9 100644 --- a/target/linux/patches/3.18.6/relocs.patch +++ b/target/linux/patches/3.18.8/relocs.patch diff --git a/target/linux/patches/3.18.6/sgidefs.patch b/target/linux/patches/3.18.8/sgidefs.patch index f00a284d9..f00a284d9 100644 --- a/target/linux/patches/3.18.6/sgidefs.patch +++ b/target/linux/patches/3.18.8/sgidefs.patch diff --git a/target/linux/patches/3.18.6/sortext.patch b/target/linux/patches/3.18.8/sortext.patch index 8fd4e1d6b..8fd4e1d6b 100644 --- a/target/linux/patches/3.18.6/sortext.patch +++ b/target/linux/patches/3.18.8/sortext.patch diff --git a/target/linux/patches/3.18.6/startup.patch b/target/linux/patches/3.18.8/startup.patch index d396b75e4..d396b75e4 100644 --- a/target/linux/patches/3.18.6/startup.patch +++ b/target/linux/patches/3.18.8/startup.patch diff --git a/target/linux/patches/3.18.6/wlan-cf.patch b/target/linux/patches/3.18.8/wlan-cf.patch index fc20759e2..fc20759e2 100644 --- a/target/linux/patches/3.18.6/wlan-cf.patch +++ b/target/linux/patches/3.18.8/wlan-cf.patch diff --git a/target/linux/patches/3.18.6/xargs.patch b/target/linux/patches/3.18.8/xargs.patch index 2c7b3df59..2c7b3df59 100644 --- a/target/linux/patches/3.18.6/xargs.patch +++ b/target/linux/patches/3.18.8/xargs.patch diff --git a/target/m68k/qemu-m68k/patches/3.18.6/m68k-coldfire-fec.patch b/target/m68k/qemu-m68k/patches/3.18.8/m68k-coldfire-fec.patch index ceaa21ce6..ceaa21ce6 100644 --- a/target/m68k/qemu-m68k/patches/3.18.6/m68k-coldfire-fec.patch +++ b/target/m68k/qemu-m68k/patches/3.18.8/m68k-coldfire-fec.patch diff --git a/target/m68k/qemu-m68k/patches/3.18.6/qemu-coldfire.patch b/target/m68k/qemu-m68k/patches/3.18.8/qemu-coldfire.patch index 14d2f610b..14d2f610b 100644 --- a/target/m68k/qemu-m68k/patches/3.18.6/qemu-coldfire.patch +++ b/target/m68k/qemu-m68k/patches/3.18.8/qemu-coldfire.patch diff --git a/target/mips64/lemote-yeelong/patches/3.18.6/sm7xx-fb.patch b/target/mips64/lemote-yeelong/patches/3.18.8/sm7xx-fb.patch index bcdec83cf..bcdec83cf 100644 --- a/target/mips64/lemote-yeelong/patches/3.18.6/sm7xx-fb.patch +++ b/target/mips64/lemote-yeelong/patches/3.18.8/sm7xx-fb.patch diff --git a/target/ppc/Makefile b/target/ppc/Makefile index e1df1ef29..9a5529642 100644 --- a/target/ppc/Makefile +++ b/target/ppc/Makefile @@ -71,7 +71,7 @@ kernel-install: kernel-strip @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL} dtb-install: - env $(KERNEL_MAKE_ENV) $(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKE_OPTS) \ + env $(KERNEL_MAKE_ENV) $(MAKE) $(KERNEL_MAKE_OPTS) \ -j${ADK_MAKE_JOBS} virtex440-ml507.dtb $(MAKE_TRACE) $(CP) $(LINUX_DIR)/arch/powerpc/boot/virtex440-ml507.dtb \ $(FW_DIR)/ppc.dtb diff --git a/toolchain/Makefile b/toolchain/Makefile index 23f206ee7..e06e58de9 100644 --- a/toolchain/Makefile +++ b/toolchain/Makefile @@ -44,6 +44,9 @@ ifeq ($(ADK_TARGET_ARCH_ARC),) TARGETS+=gdb GDB:=gdb-install endif +ifeq (${ADK_PRELINK},y) +TARGETS+=prelink-cross +endif DOWNLOAD:=kernel-headers-download $(patsubst %,%-download,$(TARGETS)) TARGETS_INSTALL:=$(patsubst %,%-install,$(TARGETS)) diff --git a/toolchain/elf2flt/Makefile.inc b/toolchain/elf2flt/Makefile.inc index a3f39ab52..029237679 100644 --- a/toolchain/elf2flt/Makefile.inc +++ b/toolchain/elf2flt/Makefile.inc @@ -2,7 +2,7 @@ # material, please see the LICENCE file in the top-level directory. PKG_NAME:= elf2flt -PKG_VERSION:= 20150129 +PKG_VERSION:= 20150227 PKG_RELEASE:= 1 -PKG_HASH:= b0b9792723f380794c44db4124815f961f2cb87be156d4e2f560759f9f9f913b +PKG_HASH:= 9369274cf244fc090ebee08ee6eee552fba1286f63be4a558dfa149dfa91fc4c PKG_SITES:= http://www.openadk.org/distfiles/ diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile index f38ba051a..65899a334 100644 --- a/toolchain/gcc/Makefile +++ b/toolchain/gcc/Makefile @@ -4,6 +4,7 @@ include $(ADK_TOPDIR)/rules.mk include ../rules.mk include Makefile.inc +include $(ADK_TOPDIR)/mk/os.mk # disable SSP for libstdc++ ifeq ($(ADK_TARGET_LIB_MUSL),y) @@ -182,6 +183,8 @@ endif $(SED) '/k prot/agcc_cv_libc_provides_ssp=yes' $(WRKBUILD)/gcc/configure cd $(GCC_BUILD_DIR_MINIMAL); \ PATH='$(TARGET_PATH)' \ + CC='$(HOST_CC)' \ + CXX='$(HOST_CXX)' \ CFLAGS="-O0 -g0 -fomit-frame-pointer" \ CXXFLAGS="-O0 -g0 -fomit-frame-pointer" \ $(WRKBUILD)/configure \ @@ -204,6 +207,8 @@ $(GCC_BUILD_DIR_INITIAL)/.configured: mkdir -p $(GCC_BUILD_DIR_INITIAL) cd $(GCC_BUILD_DIR_INITIAL); \ PATH='$(TARGET_PATH)' \ + CC='$(HOST_CC)' \ + CXX='$(HOST_CXX)' \ CFLAGS="-O0 -g0 -fomit-frame-pointer" \ CXXFLAGS="-O0 -g0 -fomit-frame-pointer" \ $(WRKBUILD)/configure \ @@ -227,6 +232,8 @@ $(GCC_BUILD_DIR_FINAL)/.configured: mkdir -p $(GCC_BUILD_DIR_FINAL) cd $(GCC_BUILD_DIR_FINAL); \ PATH='$(TARGET_PATH)' \ + CC='$(HOST_CC)' \ + CXX='$(HOST_CXX)' \ CFLAGS_FOR_TARGET='$(TARGET_CFLAGS)' \ CXXFLAGS_FOR_TARGET='$(TARGET_CXXFLAGS)' \ $(WRKBUILD)/configure \ diff --git a/toolchain/glibc/Makefile b/toolchain/glibc/Makefile index 1faf1e639..75d2e70e9 100644 --- a/toolchain/glibc/Makefile +++ b/toolchain/glibc/Makefile @@ -18,6 +18,7 @@ ifeq (${ADK_MAKE_PARALLEL},y) GLIBC_MAKEOPTS+= PARALLELMFLAGS="-j$(ADK_MAKE_JOBS)" endif + GLIBC_BUILD_DIR_INITIAL:= ${WRKDIR}/$(PKG_NAME)-$(PKG_VERSION)-headers GLIBC_BUILD_DIR_FINAL:= ${WRKDIR}/$(PKG_NAME)-$(PKG_VERSION)-final @@ -54,7 +55,7 @@ $(WRKBUILD)/.configured: touch $@ $(WRKBUILD)/.compiled: - ${GLIBC_ENV} $(MAKE) ${GLIBC_MAKEOPTS} -C $(GLIBC_BUILD_DIR_FINAL) all + ${GLIBC_ENV} $(MAKE) ${GLIBC_MAKEOPTS} asm-CPPFLAGS='$${CFLAGS}' -C $(GLIBC_BUILD_DIR_FINAL) all touch $@ $(WRKBUILD)/.installed: diff --git a/toolchain/glibc/Makefile.inc b/toolchain/glibc/Makefile.inc index f7e4c42b9..9ac7c711b 100644 --- a/toolchain/glibc/Makefile.inc +++ b/toolchain/glibc/Makefile.inc @@ -23,6 +23,7 @@ GLIBC_CONFOPTS:= --build=$(GNU_HOST_NAME) \ --host=$(GNU_TARGET_NAME) \ --with-headers=$(STAGING_TARGET_DIR)/usr/include \ --disable-sanity-checks \ + --disable-werror \ --disable-nls \ --without-cvs \ --disable-profile \ diff --git a/toolchain/kernel-headers/Makefile b/toolchain/kernel-headers/Makefile index 1b28c151a..1d24d3853 100644 --- a/toolchain/kernel-headers/Makefile +++ b/toolchain/kernel-headers/Makefile @@ -5,9 +5,14 @@ include $(ADK_TOPDIR)/rules.mk include ../rules.mk include $(ADK_TOPDIR)/mk/kernel-ver.mk include $(ADK_TOPDIR)/mk/linux.mk -include $(ADK_TOPDIR)/mk/kernel-vars.mk include $(ADK_TOPDIR)/mk/buildhlp.mk +# override linux dir here, as build_bla_bla/linux does not exist yet +LINUX_DIR=${WRKBUILD} + +include $(ADK_TOPDIR)/mk/kernel-vars.mk + + $(TOOLCHAIN_BUILD_DIR)/w-$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)/linux-$(KERNEL_VERSION)/.patched: ifeq ($(ADK_TARGET_SYSTEM_PCENGINES_APU),y) ifeq ($(ADK_KERNEL_ROOT_NFS),y) @@ -60,8 +65,8 @@ endif touch $@ $(WRKBUILD)/.headers: $(TOOLCHAIN_BUILD_DIR)/w-$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)/linux-$(KERNEL_VERSION)/.patched - $(KERNEL_MAKE_ENV) $(MAKE) -C $(WRKBUILD) $(KERNEL_MAKE_OPTS) headers_check - $(KERNEL_MAKE_ENV) $(MAKE) -C $(WRKBUILD) $(KERNEL_MAKE_OPTS) \ + $(KERNEL_MAKE_ENV) $(MAKE) $(KERNEL_MAKE_OPTS) headers_check + $(KERNEL_MAKE_ENV) $(MAKE) $(KERNEL_MAKE_OPTS) \ INSTALL_HDR_PATH=$(STAGING_TARGET_DIR)/usr \ headers_install ifeq ($(ADK_TARGET_ARCH_CRIS),y) diff --git a/toolchain/prelink-cross/Config.in b/toolchain/prelink-cross/Config.in new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/toolchain/prelink-cross/Config.in @@ -0,0 +1 @@ + diff --git a/toolchain/prelink-cross/Makefile b/toolchain/prelink-cross/Makefile new file mode 100644 index 000000000..d1cc58c07 --- /dev/null +++ b/toolchain/prelink-cross/Makefile @@ -0,0 +1,34 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk +include ../rules.mk +include Makefile.inc +include ${ADK_TOPDIR}/mk/buildhlp.mk + +$(WRKBUILD)/.headers: +$(WRKBUILD)/.configured: + (cd $(WRKBUILD)/trunk; \ + ./configure \ + --prefix=$(STAGING_HOST_DIR) \ + --build=$(GNU_HOST_NAME) \ + --host=$(GNU_HOST_NAME) \ + --target=$(REAL_GNU_TARGET_NAME) \ + --disable-dependency-tracking \ + --disable-libtool-lock \ + --with-gnu-ld \ + ); + touch $@ + +$(WRKBUILD)/.compiled: + $(MAKE) -C $(WRKBUILD)/trunk CFLAGS="-fPIC ${CFLAGS_FOR_BUILD}" + touch $@ + +$(WRKBUILD)/.installed: + install -c ${WRKBUILD}/trunk/src/prelink \ + ${TARGET_CROSS}prelink + install -c ${WRKBUILD}/trunk/src/prelink-rtld \ + ${TARGET_CROSS}prelink-rtld + touch $@ + +include ${ADK_TOPDIR}/mk/toolchain.mk diff --git a/toolchain/prelink-cross/Makefile.inc b/toolchain/prelink-cross/Makefile.inc new file mode 100644 index 000000000..634a18b84 --- /dev/null +++ b/toolchain/prelink-cross/Makefile.inc @@ -0,0 +1,8 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +# this is branch cross_prelink_r185 in git +PKG_NAME:= prelink-cross +PKG_VERSION:= 909470ee441237563d6236c505cb2d02ddc48704 +PKG_RELEASE:= 1 +PKG_SITES:= git://git.yoctoproject.org/prelink-cross |