Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/hppa/gsc Simplify harmony_speed_bits().
details: https://anonhg.NetBSD.org/src/rev/11350a25cd6d
branches: trunk
changeset: 980421:11350a25cd6d
user: isaki <isaki%NetBSD.org@localhost>
date: Thu Feb 04 15:08:44 2021 +0000
description:
Simplify harmony_speed_bits().
It no longer needs to write back the speed value.
diffstat:
sys/arch/hppa/gsc/harmony.c | 46 +++++++++-----------------------------------
1 files changed, 10 insertions(+), 36 deletions(-)
diffs (85 lines):
diff -r 2ea127753f9d -r 11350a25cd6d sys/arch/hppa/gsc/harmony.c
--- a/sys/arch/hppa/gsc/harmony.c Thu Feb 04 15:06:11 2021 +0000
+++ b/sys/arch/hppa/gsc/harmony.c Thu Feb 04 15:08:44 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: harmony.c,v 1.9 2021/02/04 15:06:11 isaki Exp $ */
+/* $NetBSD: harmony.c,v 1.10 2021/02/04 15:08:44 isaki Exp $ */
/* $OpenBSD: harmony.c,v 1.23 2004/02/13 21:28:19 mickey Exp $ */
@@ -165,7 +165,7 @@
int harmony_intr(void *);
void harmony_intr_enable(struct harmony_softc *);
void harmony_intr_disable(struct harmony_softc *);
-uint32_t harmony_speed_bits(struct harmony_softc *, u_int *);
+uint32_t harmony_speed_bits(struct harmony_softc *, u_int);
int harmony_set_gainctl(struct harmony_softc *);
void harmony_reset_codec(struct harmony_softc *);
void harmony_start_cp(struct harmony_softc *, int);
@@ -441,7 +441,6 @@
{
struct harmony_softc *sc;
uint32_t bits;
- int rate;
sc = vsc;
@@ -464,10 +463,7 @@
bits |= CNTL_OLB;
bits |= CNTL_CHANS_STEREO;
-
- /* XXX modify harmony_speed_bits() not to rewrite rate */
- rate = play->sample_rate;
- bits |= harmony_speed_bits(sc, &rate);
+ bits |= harmony_speed_bits(sc, play->sample_rate);
sc->sc_cntlbits = bits;
sc->sc_need_commit = 1;
@@ -1161,39 +1157,17 @@
};
uint32_t
-harmony_speed_bits(struct harmony_softc *sc, u_int *speedp)
+harmony_speed_bits(struct harmony_softc *sc, u_int speed)
{
- int i, n, selected;
-
- selected = -1;
- n = sizeof(harmony_speeds) / sizeof(harmony_speeds[0]);
+ int i;
- if ((*speedp) <= harmony_speeds[0].speed)
- selected = 0;
- else if ((*speedp) >= harmony_speeds[n - 1].speed)
- selected = n - 1;
- else {
- for (i = 1; selected == -1 && i < n; i++) {
- if ((*speedp) == harmony_speeds[i].speed)
- selected = i;
- else if ((*speedp) < harmony_speeds[i].speed) {
- int diff1, diff2;
-
- diff1 = (*speedp) - harmony_speeds[i - 1].speed;
- diff2 = harmony_speeds[i].speed - (*speedp);
- if (diff1 < diff2)
- selected = i - 1;
- else
- selected = i;
- }
+ for (i = 0; i < __arraycount(harmony_speeds); i++) {
+ if (speed == harmony_speeds[i].speed) {
+ return harmony_speeds[i].bits;
}
}
-
- if (selected == -1)
- selected = 2;
-
- *speedp = harmony_speeds[selected].speed;
- return harmony_speeds[selected].bits;
+ /* If this happens, harmony_formats[] is wrong */
+ panic("speed %u not supported", speed);
}
int
Home |
Main Index |
Thread Index |
Old Index