From owner-freebsd-drivers@freebsd.org Tue Mar 12 16:17:08 2019 Return-Path: Delivered-To: freebsd-drivers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 73E1B1534EE7 for ; Tue, 12 Mar 2019 16:17:08 +0000 (UTC) (envelope-from fesse@mail.ru) Received: from smtp17.mail.ru (smtp17.mail.ru [94.100.176.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D5A186E957 for ; Tue, 12 Mar 2019 16:17:06 +0000 (UTC) (envelope-from fesse@mail.ru) Received: by smtp17.mail.ru with esmtpa (envelope-from ) id 1h3k5I-0000YV-AL for freebsd-drivers@freebsd.org; Tue, 12 Mar 2019 19:16:57 +0300 Date: Tue, 12 Mar 2019 19:16:56 +0300 User-Agent: K-9 Mail for Android MIME-Version: 1.0 Subject: ACPI Suspend/Resume support in sound drivers To: freebsd-drivers@freebsd.org From: =?UTF-8?B?0JDQu9C10LrRgdC10Lkg0J/QsNC70Y7RgtC40L0=?= Message-ID: <0812D16E-3F71-4C1C-82E0-DA7AE0D81E46@mail.ru> X-77F55803: CF41D5CA8C6D3C0C7F9F52485CB584D7FE68477BFBFC01B45266539DCEEC5A5EEE8C493BEC1B01DCD6AB21314ABC6FEA51CE0648C9E8651D X-7FA49CB5: 0D63561A33F958A52215FA9964EF07D181665F0A8AF0647EBD409193995E8F5A8941B15DA834481FA18204E546F3947CA9FF340AA05FB58CF6B57BC7E64490618DEB871D839B7333395957E7521B51C2545D4CF71C94A83E9FA2833FD35BB23D27C277FBC8AE2E8BAE9A1BBD95851C5BA471835C12D1D977C4224003CC8364767815B9869FA544D8D32BA5DBAC0009BE9E8FC8737B5C2249EC9D17400D4640693AA81AA40904B5D9CF19DD082D7633A0E7DDDDC251EA7DABD81D268191BDAD3D78DA827A17800CE7F37C1F64ECBCA44BCD04E86FAF290E2D40A5AABA2AD3711975ECD9A6C639B01B78DA827A17800CE72B812CDA4A1440EEA55CBCB8DEF6C1B775ECD9A6C639B01B4E70A05D1297E1BBC6867C52282FAC85D9B7C4F32B44FF57D4B828FA1BC0F1ACBD9CCCA9EDD067B1EDA766A37F9254B7 X-Mailru-Sender: 49D287FBCBBF3A5C4AC4B4D3231166EE12418628DE267F408081AA6DB578D7E2345C11AF1AD87E65629687592B7445BC8FCA44E9AC9C8EC25865B368DA895DE95FEEDEB644C299C0ED14614B50AE0675 X-Mras: OK X-Rspamd-Queue-Id: D5A186E957 X-Spamd-Bar: --- X-Spamd-Result: default: False [-3.11 / 15.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:94.100.176.0/20]; FREEMAIL_FROM(0.00)[mail.ru]; TO_DN_NONE(0.00)[]; DKIM_TRACE(0.00)[mail.ru:+]; MX_GOOD(-0.01)[mxs.mail.ru,mxs.mail.ru]; DMARC_POLICY_ALLOW(-0.50)[mail.ru,reject]; NEURAL_HAM_SHORT(-0.21)[-0.209,0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+]; RCVD_TLS_LAST(0.00)[]; RCVD_IN_DNSWL_LOW(-0.10)[154.176.100.94.list.dnswl.org : 127.0.5.1]; ASN(0.00)[asn:47764, ipnet:94.100.176.0/20, country:RU]; MID_RHS_MATCH_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[mail.ru.dwl.dnswl.org : 127.0.5.0]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.82)[-0.816,0]; R_DKIM_ALLOW(-0.20)[mail.ru:s=mail2]; FROM_HAS_DN(0.00)[]; FREEMAIL_ENVFROM(0.00)[mail.ru]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-0.999,0]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; IP_SCORE(0.03)[ipnet: 94.100.176.0/20(0.08), asn: 47764(0.05), country: RU(0.00)]; RCPT_COUNT_ONE(0.00)[1]; RCVD_COUNT_TWO(0.00)[2] Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-drivers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Writing device drivers for FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Mar 2019 16:17:08 -0000 Hi I trying to add suspend/resume support to PCI soundcard driver=2E As I can see, when system goes to s1/s3 state sound system doesn't warn dr= iver about that event at all=2E But interrupt should be masked, and chip clock should be disabled too for = power saving=2E When driver's suspend function being called by kernel, mask= ing interrupts subsequentally ending up with "timeout, channel dead" just a= fter wake up from s1/s3 states (since pcm doesn't know that we doing), and = userland playback application exits with error=2E Is there a way to tell pcm to "pause" running channels before going to sle= ep? Other drivers simply calls their own trigger function with PCMTRIG_ABORT p= arameter, but again, pcm doesn't know about this, and I believe this also e= nds with "channel dead"=2E I want sound system to resume playback, interrupted by ACPI sleep event, j= ust after wake up=2E Is it possible? Is there any "right way" on how to han= dle ACPI events safely in sound driver? --=20 =D0=9F=D1=80=D0=BE=D1=81=D1=82=D0=B8=D1=82=D0=B5 =D0=B7=D0=B0 =D0=BA=D1=80= =D0=B0=D1=82=D0=BA=D0=BE=D1=81=D1=82=D1=8C, =D1=81=D0=BE=D0=B7=D0=B4=D0=B0= =D0=BD=D0=BE =D0=B2 K-9 Mail=2E