Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Apr 2017 08:04:01 +0000 (UTC)
From:      Michal Meloun <mmel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r317010 - stable/11/sys/dev/sound/pci/hda
Message-ID:  <201704160804.v3G841Zc098300@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mmel
Date: Sun Apr 16 08:04:01 2017
New Revision: 317010
URL: https://svnweb.freebsd.org/changeset/base/317010

Log:
  MFC r309532,r310674:
  
    r309532:
      Add IDs for HDA codecs found on Nvidia Tegra SoCs.
    r310674:
      Limit number of stripes supported by HDA codec to maximum number announced
      by HDA controller.  Incorrectly implermented HDA codec may report support
      for more stripes that HDA controller already have. Due to this, always
      limit number of enabled stripes by global controller maximum.

Modified:
  stable/11/sys/dev/sound/pci/hda/hdaa.c
  stable/11/sys/dev/sound/pci/hda/hdac.c
  stable/11/sys/dev/sound/pci/hda/hdac.h
  stable/11/sys/dev/sound/pci/hda/hdacc.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/sound/pci/hda/hdaa.c
==============================================================================
--- stable/11/sys/dev/sound/pci/hda/hdaa.c	Sun Apr 16 08:01:57 2017	(r317009)
+++ stable/11/sys/dev/sound/pci/hda/hdaa.c	Sun Apr 16 08:04:01 2017	(r317010)
@@ -2130,7 +2130,8 @@ hdaa_channel_start(struct hdaa_chan *ch)
 	uint32_t fmt;
 
 	fmt = hdaa_stream_format(ch);
-	ch->stripectl = fls(ch->stripecap & hdaa_allowed_stripes(fmt)) - 1;
+	ch->stripectl = fls(ch->stripecap & hdaa_allowed_stripes(fmt) &
+	    hda_get_stripes_mask(devinfo->dev)) - 1;
 	ch->sid = HDAC_STREAM_ALLOC(device_get_parent(devinfo->dev), devinfo->dev,
 	    ch->dir == PCMDIR_PLAY ? 1 : 0, fmt, ch->stripectl, &ch->dmapos);
 	if (ch->sid <= 0)

Modified: stable/11/sys/dev/sound/pci/hda/hdac.c
==============================================================================
--- stable/11/sys/dev/sound/pci/hda/hdac.c	Sun Apr 16 08:01:57 2017	(r317009)
+++ stable/11/sys/dev/sound/pci/hda/hdac.c	Sun Apr 16 08:04:01 2017	(r317010)
@@ -1767,6 +1767,9 @@ hdac_read_ivar(device_t dev, device_t ch
 	case HDA_IVAR_DMA_NOCACHE:
 		*result = (sc->flags & HDAC_F_DMA_NOCACHE) != 0;
 		break;
+	case HDA_IVAR_STRIPES_MASK:
+		*result = (1 << (1 << sc->num_sdo)) - 1;
+		break;
 	default:
 		return (ENOENT);
 	}

Modified: stable/11/sys/dev/sound/pci/hda/hdac.h
==============================================================================
--- stable/11/sys/dev/sound/pci/hda/hdac.h	Sun Apr 16 08:01:57 2017	(r317009)
+++ stable/11/sys/dev/sound/pci/hda/hdac.h	Sun Apr 16 08:04:01 2017	(r317010)
@@ -619,6 +619,10 @@
 #define HDA_CODEC_NVIDIAGT440	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0014)
 #define HDA_CODEC_NVIDIAGTX550	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0015)
 #define HDA_CODEC_NVIDIAGTX570	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0018)
+#define HDA_CODEC_NVIDIATEGRA30	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0020)
+#define HDA_CODEC_NVIDIATEGRA114 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0022)
+#define HDA_CODEC_NVIDIATEGRA124 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0028)
+#define HDA_CODEC_NVIDIATEGRA210 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0029)
 #define HDA_CODEC_NVIDIAMCP67	HDA_CODEC_CONSTRUCT(NVIDIA, 0x0067)
 #define HDA_CODEC_NVIDIAMCP73	HDA_CODEC_CONSTRUCT(NVIDIA, 0x8001)
 #define HDA_CODEC_NVIDIAXXXX	HDA_CODEC_CONSTRUCT(NVIDIA, 0xffff)
@@ -703,6 +707,7 @@ enum hdac_device_ivars {
     HDA_IVAR_SUBSYSTEM_ID,
     HDA_IVAR_NODE_TYPE,
     HDA_IVAR_DMA_NOCACHE,
+    HDA_IVAR_STRIPES_MASK,
 };
 
 #define HDA_ACCESSOR(var, ivar, type)					\
@@ -719,6 +724,7 @@ HDA_ACCESSOR(subdevice_id,	SUBDEVICE_ID,
 HDA_ACCESSOR(subsystem_id,	SUBSYSTEM_ID,	uint32_t);
 HDA_ACCESSOR(node_type,		NODE_TYPE,	uint8_t);
 HDA_ACCESSOR(dma_nocache,	DMA_NOCACHE,	uint8_t);
+HDA_ACCESSOR(stripes_mask,	STRIPES_MASK,	uint8_t);
 
 #define PCIS_MULTIMEDIA_HDA    0x03
 

Modified: stable/11/sys/dev/sound/pci/hda/hdacc.c
==============================================================================
--- stable/11/sys/dev/sound/pci/hda/hdacc.c	Sun Apr 16 08:01:57 2017	(r317009)
+++ stable/11/sys/dev/sound/pci/hda/hdacc.c	Sun Apr 16 08:04:01 2017	(r317010)
@@ -314,6 +314,10 @@ static const struct {
 	{ HDA_CODEC_NVIDIAGT440, 0,	"NVIDIA GT440" },
 	{ HDA_CODEC_NVIDIAGTX550, 0,	"NVIDIA GTX550" },
 	{ HDA_CODEC_NVIDIAGTX570, 0,	"NVIDIA GTX570" },
+	{ HDA_CODEC_NVIDIATEGRA30, 0,	"NVIDIA Tegra30" },
+	{ HDA_CODEC_NVIDIATEGRA114, 0,	"NVIDIA Tegra114" },
+	{ HDA_CODEC_NVIDIATEGRA124, 0,	"NVIDIA Tegra124" },
+	{ HDA_CODEC_NVIDIATEGRA210, 0,	"NVIDIA Tegra210" },
 	{ HDA_CODEC_INTELIP, 0,		"Intel Ibex Peak" },
 	{ HDA_CODEC_INTELBL, 0,		"Intel Bearlake" },
 	{ HDA_CODEC_INTELCA, 0,		"Intel Cantiga" },



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201704160804.v3G841Zc098300>