Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/arch/arm/allwinner
Unless you plan on implementing a better fix, I'm going to commit
something like this (not compile tested) to restore HDMI audio
functionality for A20 and A31.
Index: awin_debe.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/allwinner/awin_debe.c,v
retrieving revision 1.15
diff -u -p -r1.15 awin_debe.c
--- awin_debe.c 5 Oct 2015 14:42:19 -0000 1.15
+++ awin_debe.c 8 Oct 2015 22:16:59 -0000
@@ -75,6 +75,8 @@ struct awin_debe_softc {
int sc_hot_x, sc_hot_y;
uint8_t sc_cursor_bitmap[8 * AWIN_DEBE_CURMAX];
uint8_t sc_cursor_mask[8 * AWIN_DEBE_CURMAX];
+
+ bool sc_audio_supp;
};
#define DEBE_READ(sc, reg) \
@@ -249,7 +251,7 @@ awin_debe_attach(device_t parent, device
#endif
#ifdef AWIN_DEBE_FWINIT
- awin_debe_set_videomode(&mode);
+ awin_debe_set_videomode(&mode, false);
awin_debe_enable(true);
#endif
}
@@ -472,7 +474,7 @@ awin_debe_enable(bool enable)
}
void
-awin_debe_set_videomode(const struct videomode *mode)
+awin_debe_set_videomode(const struct videomode *mode, bool audio_supp)
{
struct awin_debe_softc *sc;
device_t dev;
@@ -485,6 +487,8 @@ awin_debe_set_videomode(const struct vid
}
sc = device_private(dev);
+ sc->sc_audio_supp = audio_supp;
+
if (mode) {
const u_int interlace_p = !!(mode->flags & VID_INTERLACE);
const u_int width = mode->hdisplay;
@@ -582,7 +586,9 @@ awin_debe_ioctl(device_t self, u_long cm
val &= ~AWIN_DEBE_MODCTL_HWC_EN;
}
DEBE_WRITE(sc, AWIN_DEBE_MODCTL_REG, val);
- awin_tcon_enable(enable);
+ if (sc->sc_audio_supp == false) {
+ awin_tcon_enable(enable);
+ }
return 0;
case WSDISPLAYIO_GVIDEO:
val = DEBE_READ(sc, AWIN_DEBE_MODCTL_REG);
Index: awin_hdmi.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/allwinner/awin_hdmi.c,v
retrieving revision 1.16
diff -u -p -r1.16 awin_hdmi.c
--- awin_hdmi.c 25 Jul 2015 15:19:54 -0000 1.16
+++ awin_hdmi.c 8 Oct 2015 22:16:59 -0000
@@ -565,7 +565,8 @@ awin_hdmi_read_edid(struct awin_hdmi_sof
awin_tcon_enable(false);
delay(20000);
- awin_debe_set_videomode(mode);
+ awin_debe_set_videomode(mode,
+ display_mode == DISPLAY_MODE_HDMI);
awin_tcon_set_videomode(mode);
awin_hdmi_set_videomode(sc, mode, display_mode);
awin_hdmi_set_audiomode(sc, mode, display_mode);
Index: awin_var.h
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/allwinner/awin_var.h,v
retrieving revision 1.35
diff -u -p -r1.35 awin_var.h
--- awin_var.h 20 Apr 2015 01:33:22 -0000 1.35
+++ awin_var.h 8 Oct 2015 22:16:59 -0000
@@ -140,7 +140,7 @@ unsigned int awin_tcon_get_clk_div(void)
bool awin_tcon_get_clk_dbl(void);
void awin_tcon_set_videomode(const struct videomode *);
void awin_tcon_enable(bool);
-void awin_debe_set_videomode(const struct videomode *);
+void awin_debe_set_videomode(const struct videomode *, bool);
void awin_debe_enable(bool);
int awin_debe_ioctl(device_t, u_long, void *);
int awin_mp_ioctl(device_t, u_long, void *);
Home |
Main Index |
Thread Index |
Old Index