From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E360DC433DB for ; Tue, 23 Mar 2021 20:57:08 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0CBFD619CE for ; Tue, 23 Mar 2021 20:57:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0CBFD619CE Authentication-Results: mail.kernel.org; dmarc=pass (p=none dis=none) header.from=alsa-project.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 7A8181663; Tue, 23 Mar 2021 21:56:14 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 7A8181663 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1616533024; bh=/zkSo02U6CpimDARC9HCP05PtBc7+VuI1pNmhrZCbpE=; h=From:To:In-Reply-To:References:Subject:Date:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=O9tPLTJ1U1P8qXjCkD10ud8T1Wlt4JbvBBNjRk4qUb+3FViuvNkV5klMsxbFs9kWQ 8KN1DkMu8t3XVh7PhSJhV4TzDVI/efRw4ZvjE2355xtVBFqIL5YZ2I3ZWWHhd7vBMq h9GEGE8Q4FRnw1s0T3J3lBPUCKPpSQxMReBCrIJs= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 03908F80104; Tue, 23 Mar 2021 21:56:13 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 02C5EF8025F; Tue, 23 Mar 2021 21:56:12 +0100 (CET) Received: from webhooks-bot.alsa-project.org (gate.perex.cz [77.48.224.242]) by alsa1.perex.cz (Postfix) with ESMTP id BA5CEF80104 for ; Tue, 23 Mar 2021 21:56:04 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz BA5CEF80104 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit From: GitHub pull_request - opened To: alsa-devel@alsa-project.org In-Reply-To: <1616532963879401922-webhooks-bot@alsa-project.org> References: <1616532963879401922-webhooks-bot@alsa-project.org> Subject: Intro and prep for Topology2.0 Message-Id: <20210323205612.02C5EF8025F@alsa1.perex.cz> Date: Tue, 23 Mar 2021 21:56:12 +0100 (CET) X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" alsa-project/alsa-lib pull request #129 was opened from ranj063: This pull request includes the preparatory commits paving the way for introducing Topology2.0. An example implementation of topology with Topology2.0 can be found here: https://github.com/thesofproject/sof/pull/3936 **Introduction to Topology 2.0** ----- Topology2.0 is a high level keyword extension on top of the existing ALSA conf topology format designed to: 1) Simplify the ALSA conf topology definitions by providing high level "classes" so topology designers need to write less config for common object definitions. 2) Allow simple reuse of objects. Define once and reuse (like M4) with the ability to alter objects configuration attributes from defaults. 3) Allow data type and value verification. This is not done today and frequently crops up in FW bug reports. **Common Topology Classes** ----------------------- Topology today has some common classes that are often reused throughout with slightly altered configurations. i.e. widgets (components), pipelines, dais and controls. This PR introduces the high level concept of reusable "class" like definition for a AIF_IN/AIF_OUT type object that can be used to create topology objects. **Common Topology Attributes** -------------------------- Topology defines a lot of attributes per object with different types and constraints. Today there is no easy way to validate type or constraints and this can lead to many hard to find problems in FW at runtime. A new keyword "DefineAttribute" has been added to define attribute type, size, min value, max value, enum_values. This then allows alsatplg to validate each topology object attribute. Topology Classes define the list of attributes that they use and whether the attribute is mandatory, can be overridden by parent users or is immutable. This also helps alsatplg emit the appropriate errors for attribute misuse. **Common Topology Arguments** ------------------------- Arguments are used to pass essential data needed for instantiating an object particularly needed for the object name. A new keyword "DefineArgument" has been added to define the arguments. The order in which the arguments are defined determines the name for the widget. For example, in the case of the host widget, the name would be constructed as "host.1.playback" where "1" is the pipeline_id argument value and "playback" is the direction argument value. **Attribute Inheritance:** ---------------------- One of the key features of Topology2.0 is howthe attribute values are propagated from a parent object to a child object. This is accomplished by adding attributes/arguments with the same name for a parent and an object. By doing so, when creating a child object, the value for the common attribute is populated from the parent. If the value is provided in the child object instance, then it overrides the value coming from the parent. **ALSA Conf Parser** ---------------- All the changes being proposed and discussed here must be 100% compliant with the ALSA conf parser. i.e. no syntax changes or changes to semantics for any existing keyword. It's intended that there will be NO changes to the ALSA conf parser and all topology building changes will be in the alsatplg compiler. Request URL : https://github.com/alsa-project/alsa-lib/pull/129 Patch URL : https://github.com/alsa-project/alsa-lib/pull/129.patch Repository URL: https://github.com/alsa-project/alsa-lib