Date: Fri, 28 Dec 2012 22:21:26 +0000 (UTC) From: Attilio Rao <attilio@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r244794 - in user/attilio/membarclean: arm/broadcom/bcm2835 arm/versatile cddl/contrib/opensolaris/uts/common/fs/zfs cddl/dev/dtrace dev/ath dev/ath/ath_hal/ar5416 dev/pci dev/usb dev/u... Message-ID: <201212282221.qBSMLQsM015509@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: attilio Date: Fri Dec 28 22:21:25 2012 New Revision: 244794 URL: http://svnweb.freebsd.org/changeset/base/244794 Log: MFC Modified: user/attilio/membarclean/arm/broadcom/bcm2835/bcm2835_fb.c user/attilio/membarclean/arm/broadcom/bcm2835/bcm2835_systimer.c user/attilio/membarclean/arm/versatile/versatile_clcd.c user/attilio/membarclean/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/attilio/membarclean/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c user/attilio/membarclean/cddl/dev/dtrace/dtrace_debug.c user/attilio/membarclean/dev/ath/ath_hal/ar5416/ar5416phy.h user/attilio/membarclean/dev/ath/if_ath.c user/attilio/membarclean/dev/pci/pci_user.c user/attilio/membarclean/dev/usb/quirk/usb_quirk.c user/attilio/membarclean/dev/usb/storage/ustorage_fs.c user/attilio/membarclean/dev/usb/usb_msctest.c user/attilio/membarclean/dev/usb/usbdevs user/attilio/membarclean/dev/usb/wlan/if_urtw.c user/attilio/membarclean/dev/wbwd/wbwd.c user/attilio/membarclean/fs/devfs/devfs_vnops.c user/attilio/membarclean/geom/geom_io.c user/attilio/membarclean/kern/subr_syscall.c user/attilio/membarclean/kern/sys_generic.c user/attilio/membarclean/kern/vfs_mount.c user/attilio/membarclean/kern/vfs_subr.c user/attilio/membarclean/net/if_stf.c user/attilio/membarclean/netgraph/bluetooth/drivers/ubt/ng_ubt.c user/attilio/membarclean/netinet/in.c user/attilio/membarclean/netinet/ip_carp.c user/attilio/membarclean/netinet/sctp_pcb.c user/attilio/membarclean/netinet/sctp_usrreq.c user/attilio/membarclean/netinet/sctputil.c user/attilio/membarclean/netinet/tcp_reass.c user/attilio/membarclean/netinet/tcp_syncache.c user/attilio/membarclean/netinet6/in6.c user/attilio/membarclean/netpfil/ipfw/ip_fw2.c user/attilio/membarclean/netpfil/ipfw/ip_fw_dynamic.c user/attilio/membarclean/netpfil/ipfw/ip_fw_log.c user/attilio/membarclean/netpfil/ipfw/ip_fw_private.h user/attilio/membarclean/netpfil/pf/if_pflog.c user/attilio/membarclean/netpfil/pf/if_pfsync.c user/attilio/membarclean/netpfil/pf/pf.c user/attilio/membarclean/netpfil/pf/pf_if.c user/attilio/membarclean/netpfil/pf/pf_ioctl.c user/attilio/membarclean/netpfil/pf/pf_lb.c user/attilio/membarclean/netpfil/pf/pf_norm.c user/attilio/membarclean/netpfil/pf/pf_osfp.c user/attilio/membarclean/netpfil/pf/pf_ruleset.c user/attilio/membarclean/netpfil/pf/pf_table.c user/attilio/membarclean/sys/buf_ring.h user/attilio/membarclean/sys/file.h user/attilio/membarclean/tools/vnode_if.awk Directory Properties: user/attilio/membarclean/ (props changed) user/attilio/membarclean/cddl/contrib/opensolaris/ (props changed) Modified: user/attilio/membarclean/arm/broadcom/bcm2835/bcm2835_fb.c ============================================================================== --- user/attilio/membarclean/arm/broadcom/bcm2835/bcm2835_fb.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/arm/broadcom/bcm2835/bcm2835_fb.c Fri Dec 28 22:21:25 2012 (r244794) @@ -94,6 +94,12 @@ static struct argb bcmfb_palette[16] = { {0x00, 0xff, 0xff, 0xff} }; +/* mouse pointer from dev/syscons/scgfbrndr.c */ +static u_char mouse_pointer[16] = { + 0x00, 0x40, 0x60, 0x70, 0x78, 0x7c, 0x7e, 0x68, + 0x0c, 0x0c, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 +}; + #define FB_WIDTH 640 #define FB_HEIGHT 480 #define FB_DEPTH 24 @@ -420,10 +426,141 @@ static video_switch_t bcmfbvidsw = { VIDEO_DRIVER(bcmfb, bcmfbvidsw, bcmfb_configure); -extern sc_rndr_sw_t txtrndrsw; -RENDERER(bcmfb, 0, txtrndrsw, gfb_set); +static vr_init_t bcmrend_init; +static vr_clear_t bcmrend_clear; +static vr_draw_border_t bcmrend_draw_border; +static vr_draw_t bcmrend_draw; +static vr_set_cursor_t bcmrend_set_cursor; +static vr_draw_cursor_t bcmrend_draw_cursor; +static vr_blink_cursor_t bcmrend_blink_cursor; +static vr_set_mouse_t bcmrend_set_mouse; +static vr_draw_mouse_t bcmrend_draw_mouse; + +/* + * We use our own renderer; this is because we must emulate a hardware + * cursor. + */ +static sc_rndr_sw_t bcmrend = { + bcmrend_init, + bcmrend_clear, + bcmrend_draw_border, + bcmrend_draw, + bcmrend_set_cursor, + bcmrend_draw_cursor, + bcmrend_blink_cursor, + bcmrend_set_mouse, + bcmrend_draw_mouse +}; + +RENDERER(bcmfb, 0, bcmrend, gfb_set); RENDERER_MODULE(bcmfb, gfb_set); +static void +bcmrend_init(scr_stat* scp) +{ +} + +static void +bcmrend_clear(scr_stat* scp, int c, int attr) +{ +} + +static void +bcmrend_draw_border(scr_stat* scp, int color) +{ +} + +static void +bcmrend_draw(scr_stat* scp, int from, int count, int flip) +{ + video_adapter_t* adp = scp->sc->adp; + int i, c, a; + + if (!flip) { + /* Normal printing */ + vidd_puts(adp, from, (uint16_t*)sc_vtb_pointer(&scp->vtb, from), count); + } else { + /* This is for selections and such: invert the color attribute */ + for (i = count; i-- > 0; ++from) { + c = sc_vtb_getc(&scp->vtb, from); + a = sc_vtb_geta(&scp->vtb, from) >> 8; + vidd_putc(adp, from, c, (a >> 4) | ((a & 0xf) << 4)); + } + } +} + +static void +bcmrend_set_cursor(scr_stat* scp, int base, int height, int blink) +{ +} + +static void +bcmrend_draw_cursor(scr_stat* scp, int off, int blink, int on, int flip) +{ + video_adapter_t* adp = scp->sc->adp; + struct video_adapter_softc *sc; + int row, col; + uint8_t *addr; + int i, j, bytes; + + sc = (struct video_adapter_softc *)adp; + + if (scp->curs_attr.height <= 0) + return; + + if (sc->fb_addr == 0) + return; + + if (off >= adp->va_info.vi_width * adp->va_info.vi_height) + return; + + /* calculate the coordinates in the video buffer */ + row = (off / adp->va_info.vi_width) * adp->va_info.vi_cheight; + col = (off % adp->va_info.vi_width) * adp->va_info.vi_cwidth; + + addr = (uint8_t *)sc->fb_addr + + (row + sc->ymargin)*(sc->stride) + + (sc->depth/8) * (col + sc->xmargin); + + bytes = sc->depth/8; + + /* our cursor consists of simply inverting the char under it */ + for (i = 0; i < adp->va_info.vi_cheight; i++) { + for (j = 0; j < adp->va_info.vi_cwidth; j++) { + switch (sc->depth) { + case 32: + case 24: + addr[bytes*j + 2] ^= 0xff; + /* FALLTHROUGH */ + case 16: + addr[bytes*j + 1] ^= 0xff; + addr[bytes*j] ^= 0xff; + break; + default: + break; + } + } + + addr += sc->stride; + } +} + +static void +bcmrend_blink_cursor(scr_stat* scp, int at, int flip) +{ +} + +static void +bcmrend_set_mouse(scr_stat* scp) +{ +} + +static void +bcmrend_draw_mouse(scr_stat* scp, int x, int y, int on) +{ + vidd_putm(scp->sc->adp, x, y, mouse_pointer, 0xffffffff, 16, 8); +} + static uint16_t bcmfb_static_window[ROW*COL]; extern u_char dflt_font_16[]; Modified: user/attilio/membarclean/arm/broadcom/bcm2835/bcm2835_systimer.c ============================================================================== --- user/attilio/membarclean/arm/broadcom/bcm2835/bcm2835_systimer.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/arm/broadcom/bcm2835/bcm2835_systimer.c Fri Dec 28 22:21:25 2012 (r244794) @@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$"); #define DEFAULT_TIMER 3 #define DEFAULT_FREQUENCY 1000000 +#define MIN_PERIOD 100LLU #define SYSTIMER_CS 0x00 #define SYSTIMER_CLO 0x04 @@ -123,17 +124,24 @@ bcm_systimer_start(struct eventtimer *et struct systimer *st = et->et_priv; uint32_t clo; uint32_t count; + register_t s; if (first != NULL) { - st->enabled = 1; count = (st->et.et_frequency * (first->frac >> 32)) >> 32; if (first->sec != 0) count += st->et.et_frequency * first->sec; + s = intr_disable(); clo = bcm_systimer_tc_read_4(SYSTIMER_CLO); clo += count; + /* + * Clear pending interrupts + */ + bcm_systimer_tc_write_4(SYSTIMER_CS, (1 << st->index)); bcm_systimer_tc_write_4(SYSTIMER_C0 + st->index*4, clo); + st->enabled = 1; + intr_restore(s); return (0); } @@ -154,7 +162,13 @@ static int bcm_systimer_intr(void *arg) { struct systimer *st = (struct systimer *)arg; + uint32_t cs; + + cs = bcm_systimer_tc_read_4(SYSTIMER_CS); + if ((cs & (1 << st->index)) == 0) + return (FILTER_STRAY); + /* ACK interrupt */ bcm_systimer_tc_write_4(SYSTIMER_CS, (1 << st->index)); if (st->enabled) { if (st->et.et_active) { @@ -226,7 +240,7 @@ bcm_systimer_attach(device_t dev) sc->st[DEFAULT_TIMER].et.et_frequency = sc->sysclk_freq; sc->st[DEFAULT_TIMER].et.et_min_period.sec = 0; sc->st[DEFAULT_TIMER].et.et_min_period.frac = - ((0x00000002LLU << 32) / sc->st[DEFAULT_TIMER].et.et_frequency) << 32; + ((MIN_PERIOD << 32) / sc->st[DEFAULT_TIMER].et.et_frequency) << 32; sc->st[DEFAULT_TIMER].et.et_max_period.sec = 0xfffffff0U / sc->st[DEFAULT_TIMER].et.et_frequency; sc->st[DEFAULT_TIMER].et.et_max_period.frac = ((0xfffffffeLLU << 32) / sc->st[DEFAULT_TIMER].et.et_frequency) << 32; Modified: user/attilio/membarclean/arm/versatile/versatile_clcd.c ============================================================================== --- user/attilio/membarclean/arm/versatile/versatile_clcd.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/arm/versatile/versatile_clcd.c Fri Dec 28 22:21:25 2012 (r244794) @@ -194,6 +194,12 @@ static struct argb versatilefb_palette[1 {0x00, 0xff, 0xff, 0xff} }; +/* mouse pointer from dev/syscons/scgfbrndr.c */ +static u_char mouse_pointer[16] = { + 0x00, 0x40, 0x60, 0x70, 0x78, 0x7c, 0x7e, 0x68, + 0x0c, 0x0c, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00 +}; + #define FB_WIDTH 640 #define FB_HEIGHT 480 #define FB_DEPTH 16 @@ -450,10 +456,131 @@ static video_switch_t versatilefbvidsw = VIDEO_DRIVER(versatilefb, versatilefbvidsw, versatilefb_configure); -extern sc_rndr_sw_t txtrndrsw; -RENDERER(versatilefb, 0, txtrndrsw, gfb_set); +static vr_init_t clcdr_init; +static vr_clear_t clcdr_clear; +static vr_draw_border_t clcdr_draw_border; +static vr_draw_t clcdr_draw; +static vr_set_cursor_t clcdr_set_cursor; +static vr_draw_cursor_t clcdr_draw_cursor; +static vr_blink_cursor_t clcdr_blink_cursor; +static vr_set_mouse_t clcdr_set_mouse; +static vr_draw_mouse_t clcdr_draw_mouse; + +/* + * We use our own renderer; this is because we must emulate a hardware + * cursor. + */ +static sc_rndr_sw_t clcdrend = { + clcdr_init, + clcdr_clear, + clcdr_draw_border, + clcdr_draw, + clcdr_set_cursor, + clcdr_draw_cursor, + clcdr_blink_cursor, + clcdr_set_mouse, + clcdr_draw_mouse +}; + +RENDERER(versatilefb, 0, clcdrend, gfb_set); RENDERER_MODULE(versatilefb, gfb_set); +static void +clcdr_init(scr_stat* scp) +{ +} + +static void +clcdr_clear(scr_stat* scp, int c, int attr) +{ +} + +static void +clcdr_draw_border(scr_stat* scp, int color) +{ +} + +static void +clcdr_draw(scr_stat* scp, int from, int count, int flip) +{ + video_adapter_t* adp = scp->sc->adp; + int i, c, a; + + if (!flip) { + /* Normal printing */ + vidd_puts(adp, from, (uint16_t*)sc_vtb_pointer(&scp->vtb, from), count); + } else { + /* This is for selections and such: invert the color attribute */ + for (i = count; i-- > 0; ++from) { + c = sc_vtb_getc(&scp->vtb, from); + a = sc_vtb_geta(&scp->vtb, from) >> 8; + vidd_putc(adp, from, c, (a >> 4) | ((a & 0xf) << 4)); + } + } +} + +static void +clcdr_set_cursor(scr_stat* scp, int base, int height, int blink) +{ +} + +static void +clcdr_draw_cursor(scr_stat* scp, int off, int blink, int on, int flip) +{ + video_adapter_t* adp = scp->sc->adp; + struct video_adapter_softc *sc; + int row, col; + uint8_t *addr; + int i,j; + + sc = (struct video_adapter_softc *)adp; + + if (scp->curs_attr.height <= 0) + return; + + if (sc->fb_addr == 0) + return; + + if (off >= adp->va_info.vi_width * adp->va_info.vi_height) + return; + + /* calculate the coordinates in the video buffer */ + row = (off / adp->va_info.vi_width) * adp->va_info.vi_cheight; + col = (off % adp->va_info.vi_width) * adp->va_info.vi_cwidth; + + addr = (uint8_t *)sc->fb_addr + + (row + sc->ymargin)*(sc->stride) + + (sc->depth/8) * (col + sc->xmargin); + + /* our cursor consists of simply inverting the char under it */ + for (i = 0; i < adp->va_info.vi_cheight; i++) { + for (j = 0; j < adp->va_info.vi_cwidth; j++) { + + addr[2*j] ^= 0xff; + addr[2*j + 1] ^= 0xff; + } + + addr += sc->stride; + } +} + +static void +clcdr_blink_cursor(scr_stat* scp, int at, int flip) +{ +} + +static void +clcdr_set_mouse(scr_stat* scp) +{ +} + +static void +clcdr_draw_mouse(scr_stat* scp, int x, int y, int on) +{ + vidd_putm(scp->sc->adp, x, y, mouse_pointer, 0xffffffff, 16, 8); + +} + static uint16_t versatilefb_static_window[ROW*COL]; extern u_char dflt_font_16[]; @@ -629,6 +756,7 @@ versatilefb_read_hw_cursor(video_adapter static int versatilefb_set_hw_cursor(video_adapter_t *adp, int col, int row) { + return (0); } @@ -753,6 +881,9 @@ versatilefb_putc(video_adapter_t *adp, v if (sc->fb_addr == 0) return (0); + if (off >= adp->va_info.vi_width * adp->va_info.vi_height) + return (0); + row = (off / adp->va_info.vi_width) * adp->va_info.vi_cheight; col = (off % adp->va_info.vi_width) * adp->va_info.vi_cwidth; p = sc->font + c*VERSATILE_FONT_HEIGHT; Modified: user/attilio/membarclean/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- user/attilio/membarclean/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Fri Dec 28 22:21:25 2012 (r244794) @@ -3799,7 +3799,7 @@ spa_generate_rootconf(const char *name) nvlist_lookup_uint64_array(best_cfg, ZPOOL_CONFIG_HOLE_ARRAY, &holes, &nholes); - tops = kmem_alloc(nchildren * sizeof(void *), KM_SLEEP | KM_ZERO); + tops = kmem_zalloc(nchildren * sizeof(void *), KM_SLEEP); for (i = 0; i < nchildren; i++) { if (i >= count) break; Modified: user/attilio/membarclean/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c ============================================================================== --- user/attilio/membarclean/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Fri Dec 28 22:21:25 2012 (r244794) @@ -300,8 +300,8 @@ resize_configs(nvlist_t ***configs, uint if (id < *count) return; - new_configs = kmem_alloc((id + 1) * sizeof(nvlist_t *), - KM_SLEEP | KM_ZERO); + new_configs = kmem_zalloc((id + 1) * sizeof(nvlist_t *), + KM_SLEEP); for (i = 0; i < *count; i++) new_configs[i] = (*configs)[i]; if (*configs != NULL) Modified: user/attilio/membarclean/cddl/dev/dtrace/dtrace_debug.c ============================================================================== --- user/attilio/membarclean/cddl/dev/dtrace/dtrace_debug.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/cddl/dev/dtrace/dtrace_debug.c Fri Dec 28 22:21:25 2012 (r244794) @@ -33,11 +33,10 @@ #include <machine/atomic.h> -#define dtrace_cmpset_long atomic_cmpset_long - #define DTRACE_DEBUG_BUFR_SIZE (32 * 1024) struct dtrace_debug_data { + uintptr_t lock __aligned(CACHE_LINE_SIZE); char bufr[DTRACE_DEBUG_BUFR_SIZE]; char *first; char *last; @@ -46,20 +45,22 @@ struct dtrace_debug_data { static char dtrace_debug_bufr[DTRACE_DEBUG_BUFR_SIZE]; -static volatile u_long dtrace_debug_flag[MAXCPU]; - static void dtrace_debug_lock(int cpu) { - while (dtrace_cmpset_long(&dtrace_debug_flag[cpu], 0, 1) == 0) - /* Loop until the lock is obtained. */ + uintptr_t tid; + + tid = (uintptr_t)curthread; + spinlock_enter(); + while (atomic_cmpset_acq_ptr(&dtrace_debug_data[cpu].lock, 0, tid) == 0) /* Loop until the lock is obtained. */ ; } static void dtrace_debug_unlock(int cpu) { - dtrace_debug_flag[cpu] = 0; + atomic_store_rel_ptr(&dtrace_debug_data[cpu].lock, 0); + spinlock_exit(); } static void @@ -151,10 +152,11 @@ dtrace_debug_output(void) */ static __inline void -dtrace_debug__putc(char c) +dtrace_debug__putc(int cpu, char c) { - struct dtrace_debug_data *d = &dtrace_debug_data[curcpu]; + struct dtrace_debug_data *d; + d = &dtrace_debug_data[cpu]; *d->next++ = c; if (d->next == d->last) @@ -172,24 +174,30 @@ dtrace_debug__putc(char c) static void __used dtrace_debug_putc(char c) { - dtrace_debug_lock(curcpu); + int cpu; + + cpu = curcpu; + dtrace_debug_lock(cpu); - dtrace_debug__putc(c); + dtrace_debug__putc(cpu, c); - dtrace_debug_unlock(curcpu); + dtrace_debug_unlock(cpu); } static void __used dtrace_debug_puts(const char *s) { - dtrace_debug_lock(curcpu); + int cpu; + + cpu = curcpu; + dtrace_debug_lock(cpu); while (*s != '\0') - dtrace_debug__putc(*s++); + dtrace_debug__putc(cpu, *s++); - dtrace_debug__putc('\0'); + dtrace_debug__putc(cpu, '\0'); - dtrace_debug_unlock(curcpu); + dtrace_debug_unlock(cpu); } /* @@ -219,7 +227,7 @@ dtrace_debug_ksprintn(char *nbuf, uintma #define MAXNBUF (sizeof(intmax_t) * NBBY + 1) static void -dtrace_debug_vprintf(const char *fmt, va_list ap) +dtrace_debug_vprintf(int cpu, const char *fmt, va_list ap) { char nbuf[MAXNBUF]; const char *p, *percent, *q; @@ -243,10 +251,10 @@ dtrace_debug_vprintf(const char *fmt, va width = 0; while ((ch = (u_char)*fmt++) != '%' || stop) { if (ch == '\0') { - dtrace_debug__putc('\0'); + dtrace_debug__putc(cpu, '\0'); return; } - dtrace_debug__putc(ch); + dtrace_debug__putc(cpu, ch); } percent = fmt - 1; qflag = 0; lflag = 0; ladjust = 0; sharpflag = 0; neg = 0; @@ -266,7 +274,7 @@ reswitch: switch (ch = (u_char)*fmt++) { ladjust = 1; goto reswitch; case '%': - dtrace_debug__putc(ch); + dtrace_debug__putc(cpu, ch); break; case '*': if (!dot) { @@ -301,7 +309,7 @@ reswitch: switch (ch = (u_char)*fmt++) { num = (u_int)va_arg(ap, int); p = va_arg(ap, char *); for (q = dtrace_debug_ksprintn(nbuf, num, *p++, NULL, 0); *q;) - dtrace_debug__putc(*q--); + dtrace_debug__putc(cpu, *q--); if (num == 0) break; @@ -309,19 +317,19 @@ reswitch: switch (ch = (u_char)*fmt++) { for (tmp = 0; *p;) { n = *p++; if (num & (1 << (n - 1))) { - dtrace_debug__putc(tmp ? ',' : '<'); + dtrace_debug__putc(cpu, tmp ? ',' : '<'); for (; (n = *p) > ' '; ++p) - dtrace_debug__putc(n); + dtrace_debug__putc(cpu, n); tmp = 1; } else for (; *p > ' '; ++p) continue; } if (tmp) - dtrace_debug__putc('>'); + dtrace_debug__putc(cpu, '>'); break; case 'c': - dtrace_debug__putc(va_arg(ap, int)); + dtrace_debug__putc(cpu, va_arg(ap, int)); break; case 'D': up = va_arg(ap, u_char *); @@ -329,12 +337,12 @@ reswitch: switch (ch = (u_char)*fmt++) { if (!width) width = 16; while(width--) { - dtrace_debug__putc(hex2ascii(*up >> 4)); - dtrace_debug__putc(hex2ascii(*up & 0x0f)); + dtrace_debug__putc(cpu, hex2ascii(*up >> 4)); + dtrace_debug__putc(cpu, hex2ascii(*up & 0x0f)); up++; if (width) for (q=p;*q;q++) - dtrace_debug__putc(*q); + dtrace_debug__putc(cpu, *q); } break; case 'd': @@ -406,12 +414,12 @@ reswitch: switch (ch = (u_char)*fmt++) { if (!ladjust && width > 0) while (width--) - dtrace_debug__putc(padc); + dtrace_debug__putc(cpu, padc); while (n--) - dtrace_debug__putc(*p++); + dtrace_debug__putc(cpu, *p++); if (ladjust && width > 0) while (width--) - dtrace_debug__putc(padc); + dtrace_debug__putc(cpu, padc); break; case 't': tflag = 1; @@ -485,32 +493,32 @@ number: if (!ladjust && padc != '0' && width && (width -= tmp) > 0) while (width--) - dtrace_debug__putc(padc); + dtrace_debug__putc(cpu, padc); if (neg) - dtrace_debug__putc('-'); + dtrace_debug__putc(cpu, '-'); if (sharpflag && num != 0) { if (base == 8) { - dtrace_debug__putc('0'); + dtrace_debug__putc(cpu, '0'); } else if (base == 16) { - dtrace_debug__putc('0'); - dtrace_debug__putc('x'); + dtrace_debug__putc(cpu, '0'); + dtrace_debug__putc(cpu, 'x'); } } if (!ladjust && width && (width -= tmp) > 0) while (width--) - dtrace_debug__putc(padc); + dtrace_debug__putc(cpu, padc); while (*p) - dtrace_debug__putc(*p--); + dtrace_debug__putc(cpu, *p--); if (ladjust && width && (width -= tmp) > 0) while (width--) - dtrace_debug__putc(padc); + dtrace_debug__putc(cpu, padc); break; default: while (percent < fmt) - dtrace_debug__putc(*percent++); + dtrace_debug__putc(cpu, *percent++); /* * Since we ignore an formatting argument it is no * longer safe to obey the remaining formatting @@ -522,23 +530,25 @@ number: } } - dtrace_debug__putc('\0'); + dtrace_debug__putc(cpu, '\0'); } void dtrace_debug_printf(const char *fmt, ...) { va_list ap; + int cpu; - dtrace_debug_lock(curcpu); + cpu = curcpu; + dtrace_debug_lock(cpu); va_start(ap, fmt); - dtrace_debug_vprintf(fmt, ap); + dtrace_debug_vprintf(cpu, fmt, ap); va_end(ap); - dtrace_debug_unlock(curcpu); + dtrace_debug_unlock(cpu); } #else Modified: user/attilio/membarclean/dev/ath/ath_hal/ar5416/ar5416phy.h ============================================================================== --- user/attilio/membarclean/dev/ath/ath_hal/ar5416/ar5416phy.h Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/dev/ath/ath_hal/ar5416/ar5416phy.h Fri Dec 28 22:21:25 2012 (r244794) @@ -57,6 +57,20 @@ #define AR_BT_DISABLE_BT_ANT 0x00100000 #define AR_BT_DISABLE_BT_ANT_S 20 +#define AR_PHY_SPECTRAL_SCAN 0x9910 +#define AR_PHY_SPECTRAL_SCAN_ENA 0x00000001 +#define AR_PHY_SPECTRAL_SCAN_ENA_S 0 +#define AR_PHY_SPECTRAL_SCAN_ACTIVE 0x00000002 +#define AR_PHY_SPECTRAL_SCAN_ACTIVE_S 1 +#define AR_PHY_SPECTRAL_SCAN_FFT_PERIOD 0x000000F0 +#define AR_PHY_SPECTRAL_SCAN_FFT_PERIOD_S 4 +#define AR_PHY_SPECTRAL_SCAN_PERIOD 0x0000FF00 +#define AR_PHY_SPECTRAL_SCAN_PERIOD_S 8 +#define AR_PHY_SPECTRAL_SCAN_COUNT 0x00FF0000 +#define AR_PHY_SPECTRAL_SCAN_COUNT_S 16 +#define AR_PHY_SPECTRAL_SCAN_SHORT_REPEAT 0x01000000 +#define AR_PHY_SPECTRAL_SCAN_SHORT_REPEAT_S 24 + /* For AR_PHY_RADAR0 */ #define AR_PHY_RADAR_0_FFT_ENA 0x80000000 @@ -64,6 +78,8 @@ #define AR_PHY_RADAR_EXT_ENA 0x00004000 #define AR_PHY_RADAR_1 0x9958 +#define AR_PHY_RADAR_1_BIN_THRESH_SEL 0x07000000 +#define AR_PHY_RADAR_1_BIN_THRESH_SEL_S 24 #define AR_PHY_RADAR_1_RELPWR_ENA 0x00800000 #define AR_PHY_RADAR_1_USE_FIR128 0x00400000 #define AR_PHY_RADAR_1_RELPWR_THRESH 0x003F0000 Modified: user/attilio/membarclean/dev/ath/if_ath.c ============================================================================== --- user/attilio/membarclean/dev/ath/if_ath.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/dev/ath/if_ath.c Fri Dec 28 22:21:25 2012 (r244794) @@ -5620,7 +5620,7 @@ ath_node_set_tim(struct ieee80211_node * struct ath_vap *avp = ATH_VAP(ni->ni_vap); /* - * Some operating omdes don't set av_set_tim(), so don't + * Some operating modes don't set av_set_tim(), so don't * update it here. */ if (avp->av_set_tim == NULL) Modified: user/attilio/membarclean/dev/pci/pci_user.c ============================================================================== --- user/attilio/membarclean/dev/pci/pci_user.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/dev/pci/pci_user.c Fri Dec 28 22:21:25 2012 (r244794) @@ -425,12 +425,12 @@ pci_ioctl(struct cdev *dev, u_long cmd, #ifdef COMPAT_FREEBSD32 struct pci_conf_io32 *cio32 = NULL; struct pci_conf_old32 conf_old32; - struct pci_match_conf_old32 *pattern_buf_old32; + struct pci_match_conf_old32 *pattern_buf_old32 = NULL; #endif struct pci_conf_old conf_old; struct pci_io iodata; struct pci_io_old *io_old; - struct pci_match_conf_old *pattern_buf_old; + struct pci_match_conf_old *pattern_buf_old = NULL; io_old = NULL; @@ -470,10 +470,8 @@ pci_ioctl(struct cdev *dev, u_long cmd, #ifdef PRE7_COMPAT #ifdef COMPAT_FREEBSD32 case PCIOCGETCONF_OLD32: - pattern_buf_old32 = NULL; #endif case PCIOCGETCONF_OLD: - pattern_buf_old = NULL; #endif case PCIOCGETCONF: Modified: user/attilio/membarclean/dev/usb/quirk/usb_quirk.c ============================================================================== --- user/attilio/membarclean/dev/usb/quirk/usb_quirk.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/dev/usb/quirk/usb_quirk.c Fri Dec 28 22:21:25 2012 (r244794) @@ -482,6 +482,7 @@ static struct usb_quirk_entry usb_quirks * after issuing non-supported commands: */ USB_QUIRK(ALCOR, DUMMY, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE, UQ_MSC_NO_TEST_UNIT_READY, UQ_MATCH_VENDOR_ONLY), + USB_QUIRK(APPLE, DUMMY, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE, UQ_MATCH_VENDOR_ONLY), USB_QUIRK(FEIYA, DUMMY, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE, UQ_MATCH_VENDOR_ONLY), USB_QUIRK(REALTEK, DUMMY, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE, UQ_MATCH_VENDOR_ONLY), USB_QUIRK(INITIO, DUMMY, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE, UQ_MATCH_VENDOR_ONLY), Modified: user/attilio/membarclean/dev/usb/storage/ustorage_fs.c ============================================================================== --- user/attilio/membarclean/dev/usb/storage/ustorage_fs.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/dev/usb/storage/ustorage_fs.c Fri Dec 28 22:21:25 2012 (r244794) @@ -603,6 +603,8 @@ tr_setup: usbd_xfer_set_stall(xfer); DPRINTF("stall pipe\n"); } + usbd_xfer_set_frame_len(xfer, 0, + sizeof(ustorage_fs_bbb_cbw_t)); usbd_transfer_submit(xfer); break; @@ -827,6 +829,8 @@ tr_setup: sc->sc_transfer.data_error = 0; usbd_xfer_set_stall(xfer); } + usbd_xfer_set_frame_len(xfer, 0, + sizeof(ustorage_fs_bbb_csw_t)); usbd_transfer_submit(xfer); break; Modified: user/attilio/membarclean/dev/usb/usb_msctest.c ============================================================================== --- user/attilio/membarclean/dev/usb/usb_msctest.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/dev/usb/usb_msctest.c Fri Dec 28 22:21:25 2012 (r244794) @@ -83,7 +83,7 @@ enum { DIR_NONE, }; -#define SCSI_MAX_LEN 0x100 +#define SCSI_MAX_LEN MAX(0x100, BULK_SIZE) #define SCSI_INQ_LEN 0x24 #define SCSI_SENSE_LEN 0xFF @@ -150,6 +150,7 @@ struct bbb_transfer { usb_size_t data_rem; /* bytes */ usb_timeout_t data_timeout; /* ms */ usb_frlength_t actlen; /* bytes */ + usb_frlength_t buffer_size; /* bytes */ uint8_t cmd_len; /* bytes */ uint8_t dir; @@ -192,7 +193,7 @@ static const struct usb_config bbb_confi .type = UE_BULK, .endpoint = UE_ADDR_ANY, .direction = UE_DIR_IN, - .bufsize = MAX(SCSI_MAX_LEN, BULK_SIZE), + .bufsize = SCSI_MAX_LEN, .flags = {.proxy_buffer = 1,.short_xfer_ok = 1,}, .callback = &bbb_data_read_callback, .timeout = 4 * USB_MS_HZ, /* 4 seconds */ @@ -211,7 +212,7 @@ static const struct usb_config bbb_confi .type = UE_BULK, .endpoint = UE_ADDR_ANY, .direction = UE_DIR_OUT, - .bufsize = BULK_SIZE, + .bufsize = SCSI_MAX_LEN, .flags = {.ext_buffer = 1,.proxy_buffer = 1,}, .callback = &bbb_data_write_callback, .timeout = 4 * USB_MS_HZ, /* 4 seconds */ @@ -299,6 +300,8 @@ bbb_command_callback(struct usb_xfer *xf sc->cbw->bCDBLength = sizeof(sc->cbw->CBWCDB); DPRINTFN(0, "Truncating long command\n"); } + usbd_xfer_set_frame_len(xfer, 0, + sizeof(struct bbb_cbw)); usbd_transfer_submit(xfer); break; @@ -385,7 +388,7 @@ bbb_data_write_callback(struct usb_xfer if (sc->data_rem == 0) { bbb_transfer_start(sc, ST_STATUS); - return; + break; } if (max_bulk > sc->data_rem) { max_bulk = sc->data_rem; @@ -393,7 +396,7 @@ bbb_data_write_callback(struct usb_xfer usbd_xfer_set_timeout(xfer, sc->data_timeout); usbd_xfer_set_frame_data(xfer, 0, sc->data_ptr, max_bulk); usbd_transfer_submit(xfer); - return; + break; default: /* Error */ if (error == USB_ERR_CANCELLED) { @@ -401,8 +404,7 @@ bbb_data_write_callback(struct usb_xfer } else { bbb_transfer_start(sc, ST_DATA_WR_CS); } - return; - + break; } } @@ -437,6 +439,8 @@ bbb_status_callback(struct usb_xfer *xfe break; case USB_ST_SETUP: + usbd_xfer_set_frame_len(xfer, 0, + sizeof(struct bbb_csw)); usbd_transfer_submit(xfer); break; @@ -553,6 +557,8 @@ bbb_attach(struct usb_device *udev, uint /* store pointer to DMA buffers */ sc->buffer = usbd_xfer_get_frame_buffer( sc->xfer[ST_DATA_RD], 0); + sc->buffer_size = + usbd_xfer_max_len(sc->xfer[ST_DATA_RD]); sc->cbw = usbd_xfer_get_frame_buffer( sc->xfer[ST_COMMAND], 0); sc->csw = usbd_xfer_get_frame_buffer( @@ -833,8 +839,8 @@ usb_msc_eject(struct usb_device *udev, u * TCTMobile needs DIR_IN flag. To get it, we * supply a dummy data with the command. */ - err = bbb_command_start(sc, DIR_IN, 0, &sc->buffer, - sizeof(sc->buffer), &scsi_tct_eject, + err = bbb_command_start(sc, DIR_IN, 0, sc->buffer, + sc->buffer_size, &scsi_tct_eject, sizeof(scsi_tct_eject), USB_MS_HZ); break; default: Modified: user/attilio/membarclean/dev/usb/usbdevs ============================================================================== --- user/attilio/membarclean/dev/usb/usbdevs Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/dev/usb/usbdevs Fri Dec 28 22:21:25 2012 (r244794) @@ -1050,6 +1050,7 @@ product AOX USB101 0x0008 Ethernet product APC UPS 0x0002 Uninterruptible Power Supply /* Apple Computer products */ +product APPLE DUMMY 0x0000 Dummy product product APPLE IMAC_KBD 0x0201 USB iMac Keyboard product APPLE KBD 0x0202 USB Keyboard M2452 product APPLE EXT_KBD 0x020c Apple Extended USB Keyboard Modified: user/attilio/membarclean/dev/usb/wlan/if_urtw.c ============================================================================== --- user/attilio/membarclean/dev/usb/wlan/if_urtw.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/dev/usb/wlan/if_urtw.c Fri Dec 28 22:21:25 2012 (r244794) @@ -4127,6 +4127,7 @@ urtw_bulk_tx_status_callback(struct usb_ case USB_ST_SETUP: setup: memcpy(dma_buf, &sc->sc_txstatus, sizeof(uint64_t)); + usbd_xfer_set_frame_len(xfer, 0, sizeof(uint64_t)); usbd_transfer_submit(xfer); break; default: Modified: user/attilio/membarclean/dev/wbwd/wbwd.c ============================================================================== --- user/attilio/membarclean/dev/wbwd/wbwd.c Fri Dec 28 22:18:41 2012 (r244793) +++ user/attilio/membarclean/dev/wbwd/wbwd.c Fri Dec 28 22:21:25 2012 (r244794) @@ -1,5 +1,6 @@ /*- * Copyright (c) 2011 Sandvine Incorporated ULC. + * Copyright (c) 2012 iXsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -93,15 +94,6 @@ __FBSDID("$FreeBSD$"); #define WB_LDN8_CRF7_CLEAR_MASK \ (WB_LDN8_CRF7_MOUSE|WB_LDN8_CRF7_KEYB|WB_LDN8_CRF7_TS|WB_LDN8_CRF7_IRQS) -#define write_efir_1(sc, value) \ - bus_space_write_1((sc)->bst, (sc)->bsh, 0, (value)) -#define read_efir_1(sc) \ - bus_space_read_1((sc)->bst, (sc)->bsh, 0) -#define write_efdr_1(sc, value) \ - bus_space_write_1((sc)->bst, (sc)->bsh, 1, (value)) -#define read_efdr_1(sc) \ - bus_space_read_1((sc)->bst, (sc)->bsh, 1) - struct wb_softc { device_t dev; struct resource *portres; @@ -109,8 +101,8 @@ struct wb_softc { bus_space_handle_t bsh; int rid; eventhandler_tag ev_tag; - int (*ext_cfg_enter_f)(struct wb_softc *); - void (*ext_cfg_exit_f)(struct wb_softc *); + int (*ext_cfg_enter_f)(struct wb_softc *, u_short); + void (*ext_cfg_exit_f)(struct wb_softc *, u_short); int debug_verbose; /* @@ -131,13 +123,13 @@ struct wb_softc { uint8_t reg_2; }; -static int ext_cfg_enter_0x87_0x87(struct wb_softc *); -static void ext_cfg_exit_0xaa(struct wb_softc *); +static int ext_cfg_enter_0x87_0x87(struct wb_softc *, u_short); +static void ext_cfg_exit_0xaa(struct wb_softc *, u_short); struct winbond_superio_cfg { uint8_t efer; /* and efir */ - int (*ext_cfg_enter_f)(struct wb_softc *); - void (*ext_cfg_exit_f)(struct wb_softc *); + int (*ext_cfg_enter_f)(struct wb_softc *, u_short); + void (*ext_cfg_exit_f)(struct wb_softc *, u_short); } probe_addrs[] = { { .efer = 0x2e, @@ -189,6 +181,50 @@ struct winbond_vendor_device_id { }, }; +static void +write_efir_1(struct wb_softc *sc, u_short baseport, uint8_t value) +{ + + MPASS(sc != NULL || baseport != 0); + if (sc != NULL) + bus_space_write_1((sc)->bst, (sc)->bsh, 0, (value)); + else + outb(baseport, value); +} + +static uint8_t __unused +read_efir_1(struct wb_softc *sc, u_short baseport) +{ + + MPASS(sc != NULL || baseport != 0); + if (sc != NULL) + return (bus_space_read_1((sc)->bst, (sc)->bsh, 0)); + else + return (inb(baseport)); +} + +static void +write_efdr_1(struct wb_softc *sc, u_short baseport, uint8_t value) +{ + + MPASS(sc != NULL || baseport != 0); + if (sc != NULL) + bus_space_write_1((sc)->bst, (sc)->bsh, 1, (value)); + else + outb(baseport + 1, value); +} + +static uint8_t +read_efdr_1(struct wb_softc *sc, u_short baseport) +{ + + MPASS(sc != NULL || baseport != 0); + if (sc != NULL) + return (bus_space_read_1((sc)->bst, (sc)->bsh, 1)); + else + return (inb(baseport + 1)); +} + /* * Return the watchdog related registers as we last read them. This will *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201212282221.qBSMLQsM015509>