From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?Q?Beno=C3=AEt_Th=C3=A9baudeau?= Subject: [RFC/PATCH] ASoC: dapm: Fix/add support for stereo widgets Date: Mon, 2 Jul 2012 13:46:42 +0200 (CEST) Message-ID: <134211720.502545.1341229602023.JavaMail.root@advansee.com> References: <20120630182446.GA28922@opensource.wolfsonmicro.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from zose-mta12.web4all.fr (zose-mta12.web4all.fr [178.33.204.89]) by alsa0.perex.cz (Postfix) with ESMTP id 3205824590 for ; Mon, 2 Jul 2012 13:42:01 +0200 (CEST) In-Reply-To: <20120630182446.GA28922@opensource.wolfsonmicro.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: alsa-devel@alsa-project.org Cc: Takashi Iwai , Mark Brown , Liam Girdwood List-Id: alsa-devel@alsa-project.org VGhpcyBwYXRjaDoKKiBhZGRzIGEgY2hvaWNlIGluIHNuZF9zb2NfZGFwbV9nZXRfdm9sc3dfbXV0 KCkgZm9yIHN0ZXJlbyBiZXR3ZWVuIDEgYW5kIDIKICByZWdpc3RlcnMsIGxpa2UgaW4gc25kX3Nv Y19nZXRfdm9sc3coKS4KKiBmaXhlcyB0aGUgbWlzc2luZyBzdGVyZW8gaW4gb3RoZXIgcGFydHMg b2YgZGFwbS4KKiByZW1vdmVzIHRoZSB1bnVzZWQgc2F2ZWRfdmFsdWUgZnJvbSBzdHJ1Y3Qgc25k X3NvY19kYXBtX3dpZGdldC4KCkNjOiBMaWFtIEdpcmR3b29kIDxscmdAdGkuY29tPgpDYzogTWFy ayBCcm93biA8YnJvb25pZUBvcGVuc291cmNlLndvbGZzb25taWNyby5jb20+CkNjOiA8YWxzYS1k ZXZlbEBhbHNhLXByb2plY3Qub3JnPgpTaWduZWQtb2ZmLWJ5OiBCZW5vw650IFRow6liYXVkZWF1 IDxiZW5vaXQudGhlYmF1ZGVhdUBhZHZhbnNlZS5jb20+Ci0tLQogLi4uL2luY2x1ZGUvc291bmQv c29jLWRhcG0uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstLQogLi4uL3NvdW5kL3Nv Yy9zb2MtZGFwbS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkyICsrKysrKysrKysr KysrKystLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBsaW51eC1uZXh0LUhFQUQtZDFkMmQzYS5vcmlnL2luY2x1ZGUvc291 bmQvc29jLWRhcG0uaCBsaW51eC1uZXh0LUhFQUQtZDFkMmQzYS9pbmNsdWRlL3NvdW5kL3NvYy1k YXBtLmgKaW5kZXggMDU1NTllNS4uYjVkMzhiOSAxMDA2NDQKLS0tIGxpbnV4LW5leHQtSEVBRC1k MWQyZDNhLm9yaWcvaW5jbHVkZS9zb3VuZC9zb2MtZGFwbS5oCisrKyBsaW51eC1uZXh0LUhFQUQt ZDFkMmQzYS9pbmNsdWRlL3NvdW5kL3NvYy1kYXBtLmgKQEAgLTUwOCw4ICs1MDgsOCBAQCBzdHJ1 Y3Qgc25kX3NvY19kYXBtX3dpZGdldCB7CiAJLyogZGFwbSBjb250cm9sICovCiAJaW50IHJlZzsJ CQkJLyogbmVnYXRpdmUgcmVnID0gbm8gZGlyZWN0IGRhcG0gKi8KIAl1bnNpZ25lZCBjaGFyIHNo aWZ0OwkJCS8qIGJpdHMgdG8gc2hpZnQgKi8KLQl1bnNpZ25lZCBpbnQgc2F2ZWRfdmFsdWU7CQkv KiB3aWRnZXQgc2F2ZWQgdmFsdWUgKi8KLQl1bnNpZ25lZCBpbnQgdmFsdWU7CQkJCS8qIHdpZGdl dCBjdXJyZW50IHZhbHVlICovCisJdW5zaWduZWQgaW50IHZhbHVlOwkJCS8qIHdpZGdldCBjdXJy ZW50IHZhbHVlICovCisJdW5zaWduZWQgaW50IHJ2YWx1ZTsJCQkvKiB3aWRnZXQgY3VycmVudCB2 YWx1ZSBvZiByaWdodCBjaGFubmVsICovCiAJdW5zaWduZWQgaW50IG1hc2s7CQkJLyogbm9uLXNo aWZ0ZWQgbWFzayAqLwogCXVuc2lnbmVkIGludCBvbl92YWw7CQkJLyogb24gc3RhdGUgdmFsdWUg Ki8KIAl1bnNpZ25lZCBpbnQgb2ZmX3ZhbDsJCQkvKiBvZmYgc3RhdGUgdmFsdWUgKi8KQEAgLTU1 Miw5ICs1NTIsOSBAQCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCB7CiBzdHJ1Y3Qgc25kX3Nv Y19kYXBtX3VwZGF0ZSB7CiAJc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKndpZGdldDsKIAlz dHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbDsKLQlpbnQgcmVnOwotCWludCBtYXNrOwotCWlu dCB2YWw7CisJaW50IHJlZywgcnJlZzsKKwlpbnQgbWFzaywgcm1hc2s7CisJaW50IHZhbCwgcnZh bDsKIH07CiAKIC8qIERBUE0gY29udGV4dCAqLwpkaWZmIC0tZ2l0IGxpbnV4LW5leHQtSEVBRC1k MWQyZDNhLm9yaWcvc291bmQvc29jL3NvYy1kYXBtLmMgbGludXgtbmV4dC1IRUFELWQxZDJkM2Ev c291bmQvc29jL3NvYy1kYXBtLmMKaW5kZXggN2YyYTRiYi4uMzQxZGFkZSAxMDA2NDQKLS0tIGxp bnV4LW5leHQtSEVBRC1kMWQyZDNhLm9yaWcvc291bmQvc29jL3NvYy1kYXBtLmMKKysrIGxpbnV4 LW5leHQtSEVBRC1kMWQyZDNhL3NvdW5kL3NvYy9zb2MtZGFwbS5jCkBAIC0zMTMsMTEgKzMxMywx MyBAQCBzdGF0aWMgdm9pZCBkYXBtX3NldF9wYXRoX3N0YXR1cyhzdHJ1Y3Qgc25kX3NvY19kYXBt X3dpZGdldCAqdywKIAljYXNlIHNuZF9zb2NfZGFwbV9zd2l0Y2g6CiAJY2FzZSBzbmRfc29jX2Rh cG1fbWl4ZXI6CiAJY2FzZSBzbmRfc29jX2RhcG1fbWl4ZXJfbmFtZWRfY3RsOiB7Ci0JCWludCB2 YWw7CisJCWludCB2YWwsIHZhbDIgPSAwOwogCQlzdHJ1Y3Qgc29jX21peGVyX2NvbnRyb2wgKm1j ID0gKHN0cnVjdCBzb2NfbWl4ZXJfY29udHJvbCAqKQogCQkJdy0+a2NvbnRyb2xfbmV3c1tpXS5w cml2YXRlX3ZhbHVlOwogCQl1bnNpZ25lZCBpbnQgcmVnID0gbWMtPnJlZzsKKwkJdW5zaWduZWQg aW50IHJlZzIgPSBtYy0+cnJlZzsKIAkJdW5zaWduZWQgaW50IHNoaWZ0ID0gbWMtPnNoaWZ0Owor CQl1bnNpZ25lZCBpbnQgcnNoaWZ0ID0gbWMtPnJzaGlmdDsKIAkJaW50IG1heCA9IG1jLT5tYXg7 CiAJCXVuc2lnbmVkIGludCBtYXNrID0gKDEgPDwgZmxzKG1heCkpIC0gMTsKIAkJdW5zaWduZWQg aW50IGludmVydCA9IG1jLT5pbnZlcnQ7CkBAIC0zMjcsNyArMzI5LDE5IEBAIHN0YXRpYyB2b2lk IGRhcG1fc2V0X3BhdGhfc3RhdHVzKHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LAogCQlp ZiAoaW52ZXJ0KQogCQkJdmFsID0gbWF4IC0gdmFsOwogCi0JCXAtPmNvbm5lY3QgPSAhIXZhbDsK KwkJaWYgKHNuZF9zb2Nfdm9sc3dfaXNfc3RlcmVvKG1jKSkgeworCQkJaWYgKHJlZyA9PSByZWcy KSB7CisJCQkJdmFsMiA9IHNvY193aWRnZXRfcmVhZCh3LCByZWcpOworCQkJCXZhbDIgPSAodmFs MiA+PiByc2hpZnQpICYgbWFzazsKKwkJCX0gZWxzZSB7CisJCQkJdmFsMiA9IHNvY193aWRnZXRf cmVhZCh3LCByZWcyKTsKKwkJCQl2YWwyID0gKHZhbDIgPj4gc2hpZnQpICYgbWFzazsKKwkJCX0K KwkJCWlmIChpbnZlcnQpCisJCQkJdmFsMiA9IG1heCAtIHZhbDI7CisJCX0KKworCQlwLT5jb25u ZWN0ID0gdmFsIHx8IHZhbDI7CiAJfQogCWJyZWFrOwogCWNhc2Ugc25kX3NvY19kYXBtX211eDog ewpAQCAtMTM5Nyw2ICsxNDExLDE0IEBAIHN0YXRpYyB2b2lkIGRhcG1fd2lkZ2V0X3VwZGF0ZShz dHJ1Y3Qgc25kX3NvY19kYXBtX2NvbnRleHQgKmRhcG0pCiAJaWYgKHJldCA8IDApCiAJCXByX2Vy cigiJXMgREFQTSB1cGRhdGUgZmFpbGVkOiAlZFxuIiwgdy0+bmFtZSwgcmV0KTsKIAorCWlmICh1 cGRhdGUtPnJtYXNrKSB7CisJCXJldCA9IHNvY193aWRnZXRfdXBkYXRlX2JpdHNfbG9ja2VkKHcs IHVwZGF0ZS0+cnJlZywKKwkJCQkJICB1cGRhdGUtPnJtYXNrLCB1cGRhdGUtPnJ2YWwpOworCQlp ZiAocmV0IDwgMCkKKwkJCXByX2VycigiJXMgREFQTSByaWdodCBjaGFubmVsIHVwZGF0ZSBmYWls ZWQ6ICVkXG4iLAorCQkJICAgICAgIHctPm5hbWUsIHJldCk7CisJfQorCiAJaWYgKHctPmV2ZW50 ICYmCiAJICAgICh3LT5ldmVudF9mbGFncyAmIFNORF9TT0NfREFQTV9QT1NUX1JFRykpIHsKIAkJ cmV0ID0gdy0+ZXZlbnQodywgdXBkYXRlLT5rY29udHJvbCwgU05EX1NPQ19EQVBNX1BPU1RfUkVH KTsKQEAgLTI0NjIsMjEgKzI0ODQsMjkgQEAgaW50IHNuZF9zb2NfZGFwbV9nZXRfdm9sc3coc3Ry dWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCiAJc3RydWN0IHNvY19taXhlcl9jb250cm9sICpt YyA9CiAJCShzdHJ1Y3Qgc29jX21peGVyX2NvbnRyb2wgKilrY29udHJvbC0+cHJpdmF0ZV92YWx1 ZTsKIAl1bnNpZ25lZCBpbnQgcmVnID0gbWMtPnJlZzsKKwl1bnNpZ25lZCBpbnQgcmVnMiA9IG1j LT5ycmVnOwogCXVuc2lnbmVkIGludCBzaGlmdCA9IG1jLT5zaGlmdDsKIAl1bnNpZ25lZCBpbnQg cnNoaWZ0ID0gbWMtPnJzaGlmdDsKIAlpbnQgbWF4ID0gbWMtPm1heDsKLQl1bnNpZ25lZCBpbnQg aW52ZXJ0ID0gbWMtPmludmVydDsKIAl1bnNpZ25lZCBpbnQgbWFzayA9ICgxIDw8IGZscyhtYXgp KSAtIDE7CisJdW5zaWduZWQgaW50IGludmVydCA9IG1jLT5pbnZlcnQ7CiAKIAl1Y29udHJvbC0+ dmFsdWUuaW50ZWdlci52YWx1ZVswXSA9CiAJCShzbmRfc29jX3JlYWQod2lkZ2V0LT5jb2RlYywg cmVnKSA+PiBzaGlmdCkgJiBtYXNrOwotCWlmIChzaGlmdCAhPSByc2hpZnQpCi0JCXVjb250cm9s LT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFdID0KLQkJCShzbmRfc29jX3JlYWQod2lkZ2V0LT5jb2Rl YywgcmVnKSA+PiByc2hpZnQpICYgbWFzazsKLQlpZiAoaW52ZXJ0KSB7CisJaWYgKGludmVydCkK IAkJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPQogCQkJbWF4IC0gdWNvbnRyb2wt PnZhbHVlLmludGVnZXIudmFsdWVbMF07Ci0JCWlmIChzaGlmdCAhPSByc2hpZnQpCisKKwlpZiAo c25kX3NvY192b2xzd19pc19zdGVyZW8obWMpKSB7CisJCWlmIChyZWcgPT0gcmVnMikKKwkJCXVj b250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFdID0KKwkJCQkoc25kX3NvY19yZWFkKHdpZGdl dC0+Y29kZWMsIHJlZykgPj4gcnNoaWZ0KSAmCisJCQkJCQltYXNrOworCQllbHNlCisJCQl1Y29u dHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVsxXSA9CisJCQkJKHNuZF9zb2NfcmVhZCh3aWRnZXQt PmNvZGVjLCByZWcyKSA+PiBzaGlmdCkgJgorCQkJCQkJbWFzazsKKwkJaWYgKGludmVydCkKIAkJ CXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFdID0KIAkJCQltYXggLSB1Y29udHJvbC0+ dmFsdWUuaW50ZWdlci52YWx1ZVsxXTsKIAl9CkBAIC0yNTA0LDExICsyNTM0LDE1IEBAIGludCBz bmRfc29jX2RhcG1fcHV0X3ZvbHN3KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAogCXN0 cnVjdCBzb2NfbWl4ZXJfY29udHJvbCAqbWMgPQogCQkoc3RydWN0IHNvY19taXhlcl9jb250cm9s ICopa2NvbnRyb2wtPnByaXZhdGVfdmFsdWU7CiAJdW5zaWduZWQgaW50IHJlZyA9IG1jLT5yZWc7 CisJdW5zaWduZWQgaW50IHJlZzIgPSBtYy0+cnJlZzsKIAl1bnNpZ25lZCBpbnQgc2hpZnQgPSBt Yy0+c2hpZnQ7CisJdW5zaWduZWQgaW50IHJzaGlmdCA9IG1jLT5yc2hpZnQ7CiAJaW50IG1heCA9 IG1jLT5tYXg7CiAJdW5zaWduZWQgaW50IG1hc2sgPSAoMSA8PCBmbHMobWF4KSkgLSAxOwogCXVu c2lnbmVkIGludCBpbnZlcnQgPSBtYy0+aW52ZXJ0OwotCXVuc2lnbmVkIGludCB2YWw7CisJYm9v bCB0eXBlXzJyID0gMDsKKwl1bnNpZ25lZCBpbnQgdmFsMiA9IDA7CisJdW5zaWduZWQgaW50IHZh bCwgdmFsX21hc2s7CiAJaW50IGNvbm5lY3QsIGNoYW5nZTsKIAlzdHJ1Y3Qgc25kX3NvY19kYXBt X3VwZGF0ZSB1cGRhdGU7CiAJaW50IHdpOwpAQCAtMjUxOCwyNyArMjU1Miw1MyBAQCBpbnQgc25k X3NvY19kYXBtX3B1dF92b2xzdyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKIAogCWlm IChpbnZlcnQpCiAJCXZhbCA9IG1heCAtIHZhbDsKLQltYXNrID0gbWFzayA8PCBzaGlmdDsKKwl2 YWxfbWFzayA9IG1hc2sgPDwgc2hpZnQ7CiAJdmFsID0gdmFsIDw8IHNoaWZ0OwogCisJaWYgKHNu ZF9zb2Nfdm9sc3dfaXNfc3RlcmVvKG1jKSkgeworCQl2YWwyID0gKHVjb250cm9sLT52YWx1ZS5p bnRlZ2VyLnZhbHVlWzFdICYgbWFzayk7CisJCWNvbm5lY3QgfD0gISF2YWwyOworCisJCWlmIChp bnZlcnQpCisJCQl2YWwyID0gbWF4IC0gdmFsMjsKKwkJaWYgKHJlZyA9PSByZWcyKSB7CisJCQl2 YWxfbWFzayB8PSBtYXNrIDw8IHJzaGlmdDsKKwkJCXZhbCB8PSB2YWwyIDw8IHJzaGlmdDsKKwkJ fSBlbHNlIHsKKwkJCXZhbDIgPSB2YWwyIDw8IHNoaWZ0OworCQkJdHlwZV8yciA9IDE7CisJCX0K Kwl9CisKIAltdXRleF9sb2NrX25lc3RlZCgmY2FyZC0+ZGFwbV9tdXRleCwgU05EX1NPQ19EQVBN X0NMQVNTX1JVTlRJTUUpOwogCi0JY2hhbmdlID0gc25kX3NvY190ZXN0X2JpdHMod2lkZ2V0LT5j b2RlYywgcmVnLCBtYXNrLCB2YWwpOworCWNoYW5nZSA9IHNuZF9zb2NfdGVzdF9iaXRzKHdpZGdl dC0+Y29kZWMsIHJlZywgdmFsX21hc2ssIHZhbCk7CisJaWYgKHR5cGVfMnIpCisJCWNoYW5nZSB8 PSBzbmRfc29jX3Rlc3RfYml0cyh3aWRnZXQtPmNvZGVjLAorCQkJCQkgICAgcmVnMiwgdmFsX21h c2ssIHZhbDIpOworCiAJaWYgKGNoYW5nZSkgewogCQlmb3IgKHdpID0gMDsgd2kgPCB3bGlzdC0+ bnVtX3dpZGdldHM7IHdpKyspIHsKIAkJCXdpZGdldCA9IHdsaXN0LT53aWRnZXRzW3dpXTsKIAog CQkJd2lkZ2V0LT52YWx1ZSA9IHZhbDsKLQogCQkJdXBkYXRlLmtjb250cm9sID0ga2NvbnRyb2w7 CiAJCQl1cGRhdGUud2lkZ2V0ID0gd2lkZ2V0OwogCQkJdXBkYXRlLnJlZyA9IHJlZzsKLQkJCXVw ZGF0ZS5tYXNrID0gbWFzazsKKwkJCXVwZGF0ZS5tYXNrID0gdmFsX21hc2s7CiAJCQl1cGRhdGUu dmFsID0gdmFsOwotCQkJd2lkZ2V0LT5kYXBtLT51cGRhdGUgPSAmdXBkYXRlOwogCi0JCQlzb2Nf ZGFwbV9taXhlcl91cGRhdGVfcG93ZXIod2lkZ2V0LCBrY29udHJvbCwgY29ubmVjdCk7CisJCQlp ZiAodHlwZV8ycikgeworCQkJCXdpZGdldC0+cnZhbHVlID0gdmFsMjsKKwkJCQl1cGRhdGUucnJl ZyA9IHJlZzI7CisJCQkJdXBkYXRlLnJtYXNrID0gdmFsX21hc2s7CisJCQkJdXBkYXRlLnJ2YWwg PSB2YWwyOworCQkJfSBlbHNlIHsKKwkJCQl1cGRhdGUucm1hc2sgPSAwOworCQkJfQogCisJCQl3 aWRnZXQtPmRhcG0tPnVwZGF0ZSA9ICZ1cGRhdGU7CisJCQlzb2NfZGFwbV9taXhlcl91cGRhdGVf cG93ZXIod2lkZ2V0LCBrY29udHJvbCwgY29ubmVjdCk7CiAJCQl3aWRnZXQtPmRhcG0tPnVwZGF0 ZSA9IE5VTEw7CiAJCX0KIAl9CkBAIC0yNjI3LDYgKzI2ODcsNyBAQCBpbnQgc25kX3NvY19kYXBt X3B1dF9lbnVtX2RvdWJsZShzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKIAkJCXVwZGF0 ZS5yZWcgPSBlLT5yZWc7CiAJCQl1cGRhdGUubWFzayA9IG1hc2s7CiAJCQl1cGRhdGUudmFsID0g dmFsOworCQkJdXBkYXRlLnJtYXNrID0gMDsKIAkJCXdpZGdldC0+ZGFwbS0+dXBkYXRlID0gJnVw ZGF0ZTsKIAogCQkJc29jX2RhcG1fbXV4X3VwZGF0ZV9wb3dlcih3aWRnZXQsIGtjb250cm9sLCBt dXgsIGUpOwpAQCAtMjc5Myw2ICsyODU0LDcgQEAgaW50IHNuZF9zb2NfZGFwbV9wdXRfdmFsdWVf ZW51bV9kb3VibGUoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCiAJCQl1cGRhdGUucmVn ID0gZS0+cmVnOwogCQkJdXBkYXRlLm1hc2sgPSBtYXNrOwogCQkJdXBkYXRlLnZhbCA9IHZhbDsK KwkJCXVwZGF0ZS5ybWFzayA9IDA7CiAJCQl3aWRnZXQtPmRhcG0tPnVwZGF0ZSA9ICZ1cGRhdGU7 CiAKIAkJCXNvY19kYXBtX211eF91cGRhdGVfcG93ZXIod2lkZ2V0LCBrY29udHJvbCwgbXV4LCBl KTsKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWxzYS1k ZXZlbCBtYWlsaW5nIGxpc3QKQWxzYS1kZXZlbEBhbHNhLXByb2plY3Qub3JnCmh0dHA6Ly9tYWls bWFuLmFsc2EtcHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbHNhLWRldmVsCg==