From 1cec985c9fa102ddc5d24ddddc000c1506eec10a Mon Sep 17 00:00:00 2001 From: Richard Zhao Date: Mon, 5 Mar 2012 22:31:04 +0800 Subject: [PATCH] --- yaml --- r: 293463 b: refs/heads/master c: 9d5ef2663fe220a88412a7190942b7d933da0333 h: refs/heads/master i: 293461: df258c1410e81ddcdc4fb4dff8eae7da85eba214 293459: d6b96bedf7d0764e1ee138b3fe4c5eea92a6a757 293455: 156281614c14faae56e1504b22f85865aa86fa08 v: v3 --- [refs] | 2 +- .../devicetree/bindings/sound/imx-audmux.txt | 13 +++++++++++++ trunk/sound/soc/imx/imx-audmux.c | 14 ++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 trunk/Documentation/devicetree/bindings/sound/imx-audmux.txt diff --git a/[refs] b/[refs] index fe8e18a1cf38..0ffbad20fb3e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f320515a589eeb9bfbc317801e60b87a12f9eae1 +refs/heads/master: 9d5ef2663fe220a88412a7190942b7d933da0333 diff --git a/trunk/Documentation/devicetree/bindings/sound/imx-audmux.txt b/trunk/Documentation/devicetree/bindings/sound/imx-audmux.txt new file mode 100644 index 000000000000..215aa9817213 --- /dev/null +++ b/trunk/Documentation/devicetree/bindings/sound/imx-audmux.txt @@ -0,0 +1,13 @@ +Freescale Digital Audio Mux (AUDMUX) device + +Required properties: +- compatible : "fsl,imx21-audmux" for AUDMUX version firstly used on i.MX21, + or "fsl,imx31-audmux" for the version firstly used on i.MX31. +- reg : Should contain AUDMUX registers location and length + +Example: + +audmux@021d8000 { + compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux"; + reg = <0x021d8000 0x4000>; +}; diff --git a/trunk/sound/soc/imx/imx-audmux.c b/trunk/sound/soc/imx/imx-audmux.c index 87f8768e1cdc..b83699d905bb 100644 --- a/trunk/sound/soc/imx/imx-audmux.c +++ b/trunk/sound/soc/imx/imx-audmux.c @@ -22,6 +22,8 @@ #include #include #include +#include +#include #include #include @@ -197,6 +199,13 @@ static struct platform_device_id imx_audmux_ids[] = { }; MODULE_DEVICE_TABLE(platform, imx_audmux_ids); +static const struct of_device_id imx_audmux_dt_ids[] = { + { .compatible = "fsl,imx21-audmux", .data = &imx_audmux_ids[0], }, + { .compatible = "fsl,imx31-audmux", .data = &imx_audmux_ids[1], }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, imx_audmux_dt_ids); + static const uint8_t port_mapping[] = { 0x0, 0x4, 0x8, 0x10, 0x14, 0x1c, }; @@ -243,6 +252,8 @@ EXPORT_SYMBOL_GPL(imx_audmux_v2_configure_port); static int __init imx_audmux_probe(struct platform_device *pdev) { struct resource *res; + const struct of_device_id *of_id = + of_match_device(imx_audmux_dt_ids, &pdev->dev); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); audmux_base = devm_request_and_ioremap(&pdev->dev, res); @@ -256,6 +267,8 @@ static int __init imx_audmux_probe(struct platform_device *pdev) audmux_clk = NULL; } + if (of_id) + pdev->id_entry = of_id->data; audmux_type = pdev->id_entry->driver_data; if (audmux_type == IMX31_AUDMUX) audmux_debugfs_init(); @@ -279,6 +292,7 @@ static struct platform_driver imx_audmux_driver = { .driver = { .name = DRIVER_NAME, .owner = THIS_MODULE, + .of_match_table = imx_audmux_dt_ids, } };