Date: Tue, 25 Feb 2014 19:31:30 +0000 (UTC) From: Mark Murray <markm@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r262492 - in projects/random_number_generator: . bin/sh contrib/libucl contrib/libyaml lib lib/libc/iconv lib/libiconv_modules/BIG5 lib/libiconv_modules/HZ lib/libiconv_modules/VIQR lib... Message-ID: <201402251931.s1PJVU8c077714@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: markm Date: Tue Feb 25 19:31:29 2014 New Revision: 262492 URL: http://svnweb.freebsd.org/changeset/base/262492 Log: MFC - tracking commit. Added: projects/random_number_generator/contrib/libucl/ - copied from r262490, head/contrib/libucl/ projects/random_number_generator/lib/libucl/ - copied from r262490, head/lib/libucl/ projects/random_number_generator/sys/arm/conf/QUARTZ - copied unchanged from r262490, head/sys/arm/conf/QUARTZ projects/random_number_generator/sys/arm/freescale/imx/imx6_mp.c - copied unchanged from r262490, head/sys/arm/freescale/imx/imx6_mp.c projects/random_number_generator/sys/boot/fdt/dts/vybrid-quartz.dts - copied unchanged from r262490, head/sys/boot/fdt/dts/vybrid-quartz.dts projects/random_number_generator/sys/boot/ficl/mips64/ - copied from r262490, head/sys/boot/ficl/mips64/ projects/random_number_generator/sys/dev/etherswitch/arswitch/arswitch_8327.c - copied unchanged from r262490, head/sys/dev/etherswitch/arswitch/arswitch_8327.c projects/random_number_generator/sys/dev/etherswitch/arswitch/arswitch_8327.h - copied unchanged from r262490, head/sys/dev/etherswitch/arswitch/arswitch_8327.h projects/random_number_generator/sys/dev/iwn/if_iwn_ioctl.h - copied unchanged from r262490, head/sys/dev/iwn/if_iwn_ioctl.h projects/random_number_generator/tools/tools/iwn/ - copied from r262490, head/tools/tools/iwn/ projects/random_number_generator/usr.sbin/pmcstat/pmcpl_annotate_cg.c - copied unchanged from r262490, head/usr.sbin/pmcstat/pmcpl_annotate_cg.c projects/random_number_generator/usr.sbin/pmcstat/pmcpl_annotate_cg.h - copied unchanged from r262490, head/usr.sbin/pmcstat/pmcpl_annotate_cg.h Deleted: projects/random_number_generator/contrib/libyaml/ projects/random_number_generator/lib/libyaml/ Modified: projects/random_number_generator/ObsoleteFiles.inc projects/random_number_generator/bin/sh/sh.1 projects/random_number_generator/lib/Makefile projects/random_number_generator/lib/libc/iconv/citrus_prop.c projects/random_number_generator/lib/libc/iconv/citrus_prop.h projects/random_number_generator/lib/libiconv_modules/BIG5/citrus_big5.c projects/random_number_generator/lib/libiconv_modules/HZ/citrus_hz.c projects/random_number_generator/lib/libiconv_modules/VIQR/citrus_viqr.c projects/random_number_generator/sbin/fsck_ffs/fsck.h projects/random_number_generator/sbin/fsck_ffs/fsutil.c projects/random_number_generator/share/man/man4/atp.4 projects/random_number_generator/share/man/man7/hier.7 projects/random_number_generator/share/mk/bsd.libnames.mk projects/random_number_generator/sys/arm/arm/cpufunc.c projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv4.S projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv6.S projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv7.S projects/random_number_generator/sys/arm/arm/locore.S projects/random_number_generator/sys/arm/arm/machdep.c projects/random_number_generator/sys/arm/arm/mp_machdep.c projects/random_number_generator/sys/arm/conf/IMX6 projects/random_number_generator/sys/arm/freescale/imx/files.imx6 projects/random_number_generator/sys/arm/freescale/imx/imx51_tzicreg.h projects/random_number_generator/sys/arm/freescale/imx/std.imx6 projects/random_number_generator/sys/arm/freescale/vybrid/vf_ccm.c projects/random_number_generator/sys/arm/freescale/vybrid/vf_iomuxc.c projects/random_number_generator/sys/arm/include/cpufunc.h projects/random_number_generator/sys/arm/include/smp.h projects/random_number_generator/sys/arm/mv/armadaxp/armadaxp_mp.c projects/random_number_generator/sys/arm/samsung/exynos/exynos5_mp.c projects/random_number_generator/sys/arm/ti/omap4/omap4_mp.c projects/random_number_generator/sys/arm/ti/twl/twl_vreg.c projects/random_number_generator/sys/boot/common/Makefile.inc projects/random_number_generator/sys/boot/fdt/Makefile projects/random_number_generator/sys/boot/fdt/dts/am335x.dtsi projects/random_number_generator/sys/boot/fdt/dts/beaglebone-black.dts projects/random_number_generator/sys/boot/fdt/dts/vybrid-colibri-vf50.dts projects/random_number_generator/sys/boot/fdt/dts/vybrid-cosmic.dts projects/random_number_generator/sys/boot/fdt/dts/vybrid.dtsi projects/random_number_generator/sys/boot/ficl/Makefile projects/random_number_generator/sys/boot/mips/Makefile projects/random_number_generator/sys/boot/userboot/userboot/Makefile projects/random_number_generator/sys/cddl/dev/systrace/systrace.c projects/random_number_generator/sys/conf/files projects/random_number_generator/sys/dev/etherswitch/arswitch/arswitch.c projects/random_number_generator/sys/dev/etherswitch/arswitch/arswitch_vlans.c projects/random_number_generator/sys/dev/etherswitch/arswitch/arswitch_vlans.h projects/random_number_generator/sys/dev/etherswitch/arswitch/arswitchvar.h projects/random_number_generator/sys/dev/iwn/if_iwn.c projects/random_number_generator/sys/dev/iwn/if_iwn_debug.h projects/random_number_generator/sys/dev/iwn/if_iwnreg.h projects/random_number_generator/sys/dev/iwn/if_iwnvar.h projects/random_number_generator/sys/dev/syscons/syscons.h projects/random_number_generator/sys/dev/usb/input/atp.c projects/random_number_generator/sys/dev/usb/input/wsp.c projects/random_number_generator/sys/dev/usb/wlan/if_run.c projects/random_number_generator/sys/dev/usb/wlan/if_runvar.h projects/random_number_generator/sys/mips/conf/DB120.hints projects/random_number_generator/sys/net/if_pfsync.h projects/random_number_generator/sys/netinet/icmp_var.h projects/random_number_generator/sys/netinet/igmp_var.h projects/random_number_generator/sys/netinet/in.h projects/random_number_generator/sys/netinet/pim_var.h projects/random_number_generator/sys/netinet/tcp_var.h projects/random_number_generator/sys/netinet/udp_var.h projects/random_number_generator/sys/netinet6/pim6_var.h projects/random_number_generator/sys/netipsec/ipsec.h projects/random_number_generator/sys/netipsec/key_var.h projects/random_number_generator/sys/sparc64/pci/fire.c projects/random_number_generator/sys/sparc64/sparc64/spitfire.c projects/random_number_generator/sys/sys/socket.h projects/random_number_generator/sys/sys/sysctl.h projects/random_number_generator/usr.bin/dtc/fdt.cc projects/random_number_generator/usr.bin/kdump/kdump.c projects/random_number_generator/usr.sbin/btxld/btxld.c projects/random_number_generator/usr.sbin/pkg/Makefile projects/random_number_generator/usr.sbin/pkg/config.c projects/random_number_generator/usr.sbin/pkg/pkg.c projects/random_number_generator/usr.sbin/pmcstat/Makefile projects/random_number_generator/usr.sbin/pmcstat/pmcstat.c projects/random_number_generator/usr.sbin/pmcstat/pmcstat.h projects/random_number_generator/usr.sbin/pmcstat/pmcstat_log.c Directory Properties: projects/random_number_generator/ (props changed) projects/random_number_generator/lib/libc/ (props changed) projects/random_number_generator/sbin/ (props changed) projects/random_number_generator/share/man/man4/ (props changed) projects/random_number_generator/sys/ (props changed) projects/random_number_generator/sys/boot/ (props changed) projects/random_number_generator/sys/conf/ (props changed) Modified: projects/random_number_generator/ObsoleteFiles.inc ============================================================================== --- projects/random_number_generator/ObsoleteFiles.inc Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/ObsoleteFiles.inc Tue Feb 25 19:31:29 2014 (r262492) @@ -38,6 +38,11 @@ # xargs -n1 | sort | uniq -d; # done +# 20140223: Remove libyaml +OLD_FILES+=usr/lib/private/libyaml.a +OLD_FILES+=usr/lib/private/libyaml.so +OLD_FILES+=usr/lib/private/libyaml.so.1 +OLD_FILES+=usr/lib/private/libyaml_p.a # 20140216: new clang import which bumps version from 3.3 to 3.4. OLD_FILES+=usr/bin/llvm-prof OLD_FILES+=usr/bin/llvm-ranlib Modified: projects/random_number_generator/bin/sh/sh.1 ============================================================================== --- projects/random_number_generator/bin/sh/sh.1 Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/bin/sh/sh.1 Tue Feb 25 19:31:29 2014 (r262492) @@ -40,14 +40,14 @@ .Nd command interpreter (shell) .Sh SYNOPSIS .Nm -.Op Fl /+abCEefIimnPpTuVvx +.Op Fl /+abCEefhIimnPpTuVvx .Op Fl /+o Ar longname .Oo .Ar script .Op Ar arg ... .Oc .Nm -.Op Fl /+abCEefIimnPpTuVvx +.Op Fl /+abCEefhIimnPpTuVvx .Op Fl /+o Ar longname .Fl c Ar string .Oo @@ -55,7 +55,7 @@ .Op Ar arg ... .Oc .Nm -.Op Fl /+abCEefIimnPpTuVvx +.Op Fl /+abCEefhIimnPpTuVvx .Op Fl /+o Ar longname .Fl s .Op Ar arg ... Modified: projects/random_number_generator/lib/Makefile ============================================================================== --- projects/random_number_generator/lib/Makefile Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/lib/Makefile Tue Feb 25 19:31:29 2014 (r262492) @@ -119,6 +119,7 @@ SUBDIR= ${SUBDIR_ORDERED} \ ${_libtelnet} \ ${_libthr} \ libthread_db \ + libucl \ libufs \ libugidfw \ libulog \ @@ -129,7 +130,6 @@ SUBDIR= ${SUBDIR_ORDERED} \ ${_libvmmapi} \ libwrap \ liby \ - libyaml \ libz \ ${_atf} \ ${_clang} \ Modified: projects/random_number_generator/lib/libc/iconv/citrus_prop.c ============================================================================== --- projects/random_number_generator/lib/libc/iconv/citrus_prop.c Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/lib/libc/iconv/citrus_prop.c Tue Feb 25 19:31:29 2014 (r262492) @@ -339,7 +339,7 @@ name_found: static int _citrus_prop_parse_element(struct _memstream * __restrict ms, - const _citrus_prop_hint_t * __restrict hints, void ** __restrict context) + const _citrus_prop_hint_t * __restrict hints, void * __restrict context) { int ch, errnum; #define _CITRUS_PROP_HINT_NAME_LEN_MAX 255 @@ -435,8 +435,7 @@ _citrus_prop_parse_variable(const _citru if (ch == EOF || ch == '\0') break; _memstream_ungetc(&ms, ch); - errnum = _citrus_prop_parse_element( - &ms, hints, (void ** __restrict)context); + errnum = _citrus_prop_parse_element(&ms, hints, context); if (errnum != 0) return (errnum); } Modified: projects/random_number_generator/lib/libc/iconv/citrus_prop.h ============================================================================== --- projects/random_number_generator/lib/libc/iconv/citrus_prop.h Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/lib/libc/iconv/citrus_prop.h Tue Feb 25 19:31:29 2014 (r262492) @@ -42,7 +42,7 @@ typedef struct _citrus_prop_hint_t _citr #define _CITRUS_PROP_CB0_T(_func_, _type_) \ typedef int (*_citrus_prop_##_func_##_cb_func_t) \ - (void ** __restrict, const char *, _type_); \ + (void * __restrict, const char *, _type_); \ typedef struct { \ _citrus_prop_##_func_##_cb_func_t func; \ } _citrus_prop_##_func_##_cb_t; @@ -52,7 +52,7 @@ _CITRUS_PROP_CB0_T(str, const char *) #define _CITRUS_PROP_CB1_T(_func_, _type_) \ typedef int (*_citrus_prop_##_func_##_cb_func_t) \ - (void ** __restrict, const char *, _type_, _type_); \ + (void * __restrict, const char *, _type_, _type_); \ typedef struct { \ _citrus_prop_##_func_##_cb_func_t func; \ } _citrus_prop_##_func_##_cb_t; Modified: projects/random_number_generator/lib/libiconv_modules/BIG5/citrus_big5.c ============================================================================== --- projects/random_number_generator/lib/libiconv_modules/BIG5/citrus_big5.c Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/lib/libiconv_modules/BIG5/citrus_big5.c Tue Feb 25 19:31:29 2014 (r262492) @@ -172,7 +172,7 @@ _citrus_BIG5_check_excludes(_BIG5Encodin } static int -_citrus_BIG5_fill_rowcol(void ** __restrict ctx, const char * __restrict s, +_citrus_BIG5_fill_rowcol(void * __restrict ctx, const char * __restrict s, uint64_t start, uint64_t end) { _BIG5EncodingInfo *ei; @@ -191,7 +191,7 @@ _citrus_BIG5_fill_rowcol(void ** __restr static int /*ARGSUSED*/ -_citrus_BIG5_fill_excludes(void ** __restrict ctx, +_citrus_BIG5_fill_excludes(void * __restrict ctx, const char * __restrict s __unused, uint64_t start, uint64_t end) { _BIG5EncodingInfo *ei; @@ -237,7 +237,6 @@ static int _citrus_BIG5_encoding_module_init(_BIG5EncodingInfo * __restrict ei, const void * __restrict var, size_t lenvar) { - void *ctx = (void *)ei; const char *s; int err; @@ -259,9 +258,9 @@ _citrus_BIG5_encoding_module_init(_BIG5E } /* fallback Big5-1984, for backward compatibility. */ - _citrus_BIG5_fill_rowcol((void **)&ctx, "row", 0xA1, 0xFE); - _citrus_BIG5_fill_rowcol((void **)&ctx, "col", 0x40, 0x7E); - _citrus_BIG5_fill_rowcol((void **)&ctx, "col", 0xA1, 0xFE); + _citrus_BIG5_fill_rowcol(ei, "row", 0xA1, 0xFE); + _citrus_BIG5_fill_rowcol(ei, "col", 0x40, 0x7E); + _citrus_BIG5_fill_rowcol(ei, "col", 0xA1, 0xFE); return (0); } Modified: projects/random_number_generator/lib/libiconv_modules/HZ/citrus_hz.c ============================================================================== --- projects/random_number_generator/lib/libiconv_modules/HZ/citrus_hz.c Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/lib/libiconv_modules/HZ/citrus_hz.c Tue Feb 25 19:31:29 2014 (r262492) @@ -65,8 +65,8 @@ typedef enum { } charset_t; typedef struct { - int end; int start; + int end; int width; } range_t; @@ -505,12 +505,12 @@ _citrus_HZ_encoding_module_uninit(_HZEnc } static int -_citrus_HZ_parse_char(void **context, const char *name __unused, const char *s) +_citrus_HZ_parse_char(void *context, const char *name __unused, const char *s) { escape_t *escape; void **p; - p = (void **)*context; + p = (void **)context; escape = (escape_t *)p[0]; if (escape->ch != '\0') return (EINVAL); @@ -522,14 +522,14 @@ _citrus_HZ_parse_char(void **context, co } static int -_citrus_HZ_parse_graphic(void **context, const char *name, const char *s) +_citrus_HZ_parse_graphic(void *context, const char *name, const char *s) { _HZEncodingInfo *ei; escape_t *escape; graphic_t *graphic; void **p; - p = (void **)*context; + p = (void **)context; escape = (escape_t *)p[0]; ei = (_HZEncodingInfo *)p[1]; graphic = malloc(sizeof(*graphic)); @@ -591,13 +591,13 @@ _CITRUS_PROP_HINT_END }; static int -_citrus_HZ_parse_escape(void **context, const char *name, const char *s) +_citrus_HZ_parse_escape(void *context, const char *name, const char *s) { _HZEncodingInfo *ei; escape_t *escape; void *p[2]; - ei = (_HZEncodingInfo *)*context; + ei = (_HZEncodingInfo *)context; escape = malloc(sizeof(*escape)); if (escape == NULL) return (EINVAL); Modified: projects/random_number_generator/lib/libiconv_modules/VIQR/citrus_viqr.c ============================================================================== --- projects/random_number_generator/lib/libiconv_modules/VIQR/citrus_viqr.c Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/lib/libiconv_modules/VIQR/citrus_viqr.c Tue Feb 25 19:31:29 2014 (r262492) @@ -433,7 +433,6 @@ static int _citrus_VIQR_encoding_module_init(_VIQREncodingInfo * __restrict ei, const void * __restrict var __unused, size_t lenvar __unused) { - const mnemonic_def_t *p; const char *s; size_t i, n; int errnum; @@ -457,7 +456,10 @@ _citrus_VIQR_encoding_module_init(_VIQRE return (errnum); } } - for (i = 0;; ++i) { +#if mnemonic_ext_size > 0 + for (i = 0; i < mnemonic_ext_size; ++i) { + const mnemonic_def_t *p; + p = &mnemonic_ext[i]; n = strlen(p->name); if (ei->mb_cur_max < n) @@ -469,6 +471,7 @@ _citrus_VIQR_encoding_module_init(_VIQRE return (errnum); } } +#endif return (0); } Modified: projects/random_number_generator/sbin/fsck_ffs/fsck.h ============================================================================== --- projects/random_number_generator/sbin/fsck_ffs/fsck.h Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sbin/fsck_ffs/fsck.h Tue Feb 25 19:31:29 2014 (r262492) @@ -369,7 +369,7 @@ int flushentry(void); * to get space. */ static inline void* -Malloc(int size) +Malloc(size_t size) { void *retval; @@ -384,7 +384,7 @@ Malloc(int size) * to get space. */ static inline void* -Calloc(int cnt, int size) +Calloc(size_t cnt, size_t size) { void *retval; Modified: projects/random_number_generator/sbin/fsck_ffs/fsutil.c ============================================================================== --- projects/random_number_generator/sbin/fsck_ffs/fsutil.c Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sbin/fsck_ffs/fsutil.c Tue Feb 25 19:31:29 2014 (r262492) @@ -225,7 +225,7 @@ cgget(int cg) struct cg *cgp; if (cgbufs == NULL) { - cgbufs = Calloc(sblock.fs_ncg, sizeof(struct bufarea)); + cgbufs = calloc(sblock.fs_ncg, sizeof(struct bufarea)); if (cgbufs == NULL) errx(EEXIT, "cannot allocate cylinder group buffers"); } @@ -254,6 +254,8 @@ flushentry(void) { struct bufarea *cgbp; + if (flushtries == sblock.fs_ncg || cgbufs == NULL) + return (0); cgbp = &cgbufs[flushtries++]; if (cgbp->b_un.b_cg == NULL) return (0); Modified: projects/random_number_generator/share/man/man4/atp.4 ============================================================================== --- projects/random_number_generator/share/man/man4/atp.4 Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/share/man/man4/atp.4 Tue Feb 25 19:31:29 2014 (r262492) @@ -1,4 +1,4 @@ -.\" Copyright (c) 2009 Rohit Grover <rgrover1 at gmail dot com>. +.\" Copyright (c) 2014 Rohit Grover <rgrover1 at gmail dot com>. .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 7, 2014 +.Dd February 24, 2014 .Dt ATP 4 .Os .Sh NAME @@ -41,8 +41,7 @@ your kernel configuration file: .Cd "device usb" .Ed .Pp -Alternatively, to load the driver as a -module at boot time, place the following line in +Alternatively, to load the driver as a module at boot time, place the following line in .Xr loader.conf 5 : .Bd -literal -offset indent atp_load="YES" @@ -50,24 +49,21 @@ atp_load="YES" .Sh DESCRIPTION The .Nm -driver provides support for the Apple Internal Trackpad -device found in many Apple laptops. +driver provides support for the Apple Internal Trackpad device found in many +Apple laptops. Older (Fountain/Geyser) and the newer (Wellspring) trackpad +families are all supported through a unified driver. +.Pp +The driver simulates a three\-button mouse using multi\-finger tap detection. +Single finger tap generates a left\-button click; two\-finger tap maps to the +middle button; whereas a three\-finger tap gets treated as a right button +click. +.Pp +There is support for 2\-finger horizontal scrolling, which translates to +page\-back/forward events; vertical multi\-finger scrolling emulates the mouse +wheel. .Pp -The driver simulates a three\-button mouse using multi\-finger tap -detection. -. -A single\-finger tap generates a left button click; -two\-finger tap maps to the middle button; whereas a three\-finger tap -gets treated as a right button click. -. A double\-tap followed by a drag is treated as a selection gesture; a virtual left\-button click is assumed for the lifespan of the drag. -. -.Nm -attempts to filter away activity at the horizontal edges of the -trackpad\-\-this is to keep unintentional palm movement from being -considered as user input. -. .Pp .Nm supports dynamic reconfiguration using @@ -76,6 +72,28 @@ through nodes under .Nm hw.usb.atp . Pointer sensitivity can be controlled using the sysctl tunable .Nm hw.usb.atp.scale_factor . +Smaller values of +.Fa scale_factor +result in faster movement. +. +A simple high-pass filter is used to reduce contributions +from small movements; the threshold for this filter may be controlled by +.Nm hw.usb.atp.small_movement . +. +The maximum tolerable duration of a touch gesture is controlled by +.Nm hw.usb.atp.touch_timeout +(in microseconds); beyond this period, touches are considered to be slides. +(This conversion also happens when a finger stroke accumulates at least +.Nm hw.usb.atp.slide_min_movement +movement (in mickeys). +. +The maximum time (in microseconds) to allow an association between a double- +tap and drag gesture may be controlled by +.Nm hw.usb.atp.double_tap_threshold . +. +Should one want to disable tap detection and rely only upon physical button +presses, set the following sysctl to a value of 2 +.Nm hw.usb.atp.tap_minimum . . .Sh HARDWARE The @@ -84,6 +102,8 @@ driver provides support for the followin .Pp .Bl -bullet -compact .It +PowerBooks, iBooks (IDs: 0x020e, 0x020f, 0x0210, 0x0214, 0x0215, 0x0216) +.It Core Duo MacBook & MacBook Pro (IDs: 0x0217, 0x0218, 0x0219) .It Core2 Duo MacBook & MacBook Pro (IDs: 0x021a, 0x021b, 0x021c) @@ -95,6 +115,14 @@ Core2 Duo MacBook3,1 (IDs: 0x0229, 0x022 15 inch PowerBook (IDs: 0x020e, 0x020f, 0x0215) .It 17 inch PowerBook (ID: 0x020d) +.It +Almost all recent Macbook-Pros and Airs (IDs: 0x0223, 0x0223, 0x0224, 0x0224, +0x0225, 0x0225, 0x0230, 0x0230, 0x0231, 0x0231, 0x0232, 0x0232, 0x0236, +0x0236, 0x0237, 0x0237, 0x0238, 0x0238, 0x023f, 0x023f, 0x0240, 0x0241, +0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247, 0x0249, 0x024a, 0x024b, +0x024c, 0x024d, 0x024e, 0x0252, 0x0252, 0x0253, 0x0253, 0x0254, 0x0254, +0x0259, 0x025a, 0x025b, 0x0262, 0x0262, 0x0263, 0x0264, 0x0290, 0x0291, +0x0292) .El .Pp To discover the product\-id of a touchpad, search for 'Trackpad' in the Modified: projects/random_number_generator/share/man/man7/hier.7 ============================================================================== --- projects/random_number_generator/share/man/man7/hier.7 Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/share/man/man7/hier.7 Tue Feb 25 19:31:29 2014 (r262492) @@ -383,6 +383,9 @@ a.out backward compatibility libraries DTrace library scripts .It Pa engines/ OpenSSL (Cryptography/SSL toolkit) dynamically loadable engines +.It Pa private/ +Private system libraries not for use by third-party programs. +ABI and API stability are not guaranteed. .El .Pp .It Pa libdata/ Modified: projects/random_number_generator/share/mk/bsd.libnames.mk ============================================================================== --- projects/random_number_generator/share/mk/bsd.libnames.mk Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/share/mk/bsd.libnames.mk Tue Feb 25 19:31:29 2014 (r262492) @@ -151,6 +151,7 @@ LIBTACPLUS?= ${DESTDIR}${LIBDIR}/libtacp LIBTERMCAP?= ${DESTDIR}${LIBDIR}/libtermcap.a LIBTERMLIB?= "don't use LIBTERMLIB, use LIBTERMCAP" LIBTINFO?= "don't use LIBTINFO, use LIBNCURSES" +LIBUCL?= ${DESTDIR}${LIBPRIVATEDIR}/libucl.a LIBUFS?= ${DESTDIR}${LIBDIR}/libufs.a LIBUGIDFW?= ${DESTDIR}${LIBDIR}/libugidfw.a LIBUMEM?= ${DESTDIR}${LIBDIR}/libumem.a @@ -168,7 +169,6 @@ LIBWIND?= ${DESTDIR}${LIBDIR}/libwind.a LIBWRAP?= ${DESTDIR}${LIBDIR}/libwrap.a LIBXPG4?= ${DESTDIR}${LIBDIR}/libxpg4.a LIBY?= ${DESTDIR}${LIBDIR}/liby.a -LIBYAML?= ${DESTDIR}${LIBPRIVATEDIR}/libyaml.a LIBYPCLNT?= ${DESTDIR}${LIBDIR}/libypclnt.a LIBZ?= ${DESTDIR}${LIBDIR}/libz.a LIBZFS?= ${DESTDIR}${LIBDIR}/libzfs.a Modified: projects/random_number_generator/sys/arm/arm/cpufunc.c ============================================================================== --- projects/random_number_generator/sys/arm/arm/cpufunc.c Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/arm/cpufunc.c Tue Feb 25 19:31:29 2014 (r262492) @@ -146,6 +146,7 @@ struct cpu_functions arm7tdmi_cpufuncs = (void *)arm7tdmi_cache_flushID, /* dcache_inv_range */ (void *)cpufunc_nullop, /* dcache_wb_range */ + cpufunc_nullop, /* idcache_inv_all */ arm7tdmi_cache_flushID, /* idcache_wbinv_all */ (void *)arm7tdmi_cache_flushID, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ @@ -208,6 +209,7 @@ struct cpu_functions arm8_cpufuncs = { /*XXX*/ (void *)arm8_cache_purgeID, /* dcache_inv_range */ (void *)arm8_cache_cleanID, /* dcache_wb_range */ + cpufunc_nullop, /* idcache_inv_all */ arm8_cache_purgeID, /* idcache_wbinv_all */ (void *)arm8_cache_purgeID, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ @@ -269,6 +271,7 @@ struct cpu_functions arm9_cpufuncs = { arm9_dcache_inv_range, /* dcache_inv_range */ arm9_dcache_wb_range, /* dcache_wb_range */ + armv4_idcache_inv_all, /* idcache_inv_all */ arm9_idcache_wbinv_all, /* idcache_wbinv_all */ arm9_idcache_wbinv_range, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ @@ -331,6 +334,7 @@ struct cpu_functions armv5_ec_cpufuncs = armv5_ec_dcache_inv_range, /* dcache_inv_range */ armv5_ec_dcache_wb_range, /* dcache_wb_range */ + armv4_idcache_inv_all, /* idcache_inv_all */ armv5_ec_idcache_wbinv_all, /* idcache_wbinv_all */ armv5_ec_idcache_wbinv_range, /* idcache_wbinv_range */ @@ -392,6 +396,7 @@ struct cpu_functions sheeva_cpufuncs = { sheeva_dcache_inv_range, /* dcache_inv_range */ sheeva_dcache_wb_range, /* dcache_wb_range */ + armv4_idcache_inv_all, /* idcache_inv_all */ armv5_ec_idcache_wbinv_all, /* idcache_wbinv_all */ sheeva_idcache_wbinv_range, /* idcache_wbinv_all */ @@ -454,6 +459,7 @@ struct cpu_functions arm10_cpufuncs = { arm10_dcache_inv_range, /* dcache_inv_range */ arm10_dcache_wb_range, /* dcache_wb_range */ + armv4_idcache_inv_all, /* idcache_inv_all */ arm10_idcache_wbinv_all, /* idcache_wbinv_all */ arm10_idcache_wbinv_range, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ @@ -515,6 +521,7 @@ struct cpu_functions pj4bv7_cpufuncs = { armv7_dcache_inv_range, /* dcache_inv_range */ armv7_dcache_wb_range, /* dcache_wb_range */ + armv7_idcache_inv_all, /* idcache_inv_all */ armv7_idcache_wbinv_all, /* idcache_wbinv_all */ armv7_idcache_wbinv_range, /* idcache_wbinv_all */ @@ -577,6 +584,7 @@ struct cpu_functions sa110_cpufuncs = { /*XXX*/ sa1_cache_purgeD_rng, /* dcache_inv_range */ sa1_cache_cleanD_rng, /* dcache_wb_range */ + sa1_cache_flushID, /* idcache_inv_all */ sa1_cache_purgeID, /* idcache_wbinv_all */ sa1_cache_purgeID_rng, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ @@ -638,6 +646,7 @@ struct cpu_functions sa11x0_cpufuncs = { /*XXX*/ sa1_cache_purgeD_rng, /* dcache_inv_range */ sa1_cache_cleanD_rng, /* dcache_wb_range */ + sa1_cache_flushID, /* idcache_inv_all */ sa1_cache_purgeID, /* idcache_wbinv_all */ sa1_cache_purgeID_rng, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ @@ -699,6 +708,7 @@ struct cpu_functions ixp12x0_cpufuncs = /*XXX*/ sa1_cache_purgeD_rng, /* dcache_inv_range */ sa1_cache_cleanD_rng, /* dcache_wb_range */ + sa1_cache_flushID, /* idcache_inv_all */ sa1_cache_purgeID, /* idcache_wbinv_all */ sa1_cache_purgeID_rng, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ @@ -763,6 +773,7 @@ struct cpu_functions xscale_cpufuncs = { xscale_cache_flushD_rng, /* dcache_inv_range */ xscale_cache_cleanD_rng, /* dcache_wb_range */ + xscale_cache_flushID, /* idcache_inv_all */ xscale_cache_purgeID, /* idcache_wbinv_all */ xscale_cache_purgeID_rng, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ @@ -826,6 +837,7 @@ struct cpu_functions xscalec3_cpufuncs = xscale_cache_flushD_rng, /* dcache_inv_range */ xscalec3_cache_cleanD_rng, /* dcache_wb_range */ + xscale_cache_flushID, /* idcache_inv_all */ xscalec3_cache_purgeID, /* idcache_wbinv_all */ xscalec3_cache_purgeID_rng, /* idcache_wbinv_range */ xscalec3_l2cache_purge, /* l2cache_wbinv_all */ @@ -888,6 +900,7 @@ struct cpu_functions fa526_cpufuncs = { fa526_dcache_inv_range, /* dcache_inv_range */ fa526_dcache_wb_range, /* dcache_wb_range */ + armv4_idcache_inv_all, /* idcache_inv_all */ fa526_idcache_wbinv_all, /* idcache_wbinv_all */ fa526_idcache_wbinv_range, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ @@ -949,6 +962,7 @@ struct cpu_functions arm1136_cpufuncs = armv6_dcache_inv_range, /* dcache_inv_range */ armv6_dcache_wb_range, /* dcache_wb_range */ + armv6_idcache_inv_all, /* idcache_inv_all */ arm11x6_idcache_wbinv_all, /* idcache_wbinv_all */ arm11x6_idcache_wbinv_range, /* idcache_wbinv_range */ @@ -1010,6 +1024,7 @@ struct cpu_functions arm1176_cpufuncs = armv6_dcache_inv_range, /* dcache_inv_range */ armv6_dcache_wb_range, /* dcache_wb_range */ + armv6_idcache_inv_all, /* idcache_inv_all */ arm11x6_idcache_wbinv_all, /* idcache_wbinv_all */ arm11x6_idcache_wbinv_range, /* idcache_wbinv_range */ @@ -1072,6 +1087,7 @@ struct cpu_functions cortexa_cpufuncs = armv7_dcache_inv_range, /* dcache_inv_range */ armv7_dcache_wb_range, /* dcache_wb_range */ + armv7_idcache_inv_all, /* idcache_inv_all */ armv7_idcache_wbinv_all, /* idcache_wbinv_all */ armv7_idcache_wbinv_range, /* idcache_wbinv_range */ Modified: projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv4.S ============================================================================== --- projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv4.S Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv4.S Tue Feb 25 19:31:29 2014 (r262492) @@ -71,3 +71,9 @@ ENTRY(armv4_drain_writebuf) RET END(armv4_drain_writebuf) +ENTRY(armv4_idcache_inv_all) + mov r0, #0 + mcr p15, 0, r0, c7, c7, 0 /* invalidate all I+D cache */ + RET +END(armv4_drain_writebuf) + Modified: projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv6.S ============================================================================== --- projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv6.S Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv6.S Tue Feb 25 19:31:29 2014 (r262492) @@ -148,3 +148,9 @@ ENTRY(armv6_dcache_wbinv_all) END(armv6_idcache_wbinv_all) END(armv6_dcache_wbinv_all) +ENTRY(armv6_idcache_inv_all) + mov r0, #0 + mcr p15, 0, r0, c7, c7, 0 /* invalidate all I+D cache */ + RET +END(armv6_idcache_inv_all) + Modified: projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv7.S ============================================================================== --- projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv7.S Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/arm/cpufunc_asm_armv7.S Tue Feb 25 19:31:29 2014 (r262492) @@ -1,4 +1,5 @@ /*- + * Copyright (c) 2010 Per Odlund <per.odlund@armagedon.se> * Copyright (C) 2011 MARVELL INTERNATIONAL LTD. * All rights reserved. * @@ -305,3 +306,40 @@ ENTRY(armv7_auxctrl) RET END(armv7_auxctrl) +ENTRY(armv7_idcache_inv_all) + mov r0, #0 + mcr p15, 2, r0, c0, c0, 0 @ set cache level to L1 + mrc p15, 1, r0, c0, c0, 0 @ read CCSIDR + + ubfx r2, r0, #13, #15 @ get num sets - 1 from CCSIDR + ubfx r3, r0, #3, #10 @ get numways - 1 from CCSIDR + clz r1, r3 @ number of bits to MSB of way + lsl r3, r3, r1 @ shift into position + mov ip, #1 @ + lsl ip, ip, r1 @ ip now contains the way decr + + ubfx r0, r0, #0, #3 @ get linesize from CCSIDR + add r0, r0, #4 @ apply bias + lsl r2, r2, r0 @ shift sets by log2(linesize) + add r3, r3, r2 @ merge numsets - 1 with numways - 1 + sub ip, ip, r2 @ subtract numsets - 1 from way decr + mov r1, #1 + lsl r1, r1, r0 @ r1 now contains the set decr + mov r2, ip @ r2 now contains set way decr + + /* r3 = ways/sets, r2 = way decr, r1 = set decr, r0 and ip are free */ +1: mcr p15, 0, r3, c7, c6, 2 @ invalidate line + movs r0, r3 @ get current way/set + beq 2f @ at 0 means we are done. + movs r0, r0, lsl #10 @ clear way bits leaving only set bits + subne r3, r3, r1 @ non-zero?, decrement set # + subeq r3, r3, r2 @ zero?, decrement way # and restore set count + b 1b + +2: dsb @ wait for stores to finish + mov r0, #0 @ and ... + mcr p15, 0, r0, c7, c5, 0 @ invalidate instruction+branch cache + isb @ instruction sync barrier + bx lr @ return +END(armv7_l1cache_inv_all) + Modified: projects/random_number_generator/sys/arm/arm/locore.S ============================================================================== --- projects/random_number_generator/sys/arm/arm/locore.S Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/arm/locore.S Tue Feb 25 19:31:29 2014 (r262492) @@ -425,7 +425,7 @@ Ltag: orr r0, r0, #PHYSADDR ldr r0, [r0] #if defined(SMP) - orr r0, r0, #0 /* Set TTB shared memory flag */ + orr r0, r0, #2 /* Set TTB shared memory flag */ #endif mcr p15, 0, r0, c2, c0, 0 /* Set TTB */ mcr p15, 0, r0, c8, c7, 0 /* Flush TLB */ Modified: projects/random_number_generator/sys/arm/arm/machdep.c ============================================================================== --- projects/random_number_generator/sys/arm/arm/machdep.c Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/arm/machdep.c Tue Feb 25 19:31:29 2014 (r262492) @@ -410,7 +410,11 @@ cpu_flush_dcache(void *ptr, size_t len) { cpu_dcache_wb_range((uintptr_t)ptr, len); +#ifdef ARM_L2_PIPT + cpu_l2cache_wb_range((uintptr_t)vtophys(ptr), len); +#else cpu_l2cache_wb_range((uintptr_t)ptr, len); +#endif } /* Get current clock frequency for the given cpu id. */ Modified: projects/random_number_generator/sys/arm/arm/mp_machdep.c ============================================================================== --- projects/random_number_generator/sys/arm/arm/mp_machdep.c Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/arm/mp_machdep.c Tue Feb 25 19:31:29 2014 (r262492) @@ -128,10 +128,10 @@ cpu_mp_start(void) bzero((void *)temp_pagetable_va, L1_TABLE_SIZE); for (addr = arm_physmem_kernaddr; addr <= addr_end; addr += L1_S_SIZE) { ((int *)(temp_pagetable_va))[addr >> L1_S_SHIFT] = - L1_TYPE_S|L1_SHARED|L1_S_C|L1_S_AP(AP_KRW)|L1_S_DOM(PMAP_DOMAIN_KERNEL)|addr; + L1_TYPE_S|L1_SHARED|L1_S_C|L1_S_B|L1_S_AP(AP_KRW)|L1_S_DOM(PMAP_DOMAIN_KERNEL)|addr; ((int *)(temp_pagetable_va))[(addr - arm_physmem_kernaddr + KERNVIRTADDR) >> L1_S_SHIFT] = - L1_TYPE_S|L1_SHARED|L1_S_C|L1_S_AP(AP_KRW)|L1_S_DOM(PMAP_DOMAIN_KERNEL)|addr; + L1_TYPE_S|L1_SHARED|L1_S_C|L1_S_B|L1_S_AP(AP_KRW)|L1_S_DOM(PMAP_DOMAIN_KERNEL)|addr; } #if defined(CPU_MV_PJ4B) @@ -173,6 +173,8 @@ init_secondary(int cpu) uint32_t loop_counter; int start = 0, end = 0; + cpu_idcache_inv_all(); + cpu_setup(NULL); setttb(pmap_pa); cpu_tlb_flushID(); Modified: projects/random_number_generator/sys/arm/conf/IMX6 ============================================================================== --- projects/random_number_generator/sys/arm/conf/IMX6 Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/conf/IMX6 Tue Feb 25 19:31:29 2014 (r262492) @@ -17,6 +17,7 @@ # # $FreeBSD$ +ident IMX6 include "../freescale/imx/std.imx6" options HZ=250 # Scheduling quantum is 4 milliseconds. Copied: projects/random_number_generator/sys/arm/conf/QUARTZ (from r262490, head/sys/arm/conf/QUARTZ) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/random_number_generator/sys/arm/conf/QUARTZ Tue Feb 25 19:31:29 2014 (r262492, copy of r262490, head/sys/arm/conf/QUARTZ) @@ -0,0 +1,26 @@ +# Kernel configuration for Device Solutions Quartz Module. +# +# For more information on this file, please read the config(5) manual page, +# and/or the handbook section on Kernel Configuration Files: +# +# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html +# +# The handbook is also available locally in /usr/share/doc/handbook +# if you've installed the doc distribution, otherwise always see the +# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the +# latest information. +# +# An exhaustive list of options and more detailed explanations of the +# device lines is also present in the ../../conf/NOTES and NOTES files. +# If you are in doubt as to the purpose or necessity of a line, check first +# in NOTES. +# +# $FreeBSD$ + +include "VYBRID.common" +ident QUARTZ + +#FDT +options FDT +options FDT_DTB_STATIC +makeoptions FDT_DTS_FILE=vybrid-quartz.dts Modified: projects/random_number_generator/sys/arm/freescale/imx/files.imx6 ============================================================================== --- projects/random_number_generator/sys/arm/freescale/imx/files.imx6 Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/freescale/imx/files.imx6 Tue Feb 25 19:31:29 2014 (r262492) @@ -22,6 +22,7 @@ arm/freescale/imx/common.c standard arm/freescale/imx/imx6_anatop.c standard arm/freescale/imx/imx6_ccm.c standard arm/freescale/imx/imx6_machdep.c standard +arm/freescale/imx/imx6_mp.c optional smp arm/freescale/imx/imx6_pl310.c standard arm/freescale/imx/imx_machdep.c standard arm/freescale/imx/imx_gpt.c standard Modified: projects/random_number_generator/sys/arm/freescale/imx/imx51_tzicreg.h ============================================================================== --- projects/random_number_generator/sys/arm/freescale/imx/imx51_tzicreg.h Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/freescale/imx/imx51_tzicreg.h Tue Feb 25 19:31:29 2014 (r262492) @@ -57,7 +57,7 @@ */ #ifndef _IMX51_TZICREG_H_ -#define _IMX51_TZICRREG_H_ +#define _IMX51_TZICREG_H_ #include <sys/cdefs.h> Copied: projects/random_number_generator/sys/arm/freescale/imx/imx6_mp.c (from r262490, head/sys/arm/freescale/imx/imx6_mp.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/random_number_generator/sys/arm/freescale/imx/imx6_mp.c Tue Feb 25 19:31:29 2014 (r262492, copy of r262490, head/sys/arm/freescale/imx/imx6_mp.c) @@ -0,0 +1,170 @@ +/*- + * Copyright (c) 2014 Juergen Weiss <weiss@uni-mainz.de> + * Copyright (c) 2014 Ian Lepore <ian@freebsd.org> + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/smp.h> + +#include <machine/smp.h> +#include <machine/fdt.h> +#include <machine/intr.h> + +#define SCU_PHYSBASE 0x00a00000 +#define SCU_SIZE 0x00001000 + +#define SCU_CONTROL_REG 0x00 +#define SCU_CONTROL_ENABLE (1 << 0) +#define SCU_CONFIG_REG 0x04 +#define SCU_CONFIG_REG_NCPU_MASK 0x03 +#define SCU_CPUPOWER_REG 0x08 +#define SCU_INV_TAGS_REG 0x0c +#define SCU_DIAG_CONTROL 0x30 +#define SCU_DIAG_DISABLE_MIGBIT (1 << 0) +#define SCU_FILTER_START_REG 0x40 +#define SCU_FILTER_END_REG 0x44 +#define SCU_SECURE_ACCESS_REG 0x50 +#define SCU_NONSECURE_ACCESS_REG 0x54 + +#define SRC_PHYSBASE 0x020d8000 +#define SRC_SIZE 0x4000 +#define SRC_CONTROL_REG 0x00 +#define SRC_CONTROL_C1ENA_SHIFT 22 /* Bit for Core 1 enable */ +#define SRC_CONTROL_C1RST_SHIFT 14 /* Bit for Core 1 reset */ +#define SRC_GPR0_C1FUNC 0x20 /* Register for Core 1 entry func */ +#define SRC_GPR1_C1ARG 0x24 /* Register for Core 1 entry arg */ + +void +platform_mp_init_secondary(void) +{ + + gic_init_secondary(); +} + +void +platform_mp_setmaxid(void) +{ + bus_space_handle_t scu; + uint32_t val; + + /* If we've already set the global vars don't bother to do it again. */ + if (mp_ncpus != 0) + return; + + if (bus_space_map(fdtbus_bs_tag, SCU_PHYSBASE, SCU_SIZE, 0, &scu) != 0) + panic("Couldn't map the SCU\n"); + val = bus_space_read_4(fdtbus_bs_tag, scu, SCU_CONFIG_REG); + bus_space_unmap(fdtbus_bs_tag, scu, SCU_SIZE); + + mp_maxid = (val & SCU_CONFIG_REG_NCPU_MASK); + mp_ncpus = mp_maxid + 1; +} + +int +platform_mp_probe(void) +{ + + /* I think platform_mp_setmaxid must get called first, but be safe. */ + if (mp_ncpus == 0) + platform_mp_setmaxid(); + + return (mp_ncpus > 1); +} + +void +platform_mp_start_ap(void) +{ + bus_space_handle_t scu; + bus_space_handle_t src; + + uint32_t val; + int i; + + if (bus_space_map(fdtbus_bs_tag, SCU_PHYSBASE, SCU_SIZE, 0, &scu) != 0) + panic("Couldn't map the SCU\n"); + if (bus_space_map(fdtbus_bs_tag, SRC_PHYSBASE, SRC_SIZE, 0, &src) != 0) + panic("Couldn't map the system reset controller (SRC)\n"); + + /* + * Invalidate SCU cache tags. The 0x0000ffff constant invalidates all + * ways on all cores 0-3. Per the ARM docs, it's harmless to write to + * the bits for cores that are not present. + */ + bus_space_write_4(fdtbus_bs_tag, scu, SCU_INV_TAGS_REG, 0x0000ffff); + + /* + * Erratum ARM/MP: 764369 (problems with cache maintenance). + * Setting the "disable-migratory bit" in the undocumented SCU + * Diagnostic Control Register helps work around the problem. + */ + val = bus_space_read_4(fdtbus_bs_tag, scu, SCU_DIAG_CONTROL); + bus_space_write_4(fdtbus_bs_tag, scu, SCU_DIAG_CONTROL, + val | SCU_DIAG_DISABLE_MIGBIT); + + /* + * Enable the SCU, then clean the cache on this core. After these two + * operations the cache tag ram in the SCU is coherent with the contents + * of the cache on this core. The other cores aren't running yet so + * their caches can't contain valid data yet, but we've initialized + * their SCU tag ram above, so they will be coherent from startup. + */ + val = bus_space_read_4(fdtbus_bs_tag, scu, SCU_CONTROL_REG); + bus_space_write_4(fdtbus_bs_tag, scu, SCU_CONTROL_REG, + val | SCU_CONTROL_ENABLE); + cpu_idcache_wbinv_all(); + + /* + * For each AP core, set the entry point address and argument registers, + * and set the core-enable and core-reset bits in the control register. + */ + val = bus_space_read_4(fdtbus_bs_tag, src, SRC_CONTROL_REG); + for (i=1; i < mp_ncpus; i++) { + bus_space_write_4(fdtbus_bs_tag, src, SRC_GPR0_C1FUNC + 8*i, + pmap_kextract((vm_offset_t)mpentry)); + bus_space_write_4(fdtbus_bs_tag, src, SRC_GPR1_C1ARG + 8*i, 0); + + val |= ((1 << (SRC_CONTROL_C1ENA_SHIFT - 1 + i )) | + ( 1 << (SRC_CONTROL_C1RST_SHIFT - 1 + i))); + + } + bus_space_write_4(fdtbus_bs_tag, src, 0, val); + + armv7_sev(); + + bus_space_unmap(fdtbus_bs_tag, scu, SCU_SIZE); + bus_space_unmap(fdtbus_bs_tag, src, SRC_SIZE); +} + +void +platform_ipi_send(cpuset_t cpus, u_int ipi) +{ + + pic_ipi_send(cpus, ipi); +} Modified: projects/random_number_generator/sys/arm/freescale/imx/std.imx6 ============================================================================== --- projects/random_number_generator/sys/arm/freescale/imx/std.imx6 Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/freescale/imx/std.imx6 Tue Feb 25 19:31:29 2014 (r262492) @@ -10,5 +10,8 @@ options KERNPHYSADDR = 0x12000000 makeoptions KERNPHYSADDR = 0x12000000 options PHYSADDR = 0x10000000 +options IPI_IRQ_START=0 +options IPI_IRQ_END=15 + files "../freescale/imx/files.imx6" Modified: projects/random_number_generator/sys/arm/freescale/vybrid/vf_ccm.c ============================================================================== --- projects/random_number_generator/sys/arm/freescale/vybrid/vf_ccm.c Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/freescale/vybrid/vf_ccm.c Tue Feb 25 19:31:29 2014 (r262492) @@ -164,6 +164,18 @@ struct clk { uint32_t sel_val; }; +static struct clk ipg_clk = { + .reg = CCM_CACRR, + .enable_reg = 0, + .div_mask = IPG_CLK_DIV_MASK, + .div_shift = IPG_CLK_DIV_SHIFT, + .div_val = 1, /* Divide by 2 */ + .sel_reg = 0, + .sel_mask = 0, + .sel_shift = 0, + .sel_val = 0, +}; + /* PLL4 clock divider (before switching the clocks should be gated) 000 Divide by 1 (only if PLL frequency less than or equal to 650 MHz) @@ -310,6 +322,7 @@ struct clock_entry { }; static struct clock_entry clock_map[] = { + {"ipg", &ipg_clk}, {"pll4", &pll4_clk}, {"sai3", &sai3_clk}, {"cko1", &cko1_clk}, Modified: projects/random_number_generator/sys/arm/freescale/vybrid/vf_iomuxc.c ============================================================================== --- projects/random_number_generator/sys/arm/freescale/vybrid/vf_iomuxc.c Tue Feb 25 19:28:43 2014 (r262491) +++ projects/random_number_generator/sys/arm/freescale/vybrid/vf_iomuxc.c Tue Feb 25 19:31:29 2014 (r262492) @@ -56,21 +56,42 @@ __FBSDID("$FreeBSD$"); #include <arm/freescale/vybrid/vf_iomuxc.h> #include <arm/freescale/vybrid/vf_common.h> -#define IBE (1 << 0) /* Input Buffer Enable Field */ -#define OBE (1 << 1) /* Output Buffer Enable Field. */ -#define PUE (1 << 2) /* Pull / Keep Select Field. */ -#define PKE (1 << 3) /* Pull / Keep Enable Field. */ -#define PUS_MASK (3 << 4) /* Pull Up / Down Config Field. */ -#define DSE_MASK (7 << 6) /* Drive Strength Field. */ -#define HYS (1 << 9) /* Hysteresis Enable Field */ - #define MUX_MODE_MASK 7 #define MUX_MODE_SHIFT 20 #define MUX_MODE_GPIO 0 #define MUX_MODE_VBUS_EN_OTG 2 -#define PUS_22_KOHM_PULL_UP (3 << 4) -#define DSE_25_OHM (6 << 6) +#define IBE (1 << 0) /* Input Buffer Enable Field */ +#define OBE (1 << 1) /* Output Buffer Enable Field. */ +#define PUE (1 << 2) /* Pull / Keep Select Field. */ +#define PKE (1 << 3) /* Pull / Keep Enable Field. */ +#define HYS (1 << 9) /* Hysteresis Enable Field */ +#define ODE (1 << 10) /* Open Drain Enable Field. */ +#define SRE (1 << 11) /* Slew Rate Field. */ + +#define SPEED_SHIFT 12 +#define SPEED_MASK 0x3 +#define SPEED_LOW 0 /* 50 MHz */ +#define SPEED_MEDIUM 0x1 /* 100 MHz */ +#define SPEED_HIGH 0x3 /* 200 MHz */ + +#define PUS_SHIFT 4 /* Pull Up / Down Config Field Shift */ +#define PUS_MASK 0x3 +#define PUS_100_KOHM_PULL_DOWN 0 +#define PUS_47_KOHM_PULL_UP 0x1 +#define PUS_100_KOHM_PULL_UP 0x2 +#define PUS_22_KOHM_PULL_UP 0x3 + +#define DSE_SHIFT 6 /* Drive Strength Field Shift */ +#define DSE_MASK 0x7 +#define DSE_DISABLED 0 /* Output driver disabled */ +#define DSE_150_OHM 0x1 +#define DSE_75_OHM 0x2 +#define DSE_50_OHM 0x3 +#define DSE_37_OHM 0x4 +#define DSE_30_OHM 0x5 +#define DSE_25_OHM 0x6 +#define DSE_20_OHM 0x7 #define MAX_MUX_LEN 1024 @@ -101,19 +122,6 @@ iomuxc_probe(device_t dev) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402251931.s1PJVU8c077714>