[PATCH 3/6] ncpfs: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- fs/ncpfs/mmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ncpfs/mmap.c b/fs/ncpfs/mmap.c index ee24df5..3c5dd55 100644 --- a/fs/ncpfs/mmap.c +++ b/fs/ncpfs/mmap.c @@ -117,7 +117,7 @@ int ncp_mmap(struct file *file, struct vm_area_struct *vma) return -EINVAL; /* we do not support files bigger than 4GB... We eventually supports just 4GB... */ - if (((vma->vm_end - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff + if (vma_pages(vma) + vma->vm_pgoff > (1U << (32 - PAGE_SHIFT))) return -EFBIG; -- 1.8.2.1 ___ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
[PATCH 2/6] PCI: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- drivers/pci/pci-sysfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c index 9c6e9bb..5b4a9d9 100644 --- a/drivers/pci/pci-sysfs.c +++ b/drivers/pci/pci-sysfs.c @@ -897,7 +897,7 @@ int pci_mmap_fits(struct pci_dev *pdev, int resno, struct vm_area_struct *vma, if (pci_resource_len(pdev, resno) == 0) return 0; - nr = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; + nr = vma_pages(vma); start = vma->vm_pgoff; size = ((pci_resource_len(pdev, resno) - 1) >> PAGE_SHIFT) + 1; pci_start = (mmap_api == PCI_MMAP_PROCFS) ? -- 1.8.2.1 ___ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
[PATCH 4/6] char: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- drivers/char/mspec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/char/mspec.c b/drivers/char/mspec.c index e1f60f9..ed0703f 100644 --- a/drivers/char/mspec.c +++ b/drivers/char/mspec.c @@ -168,7 +168,7 @@ mspec_close(struct vm_area_struct *vma) if (!atomic_dec_and_test(&vdata->refcnt)) return; - last_index = (vdata->vm_end - vdata->vm_start) >> PAGE_SHIFT; + last_index = vma_pages(vdata); for (index = 0; index < last_index; index++) { if (vdata->maddr[index] == 0) continue; -- 1.8.2.1 ___ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
[PATCH 1/6] mm: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- mm/memory.c | 2 +- mm/mmap.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 13cbc42..8b8ae1c 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2866,7 +2866,7 @@ static inline void unmap_mapping_range_tree(struct rb_root *root, details->first_index, details->last_index) { vba = vma->vm_pgoff; - vea = vba + ((vma->vm_end - vma->vm_start) >> PAGE_SHIFT) - 1; + vea = vba + vma_pages(vma) - 1; /* Assume for now that PAGE_CACHE_SHIFT == PAGE_SHIFT */ zba = details->first_index; if (zba < vba) diff --git a/mm/mmap.c b/mm/mmap.c index 0db0de1..118bfcb 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -919,7 +919,7 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, if (is_mergeable_vma(vma, file, vm_flags) && is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { pgoff_t vm_pglen; - vm_pglen = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; + vm_pglen = vma_pages(vma); if (vma->vm_pgoff + vm_pglen == vm_pgoff) return 1; } -- 1.8.2.1 ___ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
[PATCH 6/6] uio: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- drivers/uio/uio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c index c8b9262..ba5447f 100644 --- a/drivers/uio/uio.c +++ b/drivers/uio/uio.c @@ -676,7 +676,7 @@ static int uio_mmap(struct file *filep, struct vm_area_struct *vma) if (mi < 0) return -EINVAL; - requested_pages = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; + requested_pages = vma_pages(vma); actual_pages = ((idev->info->mem[mi].addr & ~PAGE_MASK) + idev->info->mem[mi].size + PAGE_SIZE -1) >> PAGE_SHIFT; if (requested_pages > actual_pages) -- 1.8.2.1 ___ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
[PATCH 5/6] drm: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- drivers/gpu/drm/ttm/ttm_bo_vm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c index 74705f3..3df9f16 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c @@ -147,7 +147,7 @@ static int ttm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) page_offset = ((address - vma->vm_start) >> PAGE_SHIFT) + bo->vm_node->start - vma->vm_pgoff; - page_last = ((vma->vm_end - vma->vm_start) >> PAGE_SHIFT) + + page_last = vma_pages(vma) + bo->vm_node->start - vma->vm_pgoff; if (unlikely(page_offset >= bo->num_pages)) { @@ -258,7 +258,7 @@ int ttm_bo_mmap(struct file *filp, struct vm_area_struct *vma, read_lock(&bdev->vm_lock); bo = ttm_bo_vm_lookup_rb(bdev, vma->vm_pgoff, -(vma->vm_end - vma->vm_start) >> PAGE_SHIFT); +vma_pages(vma)); if (likely(bo != NULL) && !kref_get_unless_zero(&bo->kref)) bo = NULL; read_unlock(&bdev->vm_lock); -- 1.8.2.1 ___ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel
[PATCH 2/6] PCI: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- drivers/pci/pci-sysfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c index 9c6e9bb..5b4a9d9 100644 --- a/drivers/pci/pci-sysfs.c +++ b/drivers/pci/pci-sysfs.c @@ -897,7 +897,7 @@ int pci_mmap_fits(struct pci_dev *pdev, int resno, struct vm_area_struct *vma, if (pci_resource_len(pdev, resno) == 0) return 0; - nr = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; + nr = vma_pages(vma); start = vma->vm_pgoff; size = ((pci_resource_len(pdev, resno) - 1) >> PAGE_SHIFT) + 1; pci_start = (mmap_api == PCI_MMAP_PROCFS) ? -- 1.8.2.1
[PATCH 4/6] char: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- drivers/char/mspec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/char/mspec.c b/drivers/char/mspec.c index e1f60f9..ed0703f 100644 --- a/drivers/char/mspec.c +++ b/drivers/char/mspec.c @@ -168,7 +168,7 @@ mspec_close(struct vm_area_struct *vma) if (!atomic_dec_and_test(&vdata->refcnt)) return; - last_index = (vdata->vm_end - vdata->vm_start) >> PAGE_SHIFT; + last_index = vma_pages(vdata); for (index = 0; index < last_index; index++) { if (vdata->maddr[index] == 0) continue; -- 1.8.2.1
[PATCH 1/6] mm: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- mm/memory.c | 2 +- mm/mmap.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 13cbc42..8b8ae1c 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2866,7 +2866,7 @@ static inline void unmap_mapping_range_tree(struct rb_root *root, details->first_index, details->last_index) { vba = vma->vm_pgoff; - vea = vba + ((vma->vm_end - vma->vm_start) >> PAGE_SHIFT) - 1; + vea = vba + vma_pages(vma) - 1; /* Assume for now that PAGE_CACHE_SHIFT == PAGE_SHIFT */ zba = details->first_index; if (zba < vba) diff --git a/mm/mmap.c b/mm/mmap.c index 0db0de1..118bfcb 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -919,7 +919,7 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, if (is_mergeable_vma(vma, file, vm_flags) && is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) { pgoff_t vm_pglen; - vm_pglen = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; + vm_pglen = vma_pages(vma); if (vma->vm_pgoff + vm_pglen == vm_pgoff) return 1; } -- 1.8.2.1
[PATCH 6/6] uio: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- drivers/uio/uio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c index c8b9262..ba5447f 100644 --- a/drivers/uio/uio.c +++ b/drivers/uio/uio.c @@ -676,7 +676,7 @@ static int uio_mmap(struct file *filep, struct vm_area_struct *vma) if (mi < 0) return -EINVAL; - requested_pages = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; + requested_pages = vma_pages(vma); actual_pages = ((idev->info->mem[mi].addr & ~PAGE_MASK) + idev->info->mem[mi].size + PAGE_SIZE -1) >> PAGE_SHIFT; if (requested_pages > actual_pages) -- 1.8.2.1
[PATCH 5/6] drm: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- drivers/gpu/drm/ttm/ttm_bo_vm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c index 74705f3..3df9f16 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c @@ -147,7 +147,7 @@ static int ttm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) page_offset = ((address - vma->vm_start) >> PAGE_SHIFT) + bo->vm_node->start - vma->vm_pgoff; - page_last = ((vma->vm_end - vma->vm_start) >> PAGE_SHIFT) + + page_last = vma_pages(vma) + bo->vm_node->start - vma->vm_pgoff; if (unlikely(page_offset >= bo->num_pages)) { @@ -258,7 +258,7 @@ int ttm_bo_mmap(struct file *filp, struct vm_area_struct *vma, read_lock(&bdev->vm_lock); bo = ttm_bo_vm_lookup_rb(bdev, vma->vm_pgoff, -(vma->vm_end - vma->vm_start) >> PAGE_SHIFT); +vma_pages(vma)); if (likely(bo != NULL) && !kref_get_unless_zero(&bo->kref)) bo = NULL; read_unlock(&bdev->vm_lock); -- 1.8.2.1
[PATCH 3/6] ncpfs: use vma_pages() to replace (vm_end - vm_start) >> PAGE_SHIFT
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin --- fs/ncpfs/mmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ncpfs/mmap.c b/fs/ncpfs/mmap.c index ee24df5..3c5dd55 100644 --- a/fs/ncpfs/mmap.c +++ b/fs/ncpfs/mmap.c @@ -117,7 +117,7 @@ int ncp_mmap(struct file *file, struct vm_area_struct *vma) return -EINVAL; /* we do not support files bigger than 4GB... We eventually supports just 4GB... */ - if (((vma->vm_end - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff + if (vma_pages(vma) + vma->vm_pgoff > (1U << (32 - PAGE_SHIFT))) return -EFBIG; -- 1.8.2.1
RE: [Intel-gfx] HDMI audio to support extcon
>-Original Message- >From: Daniel Vetter [mailto:daniel.vet...@ffwll.ch] On Behalf Of Daniel Vetter >Sent: Monday, May 15, 2017 9:49 PM >To: Yang, Libin >Cc: Vetter, Daniel ; Bossart, Pierre-louis louis.boss...@intel.com>; jani.nik...@linux.intel.com; intel- >g...@lists.freedesktop.org; Girdwood, Liam R ; >DRI Development >Subject: Re: [Intel-gfx] HDMI audio to support extcon > >Adding dri-devel. > >On Mon, May 15, 2017 at 08:16:44AM +, Yang, Libin wrote: >> Hi Daniel, >> >> >-Original Message- >> >From: Vetter, Daniel >> >Sent: Friday, May 12, 2017 2:06 AM >> >To: Bossart, Pierre-louis ; Yang, >> >Libin ; jani.nik...@linux.intel.com >> >Cc: Girdwood, Liam R ; Lin, Mengdong >> > >> >Subject: Re: HDMI audio to support extcon >> > >> >On Thu, 2017-05-11 at 11:13 -0500, Pierre-louis Bossart wrote: >> >> On 5/11/17 9:41 AM, Yang, Libin wrote: >> >> > > -Original Message- >> >> > > From: Jani Nikula [mailto:jani.nik...@linux.intel.com] >> >> > > Sent: Thursday, May 11, 2017 4:29 PM >> >> > > To: Yang, Libin ; Vetter, Daniel >> >> > > >> >> > > Cc: Bossart, Pierre-louis ; >> >> > > Lin, Mengdong ; Girdwood, Liam R >> >> > > >> >> > > Subject: Re: HDMI audio to support extcon >> >> > > >> >> > > On Thu, 11 May 2017, "Yang, Libin" wrote: >> >> > > > Hi Daniel & Jani, >> >> > > > >> >> > > > Currently Pierre and I are trying to enabling extcon for HDMI >> >> > > > audio, which >> >> > > >> >> > > will be used in Android for the hotplug event notification. >> >> > > >> >> > > What's "extcon"? >> >> > >> >> > Extcon is used by kernel to communicate with userspace. It tries >> >> > to replace switch class (switch class is a legacy method to >> >> > communicate with userspace in Android). The code is located in >> >> > drivers/extcon/* >> >> >> >> Most Android kernels are ancient (3.10 to 3.18) and use an >> >> Android-specific switch class implemented in the kernel, the >> >> uevents are then used by AOSP to enable HDMI outputs. See >> >> >> >https://android.googlesource.com/platform/frameworks/base/+/0e2d281 >/s >> >> ervices/java/com/android/server/WiredAccessoryManager.java#348 >> >> >> >> For Android-IA we are using 4.9 and we'd like to move forward with >> >> the extcon solution which part of the mainline kernel. The extcon >> >> api relies on a registration and a state which set/unset when the >> >> external device is hot-plugged/removed. The change in state >> >> generates the uevents required by Android.When the CONFIG_ANDROID >> >> is defined, the kernel creates a /sys/class/switch symlink which is >> >> backwards compatible with what Android can parse. >> >> >> >> The question is where do we put the extcon registration 1. in the >> >> i915 code (e.g. in intel_codec_enable()/disable()) 2. in the >> >> HDaudio and LPEaudio code (two locations to maintain) >> >> >> >> Ideally we'd like to add information on ports to userspace so that >> >> multiple outputs can be enabled. Currently Android can only support >> >> one output since it doesn't get additional information. >> >> >> >> Does this help frame the problem statement? >> > >> >Yay for reinventing wheels in Android I guess (we have hotplug >> >notifications since forever in drm ofc), but so be it. I think the >> >right way to do this is to wire this into the generic drm output >> >probe helpers in drm_probe_helpers.c, perhaps filtered to only handle >HDMI (or whatever it is Android wants). >> >> The extcon implementation may be related to our hardware. For example, >> it depends on the DDI port number and audio capability. I'm not sure >> it is OK to implement it in drm level. > >Why does it depend upon the DDI port and stuff like that? Do we need to >make sure that the extcon id somehow lines up with the port on the sound >side, or is just having a link between the drm connector and sound port >enough? Each DDI port should have an interface to the userspace if it has audio capability. This means we need check the DDI port firstly. And then we will export the extcon interface to the userspace. This should be hardware dependent? What's more, to make extcon more powerful, I'm planning to extend the extcon function with acomp, so we can notify the userspace which PCM will be impacted on the hotplug events. Regards, Libin > >Not sure where exactly the problem is here, but I also wasn't involved in the >extcon discussions. Please explain. >-Daniel >-- >Daniel Vetter >Software Engineer, Intel Corporation >http://blog.ffwll.ch ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
RE: i915, HDMI/DP audio with multiple monitors
>-Original Message- >From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com] >Sent: Thursday, September 13, 2018 1:47 AM >To: Bruno Prémont >Cc: intel-...@lists.freedesktop.org; dri-devel@lists.freedesktop.org; Takashi >Iwai ; alsa-de...@alsa-project.org; Yang, Libin > >Subject: Re: i915, HDMI/DP audio with multiple monitors > >On Tue, Sep 11, 2018 at 03:50:13PM +0200, Bruno Prémont wrote: >> Hi, >> >> I have a system with multiple monitors and would like to send >> notification sounds to the monitor on which corresponding window is >> visible. This requirement is reasonable :) >> >> For a workstation and a tiny computer things look different: >> - workstation (Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz): >> 00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon >> E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller >> [8086:0412] (rev 06) >> 00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th >> Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06) >> 00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series >> Chipset High Definition Audio Controller [8086:8c20] (rev 04) >> >> Here alsa show me two cards: >> - HDA Intel PCH (Realtek ALC671) >> - HDA Intel HDMI (Intel Generic) >> >> List of PLAYBACK Hardware Devices card 0: HDMI [HDA Intel >> HDMI], device 3: Generic Digital [Generic Digital] >>Subdevices: 1/1 >>Subdevice #0: subdevice #0 > >There should normally be multiple HDMI devices (one for each HDMI/DP >connector more or less). Eg. my hsw shows: > >card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0] > Subdevices: 1/1 > Subdevice #0: subdevice #0 >card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1] > Subdevices: 1/1 > Subdevice #0: subdevice #0 > >Looking at the hda_codec.c we see: > static int audio_idx[HDA_PCM_NTYPES][5] = { ... >[HDA_PCM_TYPE_HDMI] = { 3, 7, 8, 9, -1 }, > >So you always get those device numbers, but I don't see an immediate >relationship between those and the pin numbers (which do have some kind of >relationship with the HDMI/DP port). I guess if they always get registered in >order of the pin numbers then those would translate to 3 == port B, 7 == port >C, etc. And after that the problem is figuring out which port is related to >which >connector, for which we have nothing at the moment. > >I suppose the ideal solution might be to have a sysfs symlink (or >something) to connect the two together. > >But then there's MST where I think the pcm device correlates with the crtc >rather than the connector. Maybe. I can't remember anymore, and I'm not >sure it even works (I've recently heard people saying it doesn't). Ville is right. For NON-MST (PCM static assignment), the PCM & PORT mapping is simple and static. For DP-MST (PCM dynamic assignment), it is a little complicated. In HDMI audio driver, the per_pin saves all the information. 1. PORT info: per_pin->pin_nid is related to the PORT information. The mapping information is showed in hdmi audio driver function intel_pin_eld_notify(). 2. PCM info: we can get the PCM with per_pin->pcm_idx. With these information, we can tell which PCM is mapped to which PORT. The audio driver can export such information to user space (No sure if such information is already exported.). And user space, such as pulseaudio and so on, can use such information automatically choose which PCM to playback corresponding to the monitor which active window is in. Regards, Libin > >> card 1: PCH [HDA Intel PCH], device 0: ALC671 Analog [ALC671 Analog] >>Subdevices: 1/1 >>Subdevice #0: subdevice #0 >> >> >> - tiny computer (Intel(R) Core(TM) i5-6500T CPU @ 2.50GHz): >> 00:02.0 VGA compatible controller [0300]: Intel Corporation HD >> Graphics 530 [8086:1912] (rev 06) >> 00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD >> Audio [8086:a170] (rev 31) >> >> Here alsa shows a single card: >> - HDA Intel PCH (Realtek ALC671) >> >> List of PLAYBACK Hardware Devices card 0: PCH [HDA Intel >> PCH], device 0: ALC671 Analog [ALC671 Analog] >>Subdevices: 1/1 >>Subdevice #0: subdevice #0 >> card 0: PCH [HDA Intel PCH], device 3: Generic Digital [Generic Digital] >>Subdevices: 1/1 >>Subdevice #0: subdevice #0 >> >> >> How can I determine/set to which monitor the sound should go, and >> preferably send different sounds to both monitors at same time? >> >> >> Cheers, >> Bruno >> ___ >> dri-devel mailing list >> dri-devel@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/dri-devel > >-- >Ville Syrjälä >Intel ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel