From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935948AbcKPCVT (ORCPT ); Tue, 15 Nov 2016 21:21:19 -0500 Received: from relmlor2.renesas.com ([210.160.252.172]:31231 "EHLO relmlie1.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932228AbcKPCVO (ORCPT ); Tue, 15 Nov 2016 21:21:14 -0500 X-IronPort-AV: E=Sophos;i="5.31,497,1473087600"; d="scan'";a="226094779" Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; Message-ID: <87fumsw4hf.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH v4 07/12] ASoC: simple-card-utils: add asoc_simple_card_try_to_probe_graph_card() User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") To: Rob Herring , Mark Brown CC: Linux-ALSA , Liam Girdwood , Simon , Laurent , Guennadi , Grant Likely , Frank Rowand , Linux-DT , Linux-Kernel In-Reply-To: <87polww4o2.wl%kuninori.morimoto.gx@renesas.com> References: <87polww4o2.wl%kuninori.morimoto.gx@renesas.com> Content-Type: text/plain; charset="US-ASCII" Date: Wed, 16 Nov 2016 02:20:58 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: OS2PR01CA0078.jpnprd01.prod.outlook.com (10.165.51.166) To KL1PR0601MB1448.apcprd06.prod.outlook.com (10.169.69.26) X-Microsoft-Exchange-Diagnostics: 1;KL1PR0601MB1448;2:BAjsEBkFxL9boe5l/7UtQz4wP3PNYkvwYASePH+Tj9oS6LMOkMuj87xdb2I2GhAIx1ItGXzECCc6okgtTgCZbe/jdJEYHzt/YJ2NcQEPezb1TmNkqrIwbfqvN/vfC/fu44TESp2U1MnrENh8Ki+xvZ5Vx5z5GX3GF7aiR2w2NSI=;3:0S9jIIB1OiFT1VHSL3vJqMLrPsxnYmHv11EZWWbt4xMA7PJ+b3qDyCPQJiHkEu1McdjQWcbCTKAA/hsG51JHfDHrFOM8btrMwzJLbQAUtpKGYQKMJepOZj6bDeBA+6S9mWbDsUThbwfyJUR22P72i8D+78cTQLoTXKFmHIHkU3I= X-MS-Office365-Filtering-Correlation-Id: 8aff9ffe-d41b-42fe-504a-08d40dc7357d X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:KL1PR0601MB1448; X-Microsoft-Exchange-Diagnostics: 1;KL1PR0601MB1448;25:DAOUvO9a2Hx0KREWDrrfJK64KE/uDk1vx6zPqnGIkyV4CDuBXl+8Pg9x/yhtnJLIvJWrGzKgy8M7fR7WY7vzllv7P+n4JxZqc47ot+15muBRDjR5IVy2iR5Z9YtN5o+oRaKX+4ZmML4ebBIj2yNJ8rk/FF/ah6LiX1NcRjz5qDgl6iBijzECl1ZY5pZpD5IQw40lFbv4fCKyP9j+IQ5CVDz5iHAOlvwg6vOoTRfvSy97rK4cZfeeorO0dTDM/v7rFLY94GB6B9UMUCZPhW7vQhEefJd4QDDHz3GIxjvtjZFFuVY9qB864w4sLGUWLJCFYy6zvA8KRyMqGOcGXMPKdmpZJVHq3i8qJgl2wzJO3xdKICYSt8v84qV++ArdTH3g8uqYn9nsPj0sqDhy+ucPARL7Qag6kplqLUfYswrbpD1LNzt9QL5GTtFQMPAKNLV0Lm7wDFs1WWmya/bvdqsKNQTkoROhG64/kf92NPf0IIWI5vYgg6PN2ge1TP//y64e9qB57iWjx8BjCBJSG8NC/Pf43N8wwIJBEOdeCJCSaU5gOuTaK7NbQSvObMXrnHA9gHrt7Ij1HZMsy1ZS7nhMeNM3BNeKDKMCSSk5QQ8LyWRO7EpuMb7yxZJsBgSihG/QYJh29LFaTFx34aVh37OM1/YK8zP1gkiey/qumT3uy+/X5YZjdzcbK/85v6Zgrl7tpemQ5MkqDfm0USZvoQoXvHOXlzYTWpxfKOUXnH5+W4KN81wJBeDfNCrOecVWzQSa X-Microsoft-Exchange-Diagnostics: 1;KL1PR0601MB1448;31:uYCusLFuH9xsfAc90thx8mzA5rYKGyMnS/vGkf/sPrJEDxUDjYSb7n04tIM+zJLnq2K4l0RIOYio/mREeTngpt/6HieZmL6it8OiQ2pAnmzpE+RSJJNuf9dt1GNGdFJpuNxovF03ybJwy6ggFNXPYu4FlHPvORrShKbrONLKtnqFD6/mijOOG1JPQTD8BC3p5y0039mONxW54xFtW3c80VkCkxUJieU1BZuA1kMZ1wOWKvTu1lJw6oNwOxguBfpHYj3WGU5+rThCQWMPjEWk9Q==;20:YECXL5i/OpBfkuYDiLYWglsreqDqCTG0uzI8/zkfYQWR8ctmATcFed9L9T1QQeYzT6kOHLQDalQEzCXCiriwgLwdvHqy3bXJzaxs7PEGBiL9SkXKemp6Ynooryw484BbExgfJkiBkDbfFvdulpsIDj7tU9SkibSB0Hn9TDV+mTDqTTjkAH34mpar5wmf/cL5MwcqY4ntiiAs0TnS418t8gngxXp5/ztOlcp+b5K4neKkYJu5j/MQV6pMfy7Z4gstuhPiNZb9KV+fOlU6NozqK5SIBfkMesJ9/CCwHBRHOoUWszB/AFNJ+EgvEi3etFfs10FhhBggg6ByKlRRGTnU7d0b7FzuLZHm1mmSNe6Pz1NHxjEZV85ckqeXbLeOZsjMa/5Ch6IRvLHExEROPUgJ+PN/x2fEEvUdczeY371uhHBgwZH5e+WbRl/3bkgJhARpxHV4yx8HGbpX5y2YpCDejplH06+j+lVdfsE/hur001m/kr+DfPOUeEwqx713Je5D X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6060326)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6061324);SRVR:KL1PR0601MB1448;BCL:0;PCL:0;RULEID:;SRVR:KL1PR0601MB1448; X-Microsoft-Exchange-Diagnostics: 1;KL1PR0601MB1448;4:KwMpgVRaa3paPJ8TulxRJe8hUoCMcao2tFnYBht/NRh896l+zSUDsv/59OJ3Ex7uDY94jVklUHzWWCZIHgRGk2jOHpiqhx+lNob9OVCgFCkWymUa+GVOjy+vDKPLiXw/aOZ45FlFaDlPC6oTAdezqRnPXF+3Eo3FDiqCa1uYjO2DhDXJnveiM5+uOlglNjcgIIrtOxf1OGos2c3HcLIcsoPFNhsljaNTmGyIW0PgBKyDa9KNOkLimlKj05Zac4UOjcqgHQLbEO3B9aCzpLqK83nVQy3+ezd9RDWOwKUOeEllH6LePzLRpDw208JJAc4la1VccD5v6Gpxjr2F4a9nt5VKcruXLLfexypJrQPu0wpgFG8cGfgza99OCDo9FQqI3Y1tQsAxzBzpJjLT7XPowmeCeyLiri/HKeKO/swSU1JK8/GKGfvfIKYjxUVZNKWi X-Forefront-PRVS: 01283822F8 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(68736007)(46406003)(3846002)(92566002)(23726003)(6116002)(86362001)(36756003)(53416004)(66066001)(4326007)(5660300001)(69596002)(33646002)(83506001)(189998001)(76176999)(106356001)(2906002)(50466002)(77096005)(105586002)(47776003)(8676002)(42186005)(8666005)(305945005)(230783001)(5001770100001)(101416001)(7736002)(97736004)(54356999)(7846002)(50986999)(81166006)(7416002)(4001350100001)(81156014)(2950100002)(7059030)(2004002)(21314002)(16060500001);DIR:OUT;SFP:1102;SCL:1;SRVR:KL1PR0601MB1448;H:morimoto-PC.renesas.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;KL1PR0601MB1448;23:wj9EpUueTu6Ql3Zuajg9CFEdWfLJoWr/DxGDbmQ?= =?us-ascii?Q?y9pOHWeUoTP+ZaQavs3R/H0uNVcC6duDYjdmlkGszBM7Nvr7hVs2+3b69QTn?= =?us-ascii?Q?xuKDhDYPlsoXXiEv1zbskfgE0yi4Lk8NAlmTC7oEBzsmD5M62/b0NI8x+JCv?= =?us-ascii?Q?TPoqsVNfRVAHUdXXPUiSB19XCtKbFLeO6qb9HctgDG0cW+SGJFGiBY/qxIsg?= =?us-ascii?Q?YdpaBBM6ls/w0y/W6P1hK2Hqak675Y9JNQ2Wsuym9hc4cwpodN1giXER8e07?= =?us-ascii?Q?1NQzr4AShXpv4epFseWh7n7cWJr5AiQ8KVg+ly40xFlYgJC60YqPc5ldJH8i?= =?us-ascii?Q?ws9cZskvaBzN8fxZ0R1GMcta6foRs5lzpj7nMit3axWliYOfENaNRExuyr1s?= =?us-ascii?Q?LRoXpmhJ+evOk2RbRvVxZsbvqG7qapwlzdye8LKhWa0ibJ6fAfOUrrr6hoZd?= =?us-ascii?Q?2RcRP9jI2RP6gGztQQWbTd/0sGZm0lCXC0xlfyTal4JtttbgiLgls7r/ChDV?= =?us-ascii?Q?7AGnYA4y8cByZ+itUUVEDZxaVkNMJqDWXeTrmYgR8NV6t5gI7wQFAnh3LHBQ?= =?us-ascii?Q?QfI1lLy3awFW9ZfXAdUtoYxhkdWQJbuiYoImrltqVXXbuaDyMqbsNKSZyY/h?= =?us-ascii?Q?5YN31utqFia66I1ezRAxv9HMQppFVdvFMMf8nyV5AzxLg1ANmytBEzzoztCB?= =?us-ascii?Q?xy38sTO71BhEmKiolET2eSvYyFud5Td/aYRLCM0a0AuZClOXaqolyoja2aYP?= =?us-ascii?Q?tgfN11dsSHXRcG7MVRa9e0HDFdw4rxm87kxU+G8fAhN6f9q+8hTK7LL7Dl06?= =?us-ascii?Q?yHLMjGIwyF+qMcBzCE98w2AGUIngTwCgTThRuT15JmKP4Exurw4X63mJIoIY?= =?us-ascii?Q?LIq2SCbXc1j2d0iFEmd5/5IknMII85hUC5BpH9otY3Nmy70mWoxylVEm7NNN?= =?us-ascii?Q?aQtaJder5a7ovEa1AHpBxz74fJCvfx2cHs/5zkjsOx/H5re/i6lvQQ9ks0S1?= =?us-ascii?Q?UWdR0rJiKj3Pk3HIV287Y/uYNoVlgadciy2ED7AHWog96fWqW0IeFNE/ZUk0?= =?us-ascii?Q?xd7l2jCTWjs+24OGve68h5yzcXQNwCzAjeGuOhVQAu/zMsS01NcVWTgEl00c?= =?us-ascii?Q?fhXjJXc/mBiEZ1Lz97ST5Pv2Gtygb8oWOIRqXXW+QIfIfICb06nkyPqU2wPf?= =?us-ascii?Q?ZvUf0KM37Em2iYPpPyNO86tFgZ6m2Qim3wtsXSkVMYKAz8G1EGbTp27zEzg?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;KL1PR0601MB1448;6:4hkBXVKm8oVnC2FHtv6ys5NxZma3X9jVDoUYyZJSd4z791P5l+K7VYqkjyaxrC9wnIAa1tB7kzc0lPixED2wyizjUwuZ1LNSHOhoTis79Zij27mRYrRLPUdVEgBVfjU2GPt/lUyTcbBsJ++tS2MQJW29WUOAVteRwY/P5gj2on0tpubvqp5sdGjihktk5zxq38ThaxCvhqv0XU7doEpUJ0r8OwzokoKNn1zbLc6qaY3Sp5CXVD2x0yiyz0ao7oPIPaQG5xOL4wztiVQJMQ8qq8DRnLYrZMUEnBuf5+avDtEybira8fXJ+1HVR8X+xdJF+wmFFuZKWQ6/H6SQNpX7kvaIXn90aMLZ314AZfsJBvygYpMfleHxzwUDNFCDueeU;5:cRnwC79CBCyP2NHmXNFrGdng1V1EcQC9ZxESoFe5Q/kUw0Cb7YbFpDTT+QxgiJz3+4qDWqAOJn/CDzmyLysFLwmX4ONcKUoVbAbjyiZpKPc8stozEDBd4tMneR2X57BgArxfDzMwG75puemwfSpW9A==;24:/YPS0rluZGzpK9s36kaiVlq3lhqtC52H+rsuIUwbVgoFqHtq2j7zYpj73XQHJJozDbhgOjidI8Ke5/1WmyhCtAZmOKf1ncZqFof6gskAfAo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;KL1PR0601MB1448;7:caeRTBlbo75Z+Z5quj4vtYjmD/XRJU7jHnejBGI56HTQRnTYwm9KZfTCNdNviAyzWj1CxhdluMWkBIFqrphHdkQfvc0y1AE3l+Rp6Mq0H+72Yp872lFFdAGyBZnMVUSG+j2AHBO98vvqu+AVgHbTIYCJLNQNTP51PZBjGrCvGhjffE3wHsfMR8NggwgaiO8kgaEaTjLt0Awe6LiUhhG3OcxE6xR8DmPS6LgiM0fo2fzAAS/7fvEXB4t8EbuKPFQU8g06DUWfCu6uDogvHBlhBQ+xig4cMwpd4ow3dG/E0FtLXgGJ0pAgp6ZAWDAUkZ9+47WMvtpzShxPv++WUs7eSmyk/Irn79EBC1iZDSsY118=;20:uln0tB9uayCjE/zI6dvDEH8xumqSqWR4SdJkR9CSjUSBmahCggr0Y9OlU1NHFtTdmvlz0vPBt4TeTFw7x1uGwYvKV8BNTsXrwwI6nG6de9/727Oi+uRguggRct/3qUsrDYf9nh+sxTwTvqswQntrO5SKGkYsnPly30EXqLbnZVo= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Nov 2016 02:20:58.0250 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR0601MB1448 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kuninori Morimoto If CPU/Platform side driver probes successfully, and if it is supporting both previous normal sound card style and graph style DT, it can call asoc_simple_card_try_to_probe_graph_card(). It checks graph style DT, and do nothing if it was non graph style DT, or register new simple-graph-card driver if graph style DT. Signed-off-by: Kuninori Morimoto --- v3 -> v4 - no change include/sound/simple_card_utils.h | 8 +++++++ sound/soc/generic/simple-card-utils.c | 45 +++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h index 4b58954..7006150 100644 --- a/include/sound/simple_card_utils.h +++ b/include/sound/simple_card_utils.h @@ -22,6 +22,10 @@ struct asoc_simple_dai { struct clk *clk; }; +struct asoc_simple_graph_card_info { + int endpoint_num; /* sound endpoint number */ +}; + int asoc_simple_card_parse_daifmt(struct device *dev, struct device_node *node, struct device_node *codec, @@ -78,4 +82,8 @@ void asoc_simple_card_canonicalize_cpu(struct snd_soc_dai_link *dai_link, int asoc_simple_card_clean_reference(struct snd_soc_card *card); +void asoc_simple_card_try_to_probe_graph_card(struct device *dev, + struct asoc_simple_graph_card_info *info); + + #endif /* __SIMPLE_CARD_CORE_H */ diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c index 373ada3..85120f5 100644 --- a/sound/soc/generic/simple-card-utils.c +++ b/sound/soc/generic/simple-card-utils.c @@ -8,6 +8,7 @@ * published by the Free Software Foundation. */ #include +#include #include #include #include @@ -285,6 +286,50 @@ int asoc_simple_card_clean_reference(struct snd_soc_card *card) } EXPORT_SYMBOL_GPL(asoc_simple_card_clean_reference); +void asoc_simple_card_try_to_probe_graph_card(struct device *dev, + struct asoc_simple_graph_card_info *info) +{ + struct platform_device_info pdevinfo; + struct device_node *node; + const char *compatible; + int ret; + + node = of_graph_get_top_port(dev); + if (!node || !info) + /* + * It doesn't have graph base sound DT, or its infomation. + * Do nothing here, It assumes that system has + * normal sound card. + */ + return; + + ret = of_property_read_string(node, "compatible", &compatible); + if (ret < 0) + goto probe_err; + + /* + * FIXME + * + * It should use of_platform_xxx() instead of + * platform_device_register_full() ? but there is no solution. + * see also + * linux/sound/soc/generic/simple-graph-card.c :: asoc_simple_card_probe + */ + + memset(&pdevinfo, 0, sizeof(pdevinfo)); + pdevinfo.parent = dev; + pdevinfo.id = PLATFORM_DEVID_AUTO; + pdevinfo.name = compatible; + pdevinfo.dma_mask = DMA_BIT_MASK(32); + pdevinfo.data = info; + pdevinfo.size_data = sizeof(*info); + platform_device_register_full(&pdevinfo); + +probe_err: + of_node_put(node); +} +EXPORT_SYMBOL_GPL(asoc_simple_card_try_to_probe_graph_card); + /* Module information */ MODULE_AUTHOR("Kuninori Morimoto "); MODULE_DESCRIPTION("ALSA SoC Simple Card Utils"); -- 1.9.1