CVS commit: [netbsd-7] src/sys/arch/arm/broadcom

2018-01-03 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Wed Jan  3 20:23:43 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom [netbsd-7]: bcm2835_space.c

Log Message:
Pull up following revision(s) (requested by skrll in ticket #1532):
sys/arch/arm/broadcom/bcm2835_space.c: 1.12-1.13
KNF
--
Sync with armv7_generic_space.c
- BE support (probably not needed)
- a4x subreagion/mmap support
- fix some a4x stream methods
- add UVM_KMF_COLORMATCH in bs_map when allocating KVA
- support BUS_SPACE_MAP_PREFETCHABLE


To generate a diff of this commit:
cvs rdiff -u -r1.6.10.3 -r1.6.10.4 src/sys/arch/arm/broadcom/bcm2835_space.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/broadcom/bcm2835_space.c
diff -u src/sys/arch/arm/broadcom/bcm2835_space.c:1.6.10.3 src/sys/arch/arm/broadcom/bcm2835_space.c:1.6.10.4
--- src/sys/arch/arm/broadcom/bcm2835_space.c:1.6.10.3	Fri Feb 26 22:52:53 2016
+++ src/sys/arch/arm/broadcom/bcm2835_space.c	Wed Jan  3 20:23:43 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_space.c,v 1.6.10.3 2016/02/26 22:52:53 snj Exp $	*/
+/*	$NetBSD: bcm2835_space.c,v 1.6.10.4 2018/01/03 20:23:43 snj Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.6.10.3 2016/02/26 22:52:53 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.6.10.4 2018/01/03 20:23:43 snj Exp $");
 
 #include 
 #include 
@@ -51,6 +51,12 @@ bs_protos(generic_armv4);
 bs_protos(a4x);
 bs_protos(bs_notimpl);
 
+#if __ARMEB__
+#define NSWAP(n)	n ## _swap
+#else
+#define NSWAP(n)	n
+#endif
+
 struct bus_space bcm2835_bs_tag = {
 	/* cookie */
 	(void *) 0,
@@ -75,38 +81,38 @@ struct bus_space bcm2835_bs_tag = {
 
 	/* read (single) */
 	generic_bs_r_1,
-	generic_armv4_bs_r_2,
-	generic_bs_r_4,
+	NSWAP(generic_armv4_bs_r_2),
+	NSWAP(generic_bs_r_4),
 	bs_notimpl_bs_r_8,
 
 	/* read multiple */
 	generic_bs_rm_1,
-	generic_armv4_bs_rm_2,
-	generic_bs_rm_4,
+	NSWAP(generic_armv4_bs_rm_2),
+	NSWAP(generic_bs_rm_4),
 	bs_notimpl_bs_rm_8,
 
 	/* read region */
 	generic_bs_rr_1,
-	generic_armv4_bs_rr_2,
-	generic_bs_rr_4,
+	NSWAP(generic_armv4_bs_rr_2),
+	NSWAP(generic_bs_rr_4),
 	bs_notimpl_bs_rr_8,
 
 	/* write (single) */
 	generic_bs_w_1,
-	generic_armv4_bs_w_2,
-	generic_bs_w_4,
+	NSWAP(generic_armv4_bs_w_2),
+	NSWAP(generic_bs_w_4),
 	bs_notimpl_bs_w_8,
 
 	/* write multiple */
 	generic_bs_wm_1,
-	generic_armv4_bs_wm_2,
-	generic_bs_wm_4,
+	NSWAP(generic_armv4_bs_wm_2),
+	NSWAP(generic_bs_wm_4),
 	bs_notimpl_bs_wm_8,
 
 	/* write region */
 	generic_bs_wr_1,
-	generic_armv4_bs_wr_2,
-	generic_bs_wr_4,
+	NSWAP(generic_armv4_bs_wr_2),
+	NSWAP(generic_bs_wr_4),
 	bs_notimpl_bs_wr_8,
 
 	/* set multiple */
@@ -117,8 +123,8 @@ struct bus_space bcm2835_bs_tag = {
 
 	/* set region */
 	generic_bs_sr_1,
-	generic_armv4_bs_sr_2,
-	bs_notimpl_bs_sr_4,
+	NSWAP(generic_armv4_bs_sr_2),
+	NSWAP(generic_bs_sr_4),
 	bs_notimpl_bs_sr_8,
 
 	/* copy */
@@ -130,38 +136,38 @@ struct bus_space bcm2835_bs_tag = {
 #ifdef __BUS_SPACE_HAS_STREAM_METHODS
 	/* read (single) */
 	generic_bs_r_1,
-	generic_armv4_bs_r_2,
-	generic_bs_r_4,
+	NSWAP(generic_armv4_bs_r_2),
+	NSWAP(generic_bs_r_4),
 	bs_notimpl_bs_r_8,
 
 	/* read multiple */
 	generic_bs_rm_1,
-	generic_armv4_bs_rm_2,
-	generic_bs_rm_4,
+	NSWAP(generic_armv4_bs_rm_2),
+	NSWAP(generic_bs_rm_4),
 	bs_notimpl_bs_rm_8,
 
 	/* read region */
 	generic_bs_rr_1,
-	generic_armv4_bs_rr_2,
-	generic_bs_rr_4,
+	NSWAP(generic_armv4_bs_rr_2),
+	NSWAP(generic_bs_rr_4),
 	bs_notimpl_bs_rr_8,
 
 	/* write (single) */
 	generic_bs_w_1,
-	generic_armv4_bs_w_2,
-	generic_bs_w_4,
+	NSWAP(generic_armv4_bs_w_2),
+	NSWAP(generic_bs_w_4),
 	bs_notimpl_bs_w_8,
 
 	/* write multiple */
 	generic_bs_wm_1,
-	generic_armv4_bs_wm_2,
-	generic_bs_wm_4,
+	NSWAP(generic_armv4_bs_wm_2),
+	NSWAP(generic_bs_wm_4),
 	bs_notimpl_bs_wm_8,
 
 	/* write region */
 	generic_bs_wr_1,
-	generic_armv4_bs_wr_2,
-	generic_bs_wr_4,
+	NSWAP(generic_armv4_bs_wr_2),
+	NSWAP(generic_bs_wr_4),
 	bs_notimpl_bs_wr_8,
 #endif
 };
@@ -173,7 +179,7 @@ struct bus_space bcm2835_a4x_bs_tag = {
 	/* mapping/unmapping */
 	bcm2835_bs_map,
 	bcm2835_bs_unmap,
-	bcm2835_bs_subregion,
+	bcm2835_a4x_bs_subregion,
 
 	/* allocation/deallocation */
 	bcm2835_bs_alloc,	/* not implemented */
@@ -183,21 +189,21 @@ struct bus_space bcm2835_a4x_bs_tag = {
 	bcm2835_bs_vaddr,
 
 	/* mmap */
-	bs_notimpl_bs_mmap,
+	bcm2835_a4x_bs_mmap,
 
 	/* barrier */
 	bcm2835_bs_barrier,
 
 	/* read (single) */
 	a4x_bs_r_1,
-	a4x_bs_r_2,
-	a4x_bs_r_4,
+	NSWAP(a4x_bs_r_2),
+	NSWAP(a4x_bs_r_4),
 	bs_notimpl_bs_r_8,
 
 	/* read multiple */
 	a4x_bs_rm_1,
-	a4x_bs_rm_2,
-	a4x_bs_rm_4,
+	NSWAP(a4x_bs_rm_2),
+	NSWAP(a4x_bs_rm_4),
 	bs_notimpl_bs_rm_8,
 
 	/* read region */
@@ -208,15 +214,16 @@ struct bus_space bcm2835_a4x_bs_tag = {
 
 	/* write (single) */
 	a4x_bs_w_1,
-	

CVS commit: [netbsd-7] src/sys/arch/arm/broadcom

2018-01-03 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Wed Jan  3 20:23:43 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom [netbsd-7]: bcm2835_space.c

Log Message:
Pull up following revision(s) (requested by skrll in ticket #1532):
sys/arch/arm/broadcom/bcm2835_space.c: 1.12-1.13
KNF
--
Sync with armv7_generic_space.c
- BE support (probably not needed)
- a4x subreagion/mmap support
- fix some a4x stream methods
- add UVM_KMF_COLORMATCH in bs_map when allocating KVA
- support BUS_SPACE_MAP_PREFETCHABLE


To generate a diff of this commit:
cvs rdiff -u -r1.6.10.3 -r1.6.10.4 src/sys/arch/arm/broadcom/bcm2835_space.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-7] src/sys/arch/arm/broadcom

2015-03-15 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Mar 15 22:55:47 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom [netbsd-7]: bcm2835_vcaudio.c files.bcm2835

Log Message:
Pull up following revision(s) (requested by jmcneill in ticket #594):
sys/arch/arm/broadcom/bcm2835_vcaudio.c: revision 1.8, 1.9
sys/arch/arm/broadcom/files.bcm2835: revision 1.25
port-arm/49057: Raspberry Pi Audio volume control does not work
- Use software volume control for outputs.master/inputs.dac
- Previous volume control (for analog output only) is available on new
  outputs.headphones mixer control.
- Add an outputs.select enum to choose between auto, headphones, and
  hdmi outputs.
--
port-arm/49057: Raspberry Pi Audio volume control does not work
AUDS server messages expect volume to be expressed in units of 1/256 dB,
where we previously (incorrectly) treated it as as percentage. Map the
NetBSD audio level (0-255) to 20 steps (levels from FreeBSD bcm2835_audio.c)
and provide independent volume knobs for outputs.auto, outputs.hdmi, and
outputs.headphones.


To generate a diff of this commit:
cvs rdiff -u -r1.3.4.1 -r1.3.4.2 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c
cvs rdiff -u -r1.21.2.3 -r1.21.2.4 src/sys/arch/arm/broadcom/files.bcm2835

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/broadcom/bcm2835_vcaudio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.3.4.1 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.3.4.2
--- src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.3.4.1	Sun Oct 19 15:22:00 2014
+++ src/sys/arch/arm/broadcom/bcm2835_vcaudio.c	Sun Mar 15 22:55:47 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_vcaudio.c,v 1.3.4.1 2014/10/19 15:22:00 martin Exp $ */
+/* $NetBSD: bcm2835_vcaudio.c,v 1.3.4.2 2015/03/15 22:55:47 snj Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill jmcne...@invisible.ca
@@ -31,7 +31,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_vcaudio.c,v 1.3.4.1 2014/10/19 15:22:00 martin Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_vcaudio.c,v 1.3.4.2 2015/03/15 22:55:47 snj Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -44,6 +44,7 @@ __KERNEL_RCSID(0, $NetBSD: bcm2835_vcau
 #include sys/audioio.h
 #include dev/audio_if.h
 #include dev/auconv.h
+#include dev/auvolconv.h
 
 #include interface/compat/vchi_bsd.h
 #include interface/vchiq_arm/vchiq_netbsd.h
@@ -51,13 +52,26 @@ __KERNEL_RCSID(0, $NetBSD: bcm2835_vcau
 
 #include bcm2835_vcaudioreg.h
 
-#define vol2pct(vol)	(((vol) * 100) / 255)
+/* levels with 5% volume step */
+static int vcaudio_levels[] = {
+	-10239, -4605, -3794, -3218, -2772,
+	-2407, -2099, -1832, -1597, -1386,
+	-1195, -1021, -861, -713, -575,
+	-446, -325, -210, -102, 0,
+};
+
+#define vol2db(vol)	vcaudio_levels[((vol) * 20)  8]
+#define vol2vc(vol)	((uint32_t)(-(vol2db((vol))  8) / 100))
 
 enum {
 	VCAUDIO_OUTPUT_CLASS,
 	VCAUDIO_INPUT_CLASS,
 	VCAUDIO_OUTPUT_MASTER_VOLUME,
 	VCAUDIO_INPUT_DAC_VOLUME,
+	VCAUDIO_OUTPUT_AUTO_VOLUME,
+	VCAUDIO_OUTPUT_HEADPHONE_VOLUME,
+	VCAUDIO_OUTPUT_HDMI_VOLUME,
+	VCAUDIO_OUTPUT_SELECT,
 	VCAUDIO_ENUM_LAST,
 };
 
@@ -122,8 +136,10 @@ struct vcaudio_softc {
 
 	shortsc_peer_version;
 
-	intsc_volume;
+	intsc_hwvol[3];
 	enum vcaudio_dest		sc_dest;
+
+	uint8_tsc_swvol;
 };
 
 static int	vcaudio_match(device_t, cfdata_t, void *);
@@ -163,6 +179,10 @@ static int	vcaudio_trigger_input(void *,
 
 static void	vcaudio_get_locks(void *, kmutex_t **, kmutex_t **);
 
+static stream_filter_t *vcaudio_swvol_filter(struct audio_softc *,
+const audio_params_t *, const audio_params_t *);
+static void	vcaudio_swvol_dtor(stream_filter_t *);
+
 static const struct audio_hw_if vcaudio_hw_if = {
 	.open = vcaudio_open,
 	.close = vcaudio_close,
@@ -257,7 +277,10 @@ vcaudio_init(struct vcaudio_softc *sc)
 	VC_AUDIO_MSG_T msg;
 	int error;
 
-	sc-sc_volume = 128;
+	sc-sc_swvol = 255;
+	sc-sc_hwvol[VCAUDIO_DEST_AUTO] = 255;
+	sc-sc_hwvol[VCAUDIO_DEST_HP] = 255;
+	sc-sc_hwvol[VCAUDIO_DEST_HDMI] = 255;
 	sc-sc_dest = VCAUDIO_DEST_AUTO;
 
 	sc-sc_format.mode = AUMODE_PLAY|AUMODE_RECORD;
@@ -342,8 +365,8 @@ vcaudio_init(struct vcaudio_softc *sc)
 
 	memset(msg, 0, sizeof(msg));
 	msg.type = VC_AUDIO_MSG_TYPE_CONTROL;
-	msg.u.control.volume = vol2pct(sc-sc_volume);
-	msg.u.control.dest = VCAUDIO_DEST_AUTO;
+	msg.u.control.volume = vol2vc(sc-sc_hwvol[sc-sc_dest]);
+	msg.u.control.dest = sc-sc_dest;
 	error = vcaudio_msg_sync(sc, msg, sizeof(msg));
 	if (error) {
 		aprint_error_dev(sc-sc_dev,
@@ -585,6 +608,9 @@ vcaudio_set_params(void *priv, int setmo
 		AUMODE_PLAY, play, true, pfil);
 		if (index  0)
 			return EINVAL;
+		if (pfil-req_size  0)
+			play = pfil-filters[0].param;
+		pfil-prepend(pfil, vcaudio_swvol_filter, play);
 	}
 
 	return 0;
@@ -629,33 +655,59 @@ vcaudio_halt_input(void *priv)
 }
 
 static int
-vcaudio_set_port(void *priv, mixer_ctrl_t *mc)

CVS commit: [netbsd-7] src/sys/arch/arm/broadcom

2015-03-15 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Mar 15 22:55:47 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom [netbsd-7]: bcm2835_vcaudio.c files.bcm2835

Log Message:
Pull up following revision(s) (requested by jmcneill in ticket #594):
sys/arch/arm/broadcom/bcm2835_vcaudio.c: revision 1.8, 1.9
sys/arch/arm/broadcom/files.bcm2835: revision 1.25
port-arm/49057: Raspberry Pi Audio volume control does not work
- Use software volume control for outputs.master/inputs.dac
- Previous volume control (for analog output only) is available on new
  outputs.headphones mixer control.
- Add an outputs.select enum to choose between auto, headphones, and
  hdmi outputs.
--
port-arm/49057: Raspberry Pi Audio volume control does not work
AUDS server messages expect volume to be expressed in units of 1/256 dB,
where we previously (incorrectly) treated it as as percentage. Map the
NetBSD audio level (0-255) to 20 steps (levels from FreeBSD bcm2835_audio.c)
and provide independent volume knobs for outputs.auto, outputs.hdmi, and
outputs.headphones.


To generate a diff of this commit:
cvs rdiff -u -r1.3.4.1 -r1.3.4.2 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c
cvs rdiff -u -r1.21.2.3 -r1.21.2.4 src/sys/arch/arm/broadcom/files.bcm2835

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-7] src/sys/arch/arm/broadcom

2014-12-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Dec 17 18:47:34 UTC 2014

Modified Files:
src/sys/arch/arm/broadcom [netbsd-7]: bcm2835_tmr.c

Log Message:
Pull up following revision(s) (requested by nat in ticket #333):
sys/arch/arm/broadcom/bcm2835_tmr.c: revision 1.4
Clear status of BCM2835_STIMER_M3 only as timer comparison reg 0 and 2
are used by the VideoCore on Raspberry Pi.  This fixes audio playback.
Addresses PR 48805.
This commit was approved by skrll@


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.3.12.1 src/sys/arch/arm/broadcom/bcm2835_tmr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/broadcom/bcm2835_tmr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_tmr.c:1.3 src/sys/arch/arm/broadcom/bcm2835_tmr.c:1.3.12.1
--- src/sys/arch/arm/broadcom/bcm2835_tmr.c:1.3	Tue Jan  8 12:13:58 2013
+++ src/sys/arch/arm/broadcom/bcm2835_tmr.c	Wed Dec 17 18:47:34 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_tmr.c,v 1.3 2013/01/08 12:13:58 skrll Exp $	*/
+/*	$NetBSD: bcm2835_tmr.c,v 1.3.12.1 2014/12/17 18:47:34 martin Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_tmr.c,v 1.3 2013/01/08 12:13:58 skrll Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_tmr.c,v 1.3.12.1 2014/12/17 18:47:34 martin Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -201,7 +201,7 @@ clockhandler(void *arg)
 	if (!(status  BCM2835_STIMER_M3))
 		return 0;
 
-	bus_space_write_4(sc-sc_iot, sc-sc_ioh, BCM2835_STIMER_CS, status);
+	bus_space_write_4(sc-sc_iot, sc-sc_ioh, BCM2835_STIMER_CS, BCM2835_STIMER_M3);
 
 	hardclock(frame);
 



CVS commit: [netbsd-7] src/sys/arch/arm/broadcom

2014-12-15 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Dec 15 11:53:58 UTC 2014

Modified Files:
src/sys/arch/arm/broadcom [netbsd-7]: bcm2835_emmc.c

Log Message:
Pull up following revision(s) (requested by mlelstv in ticket #328):
sys/arch/arm/broadcom/bcm2835_emmc.c: revision 1.21
Don't pipeline any DMA writes to eMMC.
Fixes PR/49463.


To generate a diff of this commit:
cvs rdiff -u -r1.9.4.3 -r1.9.4.4 src/sys/arch/arm/broadcom/bcm2835_emmc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.9.4.3 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.9.4.4
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.9.4.3	Tue Nov 25 15:49:27 2014
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Mon Dec 15 11:53:58 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.9.4.3 2014/11/25 15:49:27 martin Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.9.4.4 2014/12/15 11:53:58 martin Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.9.4.3 2014/11/25 15:49:27 martin Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.9.4.4 2014/12/15 11:53:58 martin Exp $);
 
 #include bcmdmac.h
 
@@ -278,6 +278,7 @@ bcmemmc_xfer_data_dma(struct sdhc_softc 
 			if ((sc-sc_cblk[seg].cb_txfr_len  0xf) == 0)
 sc-sc_cblk[seg].cb_ti |= DMAC_TI_SRC_WIDTH;
 			sc-sc_cblk[seg].cb_ti |= DMAC_TI_DEST_DREQ;
+			sc-sc_cblk[seg].cb_ti |= DMAC_TI_WAIT_RESP;
 			sc-sc_cblk[seg].cb_source_ad =
 			cmd-c_dmamap-dm_segs[seg].ds_addr;
 			sc-sc_cblk[seg].cb_dest_ad =
@@ -286,7 +287,6 @@ bcmemmc_xfer_data_dma(struct sdhc_softc 
 		}
 		sc-sc_cblk[seg].cb_stride = 0;
 		if (seg == cmd-c_dmamap-dm_nsegs - 1) {
-			sc-sc_cblk[seg].cb_ti |= DMAC_TI_WAIT_RESP;
 			sc-sc_cblk[seg].cb_ti |= DMAC_TI_INTEN;
 			sc-sc_cblk[seg].cb_nextconbk = 0;
 		} else {



CVS commit: [netbsd-7] src/sys/arch/arm/broadcom

2014-12-15 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Dec 15 11:53:58 UTC 2014

Modified Files:
src/sys/arch/arm/broadcom [netbsd-7]: bcm2835_emmc.c

Log Message:
Pull up following revision(s) (requested by mlelstv in ticket #328):
sys/arch/arm/broadcom/bcm2835_emmc.c: revision 1.21
Don't pipeline any DMA writes to eMMC.
Fixes PR/49463.


To generate a diff of this commit:
cvs rdiff -u -r1.9.4.3 -r1.9.4.4 src/sys/arch/arm/broadcom/bcm2835_emmc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-7] src/sys/arch/arm/broadcom

2014-11-25 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Nov 25 15:49:28 UTC 2014

Modified Files:
src/sys/arch/arm/broadcom [netbsd-7]: bcm2835_emmc.c

Log Message:
Pull up following revision(s) (requested by skrll in ticket #265):
sys/arch/arm/broadcom/bcm2835_emmc.c: revision 1.20
Only use 128-bit mode when the transfer is a multiple of this.
From Jared (the arm periph guy)


To generate a diff of this commit:
cvs rdiff -u -r1.9.4.2 -r1.9.4.3 src/sys/arch/arm/broadcom/bcm2835_emmc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.9.4.2 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.9.4.3
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.9.4.2	Sun Oct  5 20:00:54 2014
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Tue Nov 25 15:49:27 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.9.4.2 2014/10/05 20:00:54 martin Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.9.4.3 2014/11/25 15:49:27 martin Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.9.4.2 2014/10/05 20:00:54 martin Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.9.4.3 2014/11/25 15:49:27 martin Exp $);
 
 #include bcmdmac.h
 
@@ -248,9 +248,21 @@ bcmemmc_xfer_data_dma(struct sdhc_softc 
 	for (seg = 0; seg  cmd-c_dmamap-dm_nsegs; seg++) {
 		sc-sc_cblk[seg].cb_ti =
 		__SHIFTIN(11, DMAC_TI_PERMAP); /* e.MMC */
+		sc-sc_cblk[seg].cb_txfr_len =
+		cmd-c_dmamap-dm_segs[seg].ds_len;
+		/*
+		 * All transfers are assumed to be multiples of 32-bits.
+		 */
+		KASSERTMSG((sc-sc_cblk[seg].cb_txfr_len  0x3) == 0,
+		seg %zu len %d, seg, sc-sc_cblk[seg].cb_txfr_len);
 		if (ISSET(cmd-c_flags, SCF_CMD_READ)) {
 			sc-sc_cblk[seg].cb_ti |= DMAC_TI_DEST_INC;
-			sc-sc_cblk[seg].cb_ti |= DMAC_TI_DEST_WIDTH;
+			/*
+			 * Use 128-bit mode if transfer is a multiple of
+			 * 16-bytes.
+			 */
+			if ((sc-sc_cblk[seg].cb_txfr_len  0xf) == 0)
+sc-sc_cblk[seg].cb_ti |= DMAC_TI_DEST_WIDTH;
 			sc-sc_cblk[seg].cb_ti |= DMAC_TI_SRC_DREQ;
 			sc-sc_cblk[seg].cb_source_ad =
 			BCM2835_PERIPHERALS_TO_BUS(sc-sc_physaddr +
@@ -259,7 +271,12 @@ bcmemmc_xfer_data_dma(struct sdhc_softc 
 			cmd-c_dmamap-dm_segs[seg].ds_addr;
 		} else {
 			sc-sc_cblk[seg].cb_ti |= DMAC_TI_SRC_INC;
-			sc-sc_cblk[seg].cb_ti |= DMAC_TI_SRC_WIDTH;
+			/*
+			 * Use 128-bit mode if transfer is a multiple of
+			 * 16-bytes.
+			 */
+			if ((sc-sc_cblk[seg].cb_txfr_len  0xf) == 0)
+sc-sc_cblk[seg].cb_ti |= DMAC_TI_SRC_WIDTH;
 			sc-sc_cblk[seg].cb_ti |= DMAC_TI_DEST_DREQ;
 			sc-sc_cblk[seg].cb_source_ad =
 			cmd-c_dmamap-dm_segs[seg].ds_addr;
@@ -267,8 +284,6 @@ bcmemmc_xfer_data_dma(struct sdhc_softc 
 			BCM2835_PERIPHERALS_TO_BUS(sc-sc_physaddr +
 			SDHC_DATA);
 		}
-		sc-sc_cblk[seg].cb_txfr_len =
-		cmd-c_dmamap-dm_segs[seg].ds_len;
 		sc-sc_cblk[seg].cb_stride = 0;
 		if (seg == cmd-c_dmamap-dm_nsegs - 1) {
 			sc-sc_cblk[seg].cb_ti |= DMAC_TI_WAIT_RESP;



CVS commit: [netbsd-7] src/sys/arch/arm/broadcom

2014-11-25 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Nov 25 15:49:28 UTC 2014

Modified Files:
src/sys/arch/arm/broadcom [netbsd-7]: bcm2835_emmc.c

Log Message:
Pull up following revision(s) (requested by skrll in ticket #265):
sys/arch/arm/broadcom/bcm2835_emmc.c: revision 1.20
Only use 128-bit mode when the transfer is a multiple of this.
From Jared (the arm periph guy)


To generate a diff of this commit:
cvs rdiff -u -r1.9.4.2 -r1.9.4.3 src/sys/arch/arm/broadcom/bcm2835_emmc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-7] src/sys/arch/arm/broadcom

2014-09-11 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Thu Sep 11 13:46:49 UTC 2014

Modified Files:
src/sys/arch/arm/broadcom [netbsd-7]: bcm2835_bsc.c

Log Message:
Pull up following revision(s) (requested by skrll in ticket #90):
sys/arch/arm/broadcom/bcm2835_bsc.c: revision 1.3
Initialise bsciichist only once, otherwise the kern_histories list
never ends.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.2.4.1 src/sys/arch/arm/broadcom/bcm2835_bsc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/broadcom/bcm2835_bsc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.2 src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.2.4.1
--- src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.2	Thu Mar 20 05:39:11 2014
+++ src/sys/arch/arm/broadcom/bcm2835_bsc.c	Thu Sep 11 13:46:49 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_bsc.c,v 1.2 2014/03/20 05:39:11 ozaki-r Exp $	*/
+/*	$NetBSD: bcm2835_bsc.c,v 1.2.4.1 2014/09/11 13:46:49 martin Exp $	*/
 
 /*
  * Copyright (c) 2012 Jonathan A. Kollasch
@@ -27,14 +27,15 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_bsc.c,v 1.2 2014/03/20 05:39:11 ozaki-r Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_bsc.c,v 1.2.4.1 2014/09/11 13:46:49 martin Exp $);
 
 #include sys/param.h
-#include sys/device.h
-#include sys/systm.h
-#include sys/mutex.h
 #include sys/bus.h
+#include sys/device.h
 #include sys/intr.h
+#include sys/mutex.h
+#include sys/once.h
+#include sys/systm.h
 
 #include dev/i2c/i2cvar.h
 
@@ -48,7 +49,6 @@ __KERNEL_RCSID(0, $NetBSD: bcm2835_bsc.
 #endif
 #include sys/kernhist.h
 
-KERNHIST_DECL(bsciichist);
 KERNHIST_DEFINE(bsciichist);
 
 struct bsciic_softc {
@@ -75,6 +75,15 @@ CFATTACH_DECL_NEW(bsciic, sizeof(struct 
 bsciic_match, bsciic_attach, NULL, NULL);
 
 static int
+bsciic_init(void)
+{
+
+	KERNHIST_INIT(bsciichist, 512);
+
+	return 0;
+}
+
+static int
 bsciic_match(device_t parent, cfdata_t match, void *aux)
 {
 	struct amba_attach_args * const aaa = aux;
@@ -92,6 +101,7 @@ bsciic_attach(device_t parent, device_t 
 	struct amba_attach_args * const aaa = aux;
 	struct i2cbus_attach_args iba;
 	u_int bscunit = ~0;
+	static ONCE_DECL(control);
 
 	switch (aaa-aaa_addr) {
 	case BCM2835_BSC0_BASE:
@@ -105,7 +115,7 @@ bsciic_attach(device_t parent, device_t 
 	aprint_naive(\n);
 	aprint_normal(: BSC%u\n, bscunit);
 
-	KERNHIST_INIT(bsciichist, 512);
+	RUN_ONCE(control, bsciic_init);
 
 	sc-sc_dev = self;
 



CVS commit: [netbsd-7] src/sys/arch/arm/broadcom

2014-09-11 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Thu Sep 11 13:46:49 UTC 2014

Modified Files:
src/sys/arch/arm/broadcom [netbsd-7]: bcm2835_bsc.c

Log Message:
Pull up following revision(s) (requested by skrll in ticket #90):
sys/arch/arm/broadcom/bcm2835_bsc.c: revision 1.3
Initialise bsciichist only once, otherwise the kern_histories list
never ends.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.2.4.1 src/sys/arch/arm/broadcom/bcm2835_bsc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.