mop500 related Audio reorganisation and fixups
Subsystems (7)
cover mop500 related Audio reorganisation and fixups
Another fine instalment of Audio fixes and Device Tree enablement surrounding the mop500 sound driver. Hopefully containing all of the recommendations suggested by Mark Brown.
Documentation/devicetree/bindings/mfd/ab8500.txt | 15 + .../devicetree/bindings/sound/ux500-mop500.txt | 39 ++ .../devicetree/bindings/sound/ux500-msp.txt | 43 ++ arch/arm/boot/dts/db8500.dtsi | 627 ------------------ arch/arm/boot/dts/dbx5x0.dtsi | 666 ++++++++++++++++++++ arch/arm/boot/dts/snowball.dts | 18 +- arch/arm/mach-ux500/Makefile | 2 +- arch/arm/mach-ux500/board-mop500-audio.c | 189 ++++++ arch/arm/mach-ux500/board-mop500-msp.c | 267 -------- arch/arm/mach-ux500/board-mop500-msp.h | 14 - arch/arm/mach-ux500/board-mop500.c | 18 +- arch/arm/mach-ux500/board-mop500.h | 6 + arch/arm/mach-ux500/include/mach/msp.h | 2 - include/linux/mfd/abx500/ab8500-codec.h | 6 +- sound/soc/codecs/ab8500-codec.c | 85 +++ sound/soc/ux500/mop500.c | 44 +- sound/soc/ux500/ux500_msp_dai.c | 20 +- sound/soc/ux500/ux500_msp_i2s.c | 97 ++- sound/soc/ux500/ux500_msp_i2s.h | 2 - sound/soc/ux500/ux500_pcm.c | 19 +- sound/soc/ux500/ux500_pcm.h | 3 + 21 files changed, 1225 insertions(+), 957 deletions(-)
PATCH 1/22 ARM: ux500: Fix merge error, no matching driver name for 'snd_soc_u8500'
The platform attempts to register platform device 'snd_soc_u8500' which doesn't actually exist. Here we change the reference to the correct one 'snd_soc_mop500'.
--- arch/arm/mach-ux500/board-mop500-msp.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
arch/arm/mach-ux500/board-mop500-msp.c +5 -5
@@ -191,9 +191,9 @@ static struct platform_device *db8500_add_msp_i2s(struct device *parent,return pdev; } -/* Platform device for ASoC U8500 machine */ -static struct platform_device snd_soc_u8500 = { - .name ="snd-soc-u8500" , +/* Platform device for ASoC MOP500 machine */ +static struct platform_device snd_soc_mop500 = { + .name ="snd-soc-mop500" , .id =0 , .dev = { .platform_data =NULL ,
@@ -227,8 +227,8 @@ int mop500_msp_init(struct device *parent) {struct platform_device *msp1; -pr_info ("%s: Register platform-device 'snd-soc-u8500'.\n" , __func__); -platform_device_register (&snd_soc_u8500); +pr_info ("%s: Register platform-device 'snd-soc-mop500'.\n" , __func__); +platform_device_register (&snd_soc_mop500);pr_info ("Initialize MSP I2S-devices.\n" ); db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
Signature · 1 line
1.7.9.5
Linus Walleij
AppliedRe: [PATCH 01/22] ARM: ux500: Fix merge error, no matching driver name for 'snd_soc_u8500'
Quoted 5 lines · Lee Jones
The platform attempts to register platform device '
snd_soc_u8500' which doesn't actually exist. Here we change the reference to the correct one 'snd_soc_mop500'.Signed-off-by Lee Jones <[email protected]>
Applied to fixes. I will send this upstream for the -rc:s.
Yours,
Linus Walleij
PATCH 2/22 ARM: ux500: Ensure probing of Audio devices when Device Tree is enabled
In reply to Lee JonesPrevious attempts to add platform probing of the Audio related devices only call from non-DT initialisation functions. This patch extends that functionality to the Device Tree related ones too.
--- arch/arm/mach-ux500/board-mop500.c | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm/mach-ux500/board-mop500.c +4 -0
@@ -799,6 +799,7 @@ static void __init u8500_init_machine(void) ARRAY_SIZE(mop500_platform_devs));mop500_sdi_init (parent); +mop500_msp_init (parent); i2c0_devs =ARRAY_SIZE (mop500_i2c0_devices);i2c_register_board_info (0 , mop500_i2c0_devices, i2c0_devs); i2c_register_board_info(2, mop500_i2c2_devices,
@@ -806,6 +807,8 @@ static void __init u8500_init_machine(void)mop500_uib_init (); + }else if (of_machine_is_compatible ("calaosystems,snowball-a9500" )) { +mop500_msp_init (parent); }else if (of_machine_is_compatible ("st-ericsson,hrefv60+" )) {/* * The HREFv60 board removed a GPIO expander and routed
@@ -817,6 +820,7 @@ static void __init u8500_init_machine(void) ARRAY_SIZE(mop500_platform_devs));hrefv60_sdi_init (parent); +mop500_msp_init (parent); i2c0_devs =ARRAY_SIZE (mop500_i2c0_devices); i2c0_devs -=NUM_PRE_V60_I2C0_DEVICES ;
Signature · 1 line
1.7.9.5
Linus Walleij
AppliedRe: [PATCH 02/22] ARM: ux500: Ensure probing of Audio devices when Device Tree is enabled
Quoted 5 lines · Lee Jones
Previous attempts to add platform probing of the Audio related devices only call from non-DT initialisation functions. This patch extends that functionality to the Device Tree related ones too.
Signed-off-by Lee Jones <[email protected]>
Applied to ux500 fixes. Will send upstream for the -rc:s.
Yours,
Linus Walleij
PATCH 3/22 ASoC: ab8500: Inform SoC Core that we have our own I/O arrangements
In reply to Lee JonesIf codec->control_data is not populated SoC Core assumes we want to use regmap, which fails catastrophically, as we don't have one:
Unable to handle kernel NULL pointer dereference at virtual address 00000080 pgd = c0004000 [00000080] *pgd=00000000 Internal error: Oops: 17 [#1] PREEMPT SMP ARM Modules linked in: CPU: 1 Not tainted (3.5.0-rc6-00884-g0b2419e-dirty #130) PC is at regmap_read+0x10/0x5c LR is at hw_read+0x80/0x90 pc : [<c01a91b8>] lr : [<c0216804>] psr: 60000013
--- sound/soc/codecs/ab8500-codec.c | 4 ++++ 1 file changed, 4 insertions(+)
sound/soc/codecs/ab8500-codec.c +4 -0
@@ -2406,6 +2406,10 @@ static int ab8500_codec_probe(struct snd_soc_codec *codec)/* Setup AB8500 according to board-settings */ pdata = (struct ab8500_platform_data *)dev_get_platdata (dev->parent); + +/* Inform SoC Core that we have our own I/O arrangements. */ + codec->control_data = (void *)true; + status =ab8500_audio_setup_mics (codec, &pdata->codec->amics);if (status <0 ) {pr_err ("%s: Failed to setup mics (%d)!\n" , __func__, status);
Signature · 1 line
1.7.9.5
Re: [PATCH 03/22] ASoC: ab8500: Inform SoC Core that we have our own I/O arrangements
Quoted 13 lines · Lee Jones
If
codec->control_datais not populated SoC Core assumes we want to use regmap, which fails catastrophically, as we don't have one:Unable to handle kernel NULL pointer dereference at virtual address 00000080 pgd = c0004000 [00000080] *pgd=00000000 Internal error: Oops: 17 [#1] PREEMPT SMP ARM Modules linked in: CPU: 1 Not tainted (3.5.0-rc6-00884-g0b2419e-dirty #130) PC is at regmap_read+0x10/0x5c LR is at hw_read+0x80/0x90 pc : [<c01a91b8>] lr : [<c0216804>] psr: 60000013
Quoted 2 lines
Signed-off-by Lee Jones <[email protected]>
No clue on this one, have to refer to Mark...
Linus Walleij
Re: [alsa-devel] [PATCH 03/22] ASoC: ab8500: Inform SoC Core that we have our own I/O arrangements
In reply to Lee JonesAt Thu, 9 Aug 2012 16:47:29 +0100,
Quoted 14 lines · Lee Jones
If
codec->control_datais not populated SoC Core assumes we want to use regmap, which fails catastrophically, as we don't have one:Unable to handle kernel NULL pointer dereference at virtual address 00000080 pgd = c0004000 [00000080] *pgd=00000000 Internal error: Oops: 17 [#1] PREEMPT SMP ARM Modules linked in: CPU: 1 Not tainted (3.5.0-rc6-00884-g0b2419e-dirty #130) PC is at regmap_read+0x10/0x5c LR is at hw_read+0x80/0x90 pc : [<c01a91b8>] lr : [<c0216804>] psr: 60000013
Quoted 2 lines
Signed-off-by Lee Jones <[email protected]>
This was already fixed in ASoC core on Linus tree...
Takashi
Quoted 27 lines
--- sound/soc/codecs/ab8500-codec.c | 4 ++++ 1 file changed, 4 insertions(+)sound/soc/codecs/ab8500-codec.c +4
-0@@ -2406,6 +2406,10 @@ static int ab8500_codec_probe(struct snd_soc_codec *codec)/* Setup AB8500 according to board-settings */ pdata = (struct ab8500_platform_data *)dev_get_platdata (dev->parent); + +/* Inform SoC Core that we have our own I/O arrangements. */ + codec->control_data = (void *)true; + status =ab8500_audio_setup_mics (codec, &pdata->codec->amics);if (status <0 ) {pr_err ("%s: Failed to setup mics (%d)!\n" , __func__, status);Signature · 6 lines
1.7.9.5 _______________________________________________ Alsa-devel mailing list [email protected] http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
Re: [PATCH 03/22] ASoC: ab8500: Inform SoC Core that we have our own I/O arrangements
In reply to Lee JonesQuoted 2 lines · Lee Jones
If
codec->control_datais not populated SoC Core assumes we want to use regmap, which fails catastrophically, as we don't have one:
*Always* submit code against the current code for the subsystem.
PATCH 4/22 ASoC: Ux500: Move MSP pinctrl setup into the MSP driver
In reply to Lee JonesIn the initial submission of the MSP driver msp1 and msp3's associated pinctrl mechanism was passed back to platform code using a plat_init() call-back routine, but it has no place in platform code. The MSP driver should set this up for the appropriate ports. Instead we use a use_pinctrl identifier which is passed from platform_data/Device Tree which indicates which ports should use pinctrl.
--- arch/arm/mach-ux500/board-mop500-msp.c | 75 +------------------------------- arch/arm/mach-ux500/include/mach/msp.h | 2 - sound/soc/ux500/ux500_msp_i2s.c | 75 +++++++++++++++++++++++++------- sound/soc/ux500/ux500_msp_i2s.h | 2 - 4 files changed, 60 insertions(+), 94 deletions(-)
arch/arm/mach-ux500/board-mop500-msp.c +1 -74
@@ -23,53 +23,6 @@#include "devices-db8500.h" #include "pins-db8500.h" -/* MSP1/3 Tx/Rx usage protection */ -static DEFINE_SPINLOCK (msp_rxtx_lock); - -/* Reference Count */ -static int msp_rxtx_ref; - -/* Pin modes */ -struct pinctrl *msp1_p; -struct pinctrl_state *msp1_def; -struct pinctrl_state *msp1_sleep; - -int msp13_i2s_init (void ) -{ -int retval =0 ; -unsigned long flags; - -spin_lock_irqsave (&msp_rxtx_lock, flags); -if (msp_rxtx_ref ==0 && !(IS_ERR (msp1_p) ||IS_ERR (msp1_def))) { - retval =pinctrl_select_state (msp1_p, msp1_def); -if (retval) -pr_err ("could not set MSP1 defstate\n" ); - } -if (!retval) - msp_rxtx_ref++; -spin_unlock_irqrestore (&msp_rxtx_lock, flags); - -return retval; -} - -int msp13_i2s_exit (void ) -{ -int retval =0 ; -unsigned long flags; - -spin_lock_irqsave (&msp_rxtx_lock, flags); -WARN_ON (!msp_rxtx_ref); - msp_rxtx_ref--; -if (msp_rxtx_ref ==0 && !(IS_ERR (msp1_p) ||IS_ERR (msp1_sleep))) { - retval =pinctrl_select_state (msp1_p, msp1_sleep); -if (retval) -pr_err ("could not set MSP1 sleepstate\n" ); - } -spin_unlock_irqrestore (&msp_rxtx_lock, flags); - -return retval; -} -static struct stedma40_chan_cfg msp0_dma_rx = { .high_priority = true, .dir =STEDMA40_PERIPH_TO_MEM ,
@@ -132,8 +85,6 @@ static struct msp_i2s_platform_data msp1_platform_data = { .id = MSP_I2S_1, .msp_i2s_dma_rx = NULL, .msp_i2s_dma_tx = &msp1_dma_tx, - .msp_i2s_init = msp13_i2s_init, - .msp_i2s_exit = msp13_i2s_exit, };static struct stedma40_chan_cfg msp2_dma_rx = {
@@ -219,47 +170,23 @@ static struct msp_i2s_platform_data msp3_platform_data = { .id = MSP_I2S_3, .msp_i2s_dma_rx = &msp1_dma_rx, .msp_i2s_dma_tx = NULL, - .msp_i2s_init = msp13_i2s_init, - .msp_i2s_exit = msp13_i2s_exit, };int mop500_msp_init (struct device *parent) { -struct platform_device *msp1; -pr_info ("%s: Register platform-device 'snd-soc-mop500'.\n" , __func__);platform_device_register (&snd_soc_mop500);pr_info ("Initialize MSP I2S-devices.\n" );db8500_add_msp_i2s (parent,0 ,U8500_MSP0_BASE ,IRQ_DB8500_MSP0 , &msp0_platform_data); - msp1 =db8500_add_msp_i2s (parent,1 ,U8500_MSP1_BASE ,IRQ_DB8500_MSP1 , +db8500_add_msp_i2s (parent,1 ,U8500_MSP1_BASE ,IRQ_DB8500_MSP1 , &msp1_platform_data);db8500_add_msp_i2s (parent,2 ,U8500_MSP2_BASE ,IRQ_DB8500_MSP2 , &msp2_platform_data);db8500_add_msp_i2s (parent,3 ,U8500_MSP3_BASE ,IRQ_DB8500_MSP1 , &msp3_platform_data); -/* Get the pinctrl handle for MSP1 */ -if (msp1) { - msp1_p =pinctrl_get (&msp1->dev); -if (IS_ERR (msp1_p)) -dev_err (&msp1->dev,"could not get MSP1 pinctrl\n" ); -else { - msp1_def =pinctrl_lookup_state (msp1_p, -PINCTRL_STATE_DEFAULT ); -if (IS_ERR (msp1_def)) { -dev_err (&msp1->dev, -"could not get MSP1 defstate\n" ); - } - msp1_sleep =pinctrl_lookup_state (msp1_p, -PINCTRL_STATE_SLEEP ); -if (IS_ERR (msp1_sleep)) -dev_err (&msp1->dev, -"could not get MSP1 idlestate\n" ); - } - } -pr_info ("%s: Register platform-device 'ux500-pcm'\n" , __func__);platform_device_register (&ux500_pcm);
arch/arm/mach-ux500/include/mach/msp.h +0 -2
@@ -22,8 +22,6 @@ struct msp_i2s_platform_data {enum msp_i2s_id id;struct stedma40_chan_cfg *msp_i2s_dma_rx; struct stedma40_chan_cfg *msp_i2s_dma_tx; -int (*msp_i2s_init) (void ); - int (*msp_i2s_exit) (void); };#endif
sound/soc/ux500/ux500_msp_i2s.c +59 -16
121 lines not on this page · raw message
sound/soc/ux500/ux500_msp_i2s.h +0 -2
@@ -524,8 +524,6 @@ struct ux500_msp {struct dma_chan *rx_pipeid;enum msp_state msp_state;int (*transfer) (struct ux500_msp *msp,struct i2s_message *message); -int (*plat_init) (void ); -int (*plat_exit) (void );struct timer_list notify_timer;int def_elem_len;unsigned int dir_busy;
Signature · 1 line
1.7.9.5
Re: [PATCH 04/22] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver
Quoted 9 lines · Lee Jones
In the initial submission of the MSP driver msp1 and msp3's associated pinctrl mechanism was passed back to platform code using a
plat_init()call-back routine, but it has no place in platform code. The MSP driver should set this up for the appropriate ports. Instead we use ause_pinctrlidentifier which is passed from platform_data/Device Tree which indicates which ports should use pinctrl.Signed-off-by Lee Jones <[email protected]>
This is very good because it rids platform code and makes the driver self-contained without strange platform data hooks.
Now details...
sound/soc/ux500/ux500_msp_i2s.c line 38
Quoted 10 lines
sound/soc/ux500/ux500_msp_i2s.c +10
-0+/* MSP1/3 Tx/Rx usage protection */ +static DEFINE_SPINLOCK (msp_rxtx_lock); + +/* Pin modes */ +struct pinctrl *pinctrl_p; +struct pinctrl_state *pinctrl_def; +struct pinctrl_state *pinctrl_sleep; + +/* Reference Count */ +int pinctrl_rxtx_ref;
But wait. These are just local statics. Surelty you can put these into struct ux500_msp instead? Here it looks like these will be used for all ports, so MSP2 will enable the pins requested by MSP1 etc completely broken. So put it into the struct ux500_msp state container from ux500_msp_i2s.h where it belongs.
Refer to drivers/tty/serial/amba-pl011.c when in trouble. This one is a good pinctrl example.
Yours,
Linus Walleij
Re: [PATCH 04/22] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver
Quoted 26 lines · Linus Walleij
Quoted 9 lines · Lee Jones
In the initial submission of the MSP driver msp1 and msp3's associated pinctrl mechanism was passed back to platform code using a
plat_init()call-back routine, but it has no place in platform code. The MSP driver should set this up for the appropriate ports. Instead we use ause_pinctrlidentifier which is passed from platform_data/Device Tree which indicates which ports should use pinctrl.Signed-off-by Lee Jones <[email protected]>This is very good because it rids platform code and makes the driver self-contained without strange platform data hooks.
Now details...
Quoted 9 lines
sound/soc/ux500/ux500_msp_i2s.c +9
-0+/* MSP1/3 Tx/Rx usage protection */ +static DEFINE_SPINLOCK (msp_rxtx_lock); + +/* Pin modes */ +struct pinctrl *pinctrl_p; +struct pinctrl_state *pinctrl_def; +struct pinctrl_state *pinctrl_sleep; + +/* Reference Count */
Quoted 8 lines
Quoted 1 line
+int
pinctrl_rxtx_ref;But wait. These are just local statics. Surelty you can put these into struct
ux500_mspinstead? Here it looks like these will be used for all ports, so MSP2 will enable the pins requested by MSP1 etc completely broken. So put it into the structux500_mspstate container fromux500_msp_i2s.hwhere it belongs.
This was intentional, as in the previous implementation only MSP1 and MSP3 (which share pins) were enabled for pinctrl. I will move them into struct ux500_msp instead though, no problem
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 04/22] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver
In reply to Linus WalleijQuoted 35 lines · Linus Walleij
Quoted 9 lines · Lee Jones
In the initial submission of the MSP driver msp1 and msp3's associated pinctrl mechanism was passed back to platform code using a
plat_init()call-back routine, but it has no place in platform code. The MSP driver should set this up for the appropriate ports. Instead we use ause_pinctrlidentifier which is passed from platform_data/Device Tree which indicates which ports should use pinctrl.CC alsa-devel at alsa-project.orgSigned-off-by Lee Jones <[email protected]>This is very good because it rids platform code and makes the driver self-contained without strange platform data hooks.
Now details...
sound/soc/ux500/ux500_msp_i2s.c line 38
Quoted 10 lines
sound/soc/ux500/ux500_msp_i2s.c +10
-0+/* MSP1/3 Tx/Rx usage protection */ +static DEFINE_SPINLOCK (msp_rxtx_lock); + +/* Pin modes */ +struct pinctrl *pinctrl_p; +struct pinctrl_state *pinctrl_def; +struct pinctrl_state *pinctrl_sleep; + +/* Reference Count */ +int pinctrl_rxtx_ref;But wait. These are just local statics. Surelty you can put these into struct
ux500_mspinstead? Here it looks like these will be used for all ports, so MSP2 will enable the pins requested by MSP1 etc completely broken. So put it into the structux500_mspstate container fromux500_msp_i2s.hwhere it belongs.
Quoted 2 lines
Refer to
drivers/tty/serial/amba-pl011.cwhen in trouble. This one is a good pinctrl example.
How do you see the MSP1 and MSP3 usage protection working if I hide it all away in MSP specific structs?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 04/22] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver
Quoted 8 lines · Lee Jones
Quoted 6 lines · Linus Walleij
But wait. These are just local statics. Surelty you can put these into struct
ux500_mspinstead? Here it looks like these will be used for all ports, so MSP2 will enable the pins requested by MSP1 etc completely broken. So put it into the structux500_mspstate container fromux500_msp_i2s.hwhere it belongs.
Quoted 5 lines
Quoted 2 lines
Refer to
drivers/tty/serial/amba-pl011.cwhen in trouble. This one is a good pinctrl example.How do you see the MSP1 and MSP3 usage protection working if I hide it all away in MSP specific structs?
Usage protection? Sorry not following. Please elaborate...
Yours,
Linus Walleij
Re: [PATCH 04/22] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver
Quoted 9 lines · Linus Walleij
Quoted 8 lines · Lee Jones
Quoted 6 lines · Linus Walleij
But wait. These are just local statics. Surelty you can put these into struct
ux500_mspinstead? Here it looks like these will be used for all ports, so MSP2 will enable the pins requested by MSP1 etc completely broken. So put it into the structux500_mspstate container fromux500_msp_i2s.hwhere it belongs.
Quoted 7 lines
Quoted 5 lines
Quoted 2 lines
Refer to
drivers/tty/serial/amba-pl011.cwhen in trouble. This one is a good pinctrl example.How do you see the MSP1 and MSP3 usage protection working if I hide it all away in MSP specific structs?
Usage protection? Sorry not following. Please elaborate...
Don't worry about it, I think I sorted it.
Please see the lastest version of the patch (sent on 24th Aug).
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
PATCH 5/22 ASoC: Ux500: Enable MOP500 driver for Device Tree
In reply to Lee JonesHere we ensure that the MOP500 audio driver will be probed during a Device Tree boot. We also parse the sound node to link together the codec, dma and the CPU-side Digital Audio Interface.
--- sound/soc/ux500/mop500.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+)
sound/soc/ux500/mop500.c +40 -0
@@ -16,6 +16,7 @@#include <linux/module.h> #include <linux/io.h> #include <linux/spi/spi.h> +#include <linux/of.h> #include <sound/soc.h> #include <sound/initval.h>
@@ -56,8 +57,35 @@ static struct snd_soc_card mop500_card = { .num_links = ARRAY_SIZE(mop500_dai_links), }; +static int __devinit mop500_of_probe (struct platform_device *pdev, +struct device_node *np) +{ +struct device_node *codec_np, *msp_np[2 ]; +int i; + + msp_np[0 ] =of_parse_phandle (np,"stericsson,cpu-dai" ,0 ); + msp_np[1 ] =of_parse_phandle (np,"stericsson,cpu-dai" ,1 ); + codec_np =of_parse_phandle (np,"stericsson,audio-codec" ,0 ); + +if (!(msp_np[0 ] && msp_np[1 ] && codec_np)) { +dev_err (&pdev->dev,"Phandle missing or invalid\n" ); +return -EINVAL ; + } + +for (i =0 ; i <2 ; i++) { + mop500_dai_links[i].cpu_of_node = msp_np[i]; + mop500_dai_links[i].cpu_dai_name =NULL ; + mop500_dai_links[i].codec_of_node = codec_np; + mop500_dai_links[i].codec_name =NULL ; + } + +snd_soc_of_parse_card_name (&mop500_card,"stericsson,card-name" ); + +return 0 ; +}static int __devinit mop500_probe (struct platform_device *pdev) { +struct device_node *np = pdev->dev.of_node;int ret;pr_debug ("%s: Enter.\n" , __func__);
@@ -66,6 +94,12 @@ static int __devinit mop500_probe(struct platform_device *pdev) mop500_card.dev = &pdev->dev; +if (np) { + ret =mop500_of_probe (pdev, np); +if (ret) +return ret; + } +dev_dbg (&pdev->dev,"%s: Card %s: Set platform drvdata.\n" , __func__, mop500_card.name);platform_set_drvdata (pdev, &mop500_card);
@@ -101,10 +135,16 @@ static int __devexit mop500_remove(struct platform_device *pdev)return 0 ; } +static const struct of_device_id snd_soc_mop500_match[] = { + { .compatible ="stericsson,snd-soc-mop500" , }, + {}, +}; +static struct platform_driver snd_soc_mop500_driver = { .driver = { .owner =THIS_MODULE , .name ="snd-soc-mop500" , + .of_match_table = snd_soc_mop500_match, }, .probe = mop500_probe, .remove =__devexit_p (mop500_remove),
Signature · 1 line
1.7.9.5
Re: [PATCH 05/22] ASoC: Ux500: Enable MOP500 driver for Device Tree
Quoted 6 lines · Lee Jones
Here we ensure that the MOP500 audio driver will be probed during a Device Tree boot. We also parse the sound node to link together the codec, dma and the CPU-side Digital Audio Interface.
Signed-off-by Lee Jones <[email protected]>
But only if Mark agrees with the overall approach.
Yours,
Linus Walleij
Re: [PATCH 05/22] ASoC: Ux500: Enable MOP500 driver for Device Tree
Ola poke.
Quoted 15 lines · Linus Walleij
Quoted 6 lines · Lee Jones
Here we ensure that the MOP500 audio driver will be probed during a Device Tree boot. We also parse the sound node to link together the codec, dma and the CPU-side Digital Audio Interface.
CC alsa-devel at alsa-project.orgSigned-off-by Lee Jones <[email protected]>Acked-by Linus Walleij <[email protected]>But only if Mark agrees with the overall approach.
Yours,
Linus Walleij
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
PATCH 6/22 ASoC: Ux500: Enable ux500 MSP driver for Device Tree
In reply to Lee JonesRegister both parts of the MSP driver from Device Tree so that they are probed when Device Tree is enabled. Also, as there is platform data involved, we ensure that there is allocated memory to place the configuration into and that the correct information is extracted from the DT binary.
--- sound/soc/ux500/ux500_msp_dai.c | 6 ++++++ sound/soc/ux500/ux500_msp_i2s.c | 22 +++++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-)
sound/soc/ux500/ux500_msp_dai.c +6 -0
@@ -833,10 +833,16 @@ static int __devexit ux500_msp_drv_remove(struct platform_device *pdev)return 0 ; } +static const struct of_device_id ux500_msp_i2c_match[] = { + { .compatible ="stericsson,ux500-msp-i2s" , }, + {}, +}; +static struct platform_driver msp_i2s_driver = { .driver = { .name ="ux500-msp-i2s" , .owner =THIS_MODULE , + .of_match_table = ux500_msp_i2c_match, }, .probe = ux500_msp_drv_probe, .remove = ux500_msp_drv_remove,
sound/soc/ux500/ux500_msp_i2s.c +19 -3
@@ -18,6 +18,7 @@#include <linux/pinctrl/consumer.h> #include <linux/delay.h> #include <linux/slab.h> +#include <linux/of.h> #include <mach/hardware.h> #include <mach/msp.h>
@@ -692,16 +693,31 @@ int ux500_msp_i2s_init_msp(struct platform_device *pdev,int ret =0 ;struct resource *res =NULL ;struct i2s_controller *i2s_cont; +struct device_node *np = pdev->dev.of_node;struct ux500_msp *msp; -dev_dbg (&pdev->dev,"%s: Enter (name: %s, id: %d).\n" , __func__, - pdev->name, platform_data->id); - *msp_p =devm_kzalloc (&pdev->dev,sizeof (struct ux500_msp ),GFP_KERNEL ); msp = *msp_p;if (!msp)return -ENOMEM ; +if (np) { +if (!platform_data) { + platform_data =devm_kzalloc (&pdev->dev, +sizeof (struct msp_i2s_platform_data ),GFP_KERNEL ); +if (!platform_data) + ret = -ENOMEM ; + } + }else +if (!platform_data) + ret = -EINVAL ; + +if (ret) + goto err_res; + +dev_dbg (&pdev->dev,"%s: Enter (name: %s, id: %d).\n" , __func__, + pdev->name, platform_data->id); + msp->id = platform_data->id; msp->dev = &pdev->dev; msp->dma_cfg_rx = platform_data->msp_i2s_dma_rx;
Signature · 1 line
1.7.9.5
Re: [PATCH 06/22] ASoC: Ux500: Enable ux500 MSP driver for Device Tree
Quoted 8 lines · Lee Jones
Register both parts of the MSP driver from Device Tree so that they are probed when Device Tree is enabled. Also, as there is platform data involved, we ensure that there is allocated memory to place the configuration into and that the correct information is extracted from the DT binary.
Signed-off-by Lee Jones <[email protected]>
Looks like it's doing what's intended...
Yours,
Linus Walleij
Re: [PATCH 06/22] ASoC: Ux500: Enable ux500 MSP driver for Device Tree
Ola poke.
Quoted 16 lines · Linus Walleij
Quoted 8 lines · Lee Jones
Register both parts of the MSP driver from Device Tree so that they are probed when Device Tree is enabled. Also, as there is platform data involved, we ensure that there is allocated memory to place the configuration into and that the correct information is extracted from the DT binary.
CC alsa-devel at alsa-project.orgSigned-off-by Lee Jones <[email protected]>Looks like it's doing what's intended...
Acked-by Linus Walleij <[email protected]>Yours,
Linus Walleij
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
PATCH 7/22 ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
In reply to Lee JonesThe PCM is a pseudo-device. It doesn't have any of it's own registers or hardware. It rather acts as a layer of abstraction for DMA transfers. Hence, instead of classifying it as a device in its own right, we call the initialisation from the MSP driver.
--- sound/soc/ux500/mop500.c | 4 ++-- sound/soc/ux500/ux500_msp_dai.c | 14 +++++++++++++- sound/soc/ux500/ux500_pcm.c | 19 ++++--------------- sound/soc/ux500/ux500_pcm.h | 3 +++ 4 files changed, 22 insertions(+), 18 deletions(-)
sound/soc/ux500/mop500.c +2 -2
@@ -33,7 +33,7 @@ struct snd_soc_dai_link mop500_dai_links[] = { .stream_name = "ab8500_0", .cpu_dai_name = "ux500-msp-i2s.1", .codec_dai_name = "ab8500-codec-dai.0", - .platform_name = "ux500-pcm.0", + .platform_name = "ux500-msp-i2s.1", .codec_name = "ab8500-codec.0", .init = mop500_ab8500_machine_init, .ops = mop500_ab8500_ops,
@@ -43,7 +43,7 @@ struct snd_soc_dai_link mop500_dai_links[] = { .stream_name = "ab8500_1", .cpu_dai_name = "ux500-msp-i2s.3", .codec_dai_name = "ab8500-codec-dai.1", - .platform_name = "ux500-pcm.0", + .platform_name = "ux500-msp-i2s.3", .codec_name = "ab8500-codec.0", .init = NULL, .ops = mop500_ab8500_ops,
sound/soc/ux500/ux500_msp_dai.c +13 -1
@@ -28,6 +28,7 @@#include "ux500_msp_i2s.h" #include "ux500_msp_dai.h" +#include "ux500_pcm.h" static int setup_pcm_multichan (struct snd_soc_dai *dai,struct ux500_msp_config *msp_config)
@@ -806,11 +807,20 @@ static int __devinit ux500_msp_drv_probe(struct platform_device *pdev) goto err_init_msp; } + ret =ux500_pcm_register_platform (pdev); +if (ret <0 ) { +dev_err (&pdev->dev, +"Error: %s: Failed to register PCM platform device!\n" , + __func__); + goto err_reg_plat; + } +return 0 ; +err_reg_plat: +snd_soc_unregister_dais (&pdev->dev,ARRAY_SIZE (ux500_msp_dai_drv)); err_init_msp:clk_put (drvdata->clk); - err_clk:devm_regulator_put (drvdata->reg_vape);
@@ -821,6 +831,8 @@ static int __devexit ux500_msp_drv_remove(struct platform_device *pdev) {struct ux500_msp_i2s_drvdata *drvdata =dev_get_drvdata (&pdev->dev); +ux500_pcm_unregister_platform (pdev); +snd_soc_unregister_dais (&pdev->dev,ARRAY_SIZE (ux500_msp_dai_drv));devm_regulator_put (drvdata->reg_vape);
sound/soc/ux500/ux500_pcm.c +4 -15
@@ -282,7 +282,7 @@ static struct snd_soc_platform_driver ux500_pcm_soc_drv = { .pcm_new = ux500_pcm_new, }; -static int __devexit ux500_pcm_drv_probe(struct platform_device *pdev) +int __devinit ux500_pcm_register_platform (struct platform_device *pdev) {int ret;
@@ -296,23 +296,12 @@ static int __devexit ux500_pcm_drv_probe(struct platform_device *pdev)return 0 ; } +EXPORT_SYMBOL_GPL (ux500_pcm_register_platform); -static int __devinit ux500_pcm_drv_remove (struct platform_device *pdev) +int __devexit ux500_pcm_unregister_platform(struct platform_device *pdev) {snd_soc_unregister_platform (&pdev->dev);return 0 ; } - -static struct platform_driver ux500_pcm_driver = { - .driver = { - .name ="ux500-pcm" , - .owner =THIS_MODULE , - }, - - .probe = ux500_pcm_drv_probe, - .remove =__devexit_p (ux500_pcm_drv_remove), -}; -module_platform_driver (ux500_pcm_driver); - -MODULE_LICENSE ("GPL v2" ); +EXPORT_SYMBOL_GPL (ux500_pcm_unregister_platform);
sound/soc/ux500/ux500_pcm.h +3 -0
@@ -32,4 +32,7 @@#define UX500_PLATFORM_PERIODS_MAX 48#define UX500_PLATFORM_BUFFER_BYTES_MAX (2048 * PAGE_SIZE) +int ux500_pcm_register_platform (struct platform_device *pdev); +int ux500_pcm_unregister_platform (struct platform_device *pdev); +#endif
Signature · 1 line
1.7.9.5
Re: [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 7 lines · Lee Jones
The PCM is a pseudo-device. It doesn't have any of it's own registers or hardware. It rather acts as a layer of abstraction for DMA transfers. Hence, instead of classifying it as a device in its own right, we call the initialisation from the MSP driver.
Signed-off-by Lee Jones <[email protected]>
I'd prefer to have Ola LILJA review this patch, but it looks alright to me.
Yours,
Linus Walleij
A message that is not in the archive (sent off-list or not yet received): 002801cd7c31$14d3d0c0$3e7b7240$@se
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): 006d01cd7f5a$65937840$30ba68c0$@se
Re: [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Mark,
Quoted 8 lines
Quoted 8 lines
Quoted 7 lines
I'm sorry but this patch is breaking the design of ASoC. The ASoC-platform is the DMA-block (in combination with the MSP-block), and there should be a platform-driver for the DMA/PCM. The
platform-driver then has a DAI which is the MSP. The ASoC DAI-link-struct should have one driver for each of these, so the dummy-driver for PCM should be there.
Quoted 5 lines
Quoted 5 lines
Just thinking about this now. I converted it to the current format at the request of Mark. If this isn't the correct method I'm not quite sure what is. If you want it to be registered as a device, then it needs to go into the Device Tree, but Mark doesn't want it in there because it doesn't actually represent hardware.
I've just taken a closer look at this with a view to finding the most suitable solution. My conclusion is that although the PCM doesn't contain any registers, or represent hardware it should be a device and therefore be present in the Device Tree.
These are my findings:
PCM devices already represented in DTs:
fsl,mpc5200-pcm - written by Grant Likely, the author of Device Tree
phytec,pcm030 - written by Grant Likely, the author of Device Tree
PCM devices which register as actual devices (should be in DT):
samsung - samsung-pcm sh - siu-pcm-audio omap - omap-pcm-audio pxa - pxa-pcm-audio jz4740 - jz4740-pcm-audio
kirkwood - kirkwood-pcm-audio
ep93xx - ep93xx-pcm-audio
...
The later was basically every PCM device bar one I think.
The Open Firmware used to stipulate that each device represented in the Device Tree to own registers and therefore be an actual hardware device, but that has since been lifted as it didn't make sense.
I propose to represent the PCM in the Device Tree again and have it probe just like all the other PCM devices in sound/soc.
If you give me the nod, I'll revert this patch, enable the PCM for DT again and resent the patch-set in full.
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 10 lines · Lee Jones
Quoted 5 lines
Quoted 5 lines
Just thinking about this now. I converted it to the current format at the request of Mark. If this isn't the correct method I'm not quite sure what is. If you want it to be registered as a device, then it needs to go into the Device Tree, but Mark doesn't want it in there because it doesn't actually represent hardware.
I've just taken a closer look at this with a view to finding the most suitable solution. My conclusion is that although the PCM doesn't contain any registers, or represent hardware it should be a device and therefore be present in the Device Tree.
Your assumption that being a device in Linux means that something should appear in the device tree definitely doesn't follow.
Quoted 3 lines
PCM devices already represented in DTs:
fsl,mpc5200-pcm - written by Grant Likely, the author of Device Tree
phytec,pcm030 - written by Grant Likely, the author of Device Tree
I suspect Mitch might have a word or two to say about the above... in any case, these are *really* old PowerPC bindings which means they're not always a good model. Though in this case if you look at the code you'll also see that the driver is actually directly managing hardware with register I/O rather than just purely proxying an underlying DMA API. Clearly if there's actual hardware control involved a device is appropriate.
Quoted 1 line
PCM devices which register as actual devices (should be in DT):
These are all Linux platform devices, things that are OK for purely internal Linux usage which we can rewrite at will aren't always appropriate for a cross platform DT.
Quoted 5 lines
I propose to represent the PCM in the Device Tree again and have it probe just like all the other PCM devices in
sound/soc.If you give me the nod, I'll revert this patch, enable the PCM for DT again and resent the patch-set in full.
I say I don't understand the motivation for this change. All the modern
DT bindings are perfectly happy handling this without an explicit shim
in the device tree to bodge things for Linux, adding them in seems like
it'd be a retrograde step. What benefit do you believe this brings?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120823/1c0de982/attachment.sig>
Re: [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 4 lines
I say I don't understand the motivation for this change. All the modern DT bindings are perfectly happy handling this without an explicit shim in the device tree to bodge things for Linux, adding them in seems like it'd be a retrograde step. What benefit do you believe this brings?
How do the all the other DT:ed audio drivers handle the PCM then? More importantly, how would you like to see it handled? Ola has NACKed this patch and explained why:
"I'm sorry but this patch is breaking the design of ASoC. The ASoC- platform is the DMA-block (in combination with the MSP-block), and there should be a platform-driver for the DMA/PCM. The platform-driver then has a DAI which is the MSP. The ASoC DAI-link-struct should have one driver for each of these, so the dummy-driver for PCM should be there."
So I don't really know where to go with it. Any ideas?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 8 lines · Lee Jones
Quoted 4 lines
I say I don't understand the motivation for this change. All the modern DT bindings are perfectly happy handling this without an explicit shim in the device tree to bodge things for Linux, adding them in seems like it'd be a retrograde step. What benefit do you believe this brings?
How do the all the other DT:ed audio drivers handle the PCM then? More importantly, how would you like to see it handled? Ola has NACKed this patch and explained why:
They instantiate the PCM driver dynamically from the DAI when it's probed which is pretty much what you're patch is doing.
Quoted 8 lines
"I'm sorry but this patch is breaking the design of ASoC. The ASoC- platform is the DMA-block (in combination with the MSP-block), and there should be a platform-driver for the DMA/PCM. The platform-driver then has a DAI which is the MSP. The ASoC DAI-link-struct should have one driver for each of these, so the dummy-driver for PCM should be there."
So I don't really know where to go with it. Any ideas?
I think Ola is suggesting probing the DMA driver from the machine which
will also work though I'm not 100% sure if I'm parsing the above
correctly. The issue in DT terms is that if the DMA controller is
shared with a bunch of other IPs then it should have one node shared
between them all and not a bunch of shim nodes inserted in the middle
which only exists due to the way Linux instantiates stuff.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120823/9e5a5c84/attachment.sig>
Re: [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 7 lines
Quoted 6 lines
"I'm sorry but this patch is breaking the design of ASoC. The ASoC- platform is the DMA-block (in combination with the MSP-block), and there should be a platform-driver for the DMA/PCM. The platform-driver then has a DAI which is the MSP. The ASoC DAI-link-struct should have one driver for each of these, so the dummy-driver for PCM should be there."
Quoted 8 lines
Quoted 1 line
So I don't really know where to go with it. Any ideas?
I think Ola is suggesting probing the DMA driver from the machine which will also work though I'm not 100% sure if I'm parsing the above correctly. The issue in DT terms is that if the DMA controller is shared with a bunch of other IPs then it should have one node shared between them all and not a bunch of shim nodes inserted in the middle which only exists due to the way Linux instantiates stuff.
When you say 'machine', do you mean from arch/<arch>/mach-*? If so, I'm keen for that not to happen.
Quoted 6 lines
Quoted 3 lines
How do the all the other DT:ed audio drivers handle the PCM then? More importantly, how would you like to see it handled? Ola has NACKed this patch and explained why:
They instantiate the PCM driver dynamically from the DAI when it's probed which is pretty much what you're patch is doing.
So they do it in the same why I have with this patch? Do you know why Ola might think this is a bad idea?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 9 lines · Lee Jones
Quoted 6 lines
I think Ola is suggesting probing the DMA driver from the machine which will also work though I'm not 100% sure if I'm parsing the above correctly. The issue in DT terms is that if the DMA controller is shared with a bunch of other IPs then it should have one node shared between them all and not a bunch of shim nodes inserted in the middle which only exists due to the way Linux instantiates stuff.
When you say 'machine', do you mean from arch/<arch>/mach-*? If so, I'm keen for that not to happen.
No, sound/soc/ux500/snowball.c or whatever. At least that's my guess.
Quoted 5 lines
Quoted 2 lines
They instantiate the PCM driver dynamically from the DAI when it's probed which is pretty much what you're patch is doing.
So they do it in the same why I have with this patch? Do you know why Ola might think this is a bad idea?
I'm not 100% sure, I'm guessing it might be down to the fact that you
end up with multiple PCM drivers. We could avoid that with refcounting
but nobody's really worried about it.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120823/f6af16f7/attachment.sig>
Re: [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 9 lines · Mark Brown
Quoted 6 lines · Lee Jones
Quoted 6 lines
I think Ola is suggesting probing the DMA driver from the machine which will also work though I'm not 100% sure if I'm parsing the above correctly. The issue in DT terms is that if the DMA controller is shared with a bunch of other IPs then it should have one node shared between them all and not a bunch of shim nodes inserted in the middle which only exists due to the way Linux instantiates stuff.
Quoted 4 lines
Quoted 2 lines
When you say 'machine', do you mean from arch/<arch>/mach-*? If so, I'm keen for that not to happen.
No,
sound/soc/ux500/snowball.cor whatever. At least that's my guess.
Ah, I see. Maybe the mop500.c file then.
Quoted 9 lines
Quoted 5 lines
Quoted 2 lines
They instantiate the PCM driver dynamically from the DAI when it's probed which is pretty much what you're patch is doing.
So they do it in the same why I have with this patch? Do you know why Ola might think this is a bad idea?
I'm not 100% sure, I'm guessing it might be down to the fact that you end up with multiple PCM drivers. We could avoid that with refcounting but nobody's really worried about it.
I think I'll wait for Ola to get back, as he's the expert on this stuff.
I'll attempt to re-jig the patch-set, as this is a blocker atm.
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 1 line · Lee Jones
I'll attempt to re-jig the patch-set, as this is a blocker atm.
OK, if we could get at least the DAI driver and arch/arm changes in
that'd at least make the series smaller.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120823/2f0dd929/attachment.sig>
Re: [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
In reply to Mark BrownQuoted 6 lines · Mark Brown
Quoted 4 lines · Lee Jones
Quoted 4 lines
I say I don't understand the motivation for this change. All the modern DT bindings are perfectly happy handling this without an explicit shim in the device tree to bodge things for Linux, adding them in seems like it'd be a retrograde step. What benefit do you believe this brings?
Quoted 6 lines
Quoted 3 lines
How do the all the other DT:ed audio drivers handle the PCM then? More importantly, how would you like to see it handled? Ola has NACKed this patch and explained why:
They instantiate the PCM driver dynamically from the DAI when it's probed which is pretty much what you're patch is doing.
Can we have some closure on this patch please, as it's blocking the patch-set? I'm fairly sure the patch is doing the correct thing, as seconded by Mark.
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
PATCH 7/22 ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
In reply to Linus WalleijHi Ola,
As requested:
Author: Lee Jones <[email protected]> Date: Tue Jul 31 14:06:19 2012 +0100
ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
The PCM is a pseudo-device. It doesn't have any of it's own registers or hardware. It rather acts as a layer of abstraction for DMA transfers. Hence, instead of classifying it as a device in its own right, we call the initialisation from the MSP driver.
sound/soc/ux500/mop500.c +2 -2
@@ -32,7 +32,7 @@ struct snd_soc_dai_link mop500_dai_links[] = { .stream_name = "ab8500_0", .cpu_dai_name = "ux500-msp-i2s.1", .codec_dai_name = "ab8500-codec-dai.0", - .platform_name = "ux500-pcm.0", + .platform_name = "ux500-msp-i2s.1", .codec_name = "ab8500-codec.0", .init = mop500_ab8500_machine_init, .ops = mop500_ab8500_ops,
@@ -42,7 +42,7 @@ struct snd_soc_dai_link mop500_dai_links[] = { .stream_name = "ab8500_1", .cpu_dai_name = "ux500-msp-i2s.3", .codec_dai_name = "ab8500-codec-dai.1", - .platform_name = "ux500-pcm.0", + .platform_name = "ux500-msp-i2s.3", .codec_name = "ab8500-codec.0", .init = NULL, .ops = mop500_ab8500_ops,
sound/soc/ux500/ux500_msp_dai.c +13 -1
@@ -28,6 +28,7 @@#include "ux500_msp_i2s.h" #include "ux500_msp_dai.h" +#include "ux500_pcm.h" static int setup_pcm_multichan (struct snd_soc_dai *dai,struct ux500_msp_config *msp_config)
@@ -806,11 +807,20 @@ static int __devinit ux500_msp_drv_probe(struct platform_device *pdev) goto err_init_msp; } + ret =ux500_pcm_register_platform (pdev); +if (ret <0 ) { +dev_err (&pdev->dev, +"Error: %s: Failed to register PCM platform device!\n" , + __func__); + goto err_reg_plat; + } +return 0 ; +err_reg_plat: +snd_soc_unregister_dais (&pdev->dev,ARRAY_SIZE (ux500_msp_dai_drv)); err_init_msp:clk_put (drvdata->clk); - err_clk:devm_regulator_put (drvdata->reg_vape);
@@ -821,6 +831,8 @@ static int __devexit ux500_msp_drv_remove(struct platform_device *pdev) {struct ux500_msp_i2s_drvdata *drvdata =dev_get_drvdata (&pdev->dev); +ux500_pcm_unregister_platform (pdev); +snd_soc_unregister_dais (&pdev->dev,ARRAY_SIZE (ux500_msp_dai_drv));devm_regulator_put (drvdata->reg_vape);
sound/soc/ux500/ux500_pcm.c +4 -15
@@ -282,7 +282,7 @@ static struct snd_soc_platform_driver ux500_pcm_soc_drv = { .pcm_new = ux500_pcm_new, }; -static int __devexit ux500_pcm_drv_probe(struct platform_device *pdev) +int __devinit ux500_pcm_register_platform (struct platform_device *pdev) {int ret;
@@ -296,23 +296,12 @@ static int __devexit ux500_pcm_drv_probe(struct platform_device *pdev)return 0 ; } +EXPORT_SYMBOL_GPL (ux500_pcm_register_platform); -static int __devinit ux500_pcm_drv_remove (struct platform_device *pdev) +int __devexit ux500_pcm_unregister_platform(struct platform_device *pdev) {snd_soc_unregister_platform (&pdev->dev);return 0 ; } - -static struct platform_driver ux500_pcm_driver = { - .driver = { - .name ="ux500-pcm" , - .owner =THIS_MODULE , - }, - - .probe = ux500_pcm_drv_probe, - .remove =__devexit_p (ux500_pcm_drv_remove), -}; -module_platform_driver (ux500_pcm_driver); - -MODULE_LICENSE ("GPL v2" ); +EXPORT_SYMBOL_GPL (ux500_pcm_unregister_platform);
sound/soc/ux500/ux500_pcm.h +3 -0
@@ -32,4 +32,7 @@#define UX500_PLATFORM_PERIODS_MAX 48#define UX500_PLATFORM_BUFFER_BYTES_MAX (2048 * PAGE_SIZE) +int ux500_pcm_register_platform (struct platform_device *pdev); +int ux500_pcm_unregister_platform (struct platform_device *pdev); +#endif
Re: [RESENDING] [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 54 lines
Hi Ola,
As requested:
Author: Lee Jones <[email protected]> Date: Tue Jul 31 14:06:19 2012 +0100ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
The PCM is a pseudo-device. It doesn't have any of it's own registers or hardware. It rather acts as a layer of abstraction for DMA transfers. Hence, instead of classifying it as a device in its own right, we call the initialisation from the MSP driver.
Signed-off-by Lee Jones <[email protected]>sound/soc/ux500/mop500.c +2
-2@@ -32,7 +32,7 @@ struct snd_soc_dai_link mop500_dai_links[] = { .stream_name = "ab8500_0", .cpu_dai_name = "ux500-msp-i2s.1", .codec_dai_name = "ab8500-codec-dai.0", - .platform_name = "ux500-pcm.0", + .platform_name = "ux500-msp-i2s.1", .codec_name = "ab8500-codec.0", .init = mop500_ab8500_machine_init, .ops = mop500_ab8500_ops,@@ -42,7 +42,7 @@ struct snd_soc_dai_link mop500_dai_links[] = { .stream_name = "ab8500_1", .cpu_dai_name = "ux500-msp-i2s.3", .codec_dai_name = "ab8500-codec-dai.1", - .platform_name = "ux500-pcm.0", + .platform_name = "ux500-msp-i2s.3", .codec_name = "ab8500-codec.0", .init = NULL, .ops = mop500_ab8500_ops,sound/soc/ux500/ux500_msp_dai.c +0
-0Lee Jones - Sept. 19, 2012, 12:29 p.m.
Quoted 10 lines · Mark Brown
Quoted 8 lines · Lee Jones
Quoted 4 lines
I say I don't understand the motivation for this change. All the modern DT bindings are perfectly happy handling this without an explicit shim in the device tree to bodge things for Linux, adding them in seems like it'd be a retrograde step. What benefit do you believe this brings?
How do the all the other DT:ed audio drivers handle the PCM then? More importantly, how would you like to see it handled? Ola has NACKed this patch and explained why:
Quoted 6 lines
Quoted 2 lines
They instantiate the PCM driver dynamically from the DAI when it's probed which is pretty much what you're patch is doing.
Can we have some closure on this patch please, as it's blocking the patch-set? I'm fairly sure the patch is doing the correct thing, as seconded by Mark.
I still don't like this. It is the dai_link-struct that bothers me. We have "ux500-msp-i2s.1" as name of the platform AND the cpu_dai. The MSP I2S-block is not the platform and it is certainly not both platform and cpu-DAI at the same time.
Mark: Did you have a solution for this? Couldn't we just put NULL on the platform_name instead?
Re: [RESENDING] [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 6 lines · Ola Lilja
I still don't like this. It is the dai_link-struct that bothers me. We have "ux500-msp-i2s.1" as name of the platform AND the
cpu_dai. The MSP I2S-block is not the platform and it is certainly not both platform and cpu-DAI at the same time.Mark: Did you have a solution for this? Couldn't we just put NULL on the
platform_nameinstead?
No, having no platform driver means a direct device<->device link (like baseband<->CODEC). You could always register the platform with a -dma added in the name or something, it'd be a bit more code but it'd work, but the framework doesn't particularly care what you call these things.
Re: [RESENDING] [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
In reply to Ola LiljaQuoted 9 lines
Quoted 3 lines
Can we have some closure on this patch please, as it's blocking the patch-set? I'm fairly sure the patch is doing the correct thing, as seconded by Mark.
I still don't like this. It is the dai_link-struct that bothers me. We have "ux500-msp-i2s.1" as name of the platform AND the
cpu_dai. The MSP I2S-block is not the platform and it is certainly not both platform and cpu-DAI at the same time.
Mark: Did you have a solution for this? Couldn't we just put NULL on theplatform_nameinstead?
There are other drivers which do this already.
I don't think it's an issue to do this.
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [RESENDING] [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 10 lines · Lee Jones
Quoted 9 lines
Quoted 3 lines
Can we have some closure on this patch please, as it's blocking the patch-set? I'm fairly sure the patch is doing the correct thing, as seconded by Mark.
I still don't like this. It is the dai_link-struct that bothers me. We have "ux500-msp-i2s.1" as name of the platform AND the
cpu_dai. The MSP I2S-block is not the platform and it is certainly not both platform and cpu-DAI at the same time.
Mark: Did you have a solution for this? Couldn't we just put NULL on theplatform_nameinstead?
Quoted 3 lines
There are other drivers which do this already.
I don't think it's an issue to do this.
Has anyone had any more bright ideas on how we might handle this?
The device is still being handled in platform code and I'm desperate to get it out of there.
Signature · 9 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Re: [RESENDING] [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 12 lines · Lee Jones
Quoted 9 lines · Lee Jones
Quoted 9 lines
Quoted 3 lines
Can we have some closure on this patch please, as it's blocking the patch-set? I'm fairly sure the patch is doing the correct thing, as seconded by Mark.
I still don't like this. It is the dai_link-struct that bothers me. We have "ux500-msp-i2s.1" as name of the platform AND the
cpu_dai. The MSP I2S-block is not the platform and it is certainly not both platform and cpu-DAI at the same time.
Mark: Did you have a solution for this? Couldn't we just put NULL on theplatform_nameinstead?
Quoted 8 lines
Quoted 3 lines
There are other drivers which do this already.
I don't think it's an issue to do this.
Has anyone had any more bright ideas on how we might handle this?
The device is still being handled in platform code and I'm desperate to get it out of there.
Why do we need any ideas? Just implement it already.
Re: [RESENDING] [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 15 lines · Mark Brown
Quoted 13 lines · Lee Jones
Quoted 11 lines · Lee Jones
Quoted 9 lines
Quoted 3 lines
Can we have some closure on this patch please, as it's blocking the patch-set? I'm fairly sure the patch is doing the correct thing, as seconded by Mark.
I still don't like this. It is the dai_link-struct that bothers me. We have "ux500-msp-i2s.1" as name of the platform AND the
cpu_dai. The MSP I2S-block is not the platform and it is certainly not both platform and cpu-DAI at the same time.
Mark: Did you have a solution for this? Couldn't we just put NULL on theplatform_nameinstead?There are other drivers which do this already.
Quoted 8 lines
Quoted 6 lines
Quoted 1 line
I don't think it's an issue to do this.
Has anyone had any more bright ideas on how we might handle this?
The device is still being handled in platform code and I'm desperate to get it out of there.
Why do we need any ideas? Just implement it already.
How do you mean? I've written the patch, just accept it. ;)
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [RESENDING] [PATCH 07/22] ASoC: Ux500: Initialise PCM from MSP probe rather than as a device
Quoted 5 lines · Lee Jones
Quoted 1 line · Mark Brown
Why do we need any ideas? Just implement it already.
How do you mean? I've written the patch, just accept it. ;)
Whatever the patch was I don't have it any more, you'll need to resend.
_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
PATCH 8/22 ASoC: codecs: Enable AB8500 CODEC for Device Tree
In reply to Lee JonesWe continue to allow the AB8500 CODEC to be registered via the AB8500 Multi Functional Device API, only this time we extract its configuration from the Device Tree binary.
--- include/linux/mfd/abx500/ab8500-codec.h | 6 ++- sound/soc/codecs/ab8500-codec.c | 81 +++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-)
include/linux/mfd/abx500/ab8500-codec.h +4 -2
@@ -23,7 +23,8 @@ enum amic_type {/* Mic-biases */ enum amic_micbias {AMIC_MICBIAS_VAMIC1 , -AMIC_MICBIAS_VAMIC2 +AMIC_MICBIAS_VAMIC2 , +AMIC_MICBIAS_UNKNOWN };/* Bias-voltage */
@@ -31,7 +32,8 @@ enum ear_cm_voltage {EAR_CMV_0_95V ,EAR_CMV_1_10V ,EAR_CMV_1_27V , - EAR_CMV_1_58V +EAR_CMV_1_58V , + EAR_CMV_UNKNOWN };/* Analog microphone settings */
sound/soc/codecs/ab8500-codec.c +81 -0
102 lines not on this page · raw message
Signature · 1 line
1.7.9.5
Re: [PATCH 08/22] ASoC: codecs: Enable AB8500 CODEC for Device Tree
Quoted 6 lines · Lee Jones
We continue to allow the AB8500 CODEC to be registered via the AB8500 Multi Functional Device API, only this time we extract its configuration from the Device Tree binary.
Signed-off-by Lee Jones <[email protected]>
Also for Ola to look at, and/or ACK.
I dare not even ACK patches like this.
Yours,
Linus Walleij
Re: [alsa-devel] [PATCH 08/22] ASoC: codecs: Enable AB8500 CODEC for Device Tree
In reply to Lee JonesAt Thu, 9 Aug 2012 16:47:34 +0100,
sound/soc/codecs/ab8500-codec.c static int ab8500_codec_probe(struct snd_soc_codec *codec) · line 2473
Quoted 11 lines · Lee Jones
sound/soc/codecs/ab8500-codec.c +7
-0@@ -2407,6 +2464,30 @@ static int ab8500_codec_probe(struct snd_soc_codec *codec)/* Setup AB8500 according to board-settings */ pdata = (struct ab8500_platform_data *)dev_get_platdata (dev->parent); +if (np) { +if (!pdata) + pdata =devm_kzalloc (dev, +sizeof (struct ab8500_platform_data ), +GFP_KERNEL ); + +if (!pdata->codec)
The NULL check of pdata must be before pdata->codec access.
Takashi
Quoted 28 lines
sound/soc/codecs/ab8500-codec.c +17
-0+ pdata->codec + =devm_kzalloc (dev, +sizeof (struct ab8500_codec_platform_data ), +GFP_KERNEL ); + +if (!(pdata && pdata->codec)) +return -ENOMEM ; + +ab8500_codec_of_probe (dev, np, pdata->codec); + + }else { +if (!(pdata && pdata->codec)) { +dev_err (dev,"No codec platform data or DT found\n" ); +return -EINVAL ; + } + } +/* Inform SoC Core that we have our own I/O arrangements. */ codec->control_data = (void *)true;Signature · 6 lines
1.7.9.5 _______________________________________________ Alsa-devel mailing list [email protected] http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
PATCH 1/1 ASoC: codecs: Enable AB8500 CODEC for Device Tree
From: Lee Jones <[email protected]>
Date: Fri, 27 Jul 2012 08:50:05 +0100
Subject: [PATCH 1/1] ASoC: codecs: Enable AB8500 CODEC for Device Tree
We continue to allow the AB8500 CODEC to be registered via the AB8500 Multi Functional Device API, only this time we extract its configuration from the Device Tree binary.
--- include/linux/mfd/abx500/ab8500-codec.h | 6 ++- sound/soc/codecs/ab8500-codec.c | 81 +++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-)
include/linux/mfd/abx500/ab8500-codec.h +4 -2
@@ -23,7 +23,8 @@ enum amic_type {/* Mic-biases */ enum amic_micbias {AMIC_MICBIAS_VAMIC1 , -AMIC_MICBIAS_VAMIC2 +AMIC_MICBIAS_VAMIC2 , +AMIC_MICBIAS_UNKNOWN };/* Bias-voltage */
@@ -31,7 +32,8 @@ enum ear_cm_voltage {EAR_CMV_0_95V ,EAR_CMV_1_10V ,EAR_CMV_1_27V , - EAR_CMV_1_58V +EAR_CMV_1_58V , + EAR_CMV_UNKNOWN };/* Analog microphone settings */
sound/soc/codecs/ab8500-codec.c +81 -0
102 lines not on this page · raw message
Signature · 1 line
1.7.9.5
Re: [PATCH 1/1] ASoC: codecs: Enable AB8500 CODEC for Device Tree
Quoted 7 lines · Lee Jones
From: Lee Jones <[email protected]>
Date: Fri, 27 Jul 2012 08:50:05 +0100
Subject: [PATCH 1/1] ASoC: codecs: Enable AB8500 CODEC for Device TreeWe continue to allow the AB8500 CODEC to be registered via the AB8500 Multi Functional Device API, only this time we extract its configuration from the Device Tree binary.
Please resend this series with all the acks you've got rather than
mixing incremental updates in like this. Please also send patches in
the format documented in SubmittingPatches.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120820/7f4b907a/attachment.sig>
Re: [PATCH 1/1] ASoC: codecs: Enable AB8500 CODEC for Device Tree
Quoted 11 lines · Mark Brown
Quoted 7 lines · Lee Jones
From: Lee Jones <[email protected]>
Date: Fri, 27 Jul 2012 08:50:05 +0100
Subject: [PATCH 1/1] ASoC: codecs: Enable AB8500 CODEC for Device TreeWe continue to allow the AB8500 CODEC to be registered via the AB8500 Multi Functional Device API, only this time we extract its configuration from the Device Tree binary.
Please resend this series with all the acks you've got rather than mixing incremental updates in like this.
I'm waiting until I have a few more Acks before I resend the entire patch-set again. Actually it's you and one other that I'm waiting for to review (and Ack as necessary) the ones requested by Linus, then resend with the corrections.
Quoted 2 lines
Please also send patches in
the format documented in SubmittingPatches.
That's a big document, most of which I guess I'm adhering to. Care to be a little more specific?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 1/1] ASoC: codecs: Enable AB8500 CODEC for Device Tree
Quoted 5 lines · Lee Jones
Quoted 2 lines · Mark Brown
Quoted 2 lines
From: Lee Jones <[email protected]>
Date: Fri, 27 Jul 2012 08:50:05 +0100
Quoted 7 lines
Quoted 2 lines
Please resend this series with all the acks you've got rather than mixing incremental updates in like this.
I'm waiting until I have a few more Acks before I resend the entire patch-set again. Actually it's you and one other that I'm waiting for to review (and Ack as necessary) the ones requested by Linus, then resend with the corrections.
Well, I'm the person who's going to apply the patches so I'm unlikely to ack them... I was waiting for arch/arm review before I looked at them due to the number of resends.
Quoted 5 lines
Quoted 2 lines
Please also send patches in
the format documented in SubmittingPatches.That's a big document, most of which I guess I'm adhering to. Care to be a little more specific?
The bit I quoted is the main example, you're including random mail headers in the body of the mail.
Re: [PATCH 1/1] ASoC: codecs: Enable AB8500 CODEC for Device Tree
Quoted 9 lines · Mark Brown
Quoted 7 lines · Lee Jones
Quoted 5 lines · Mark Brown
Quoted 2 lines
From: Lee Jones <[email protected]>
Date: Fri, 27 Jul 2012 08:50:05 +0100Please resend this series with all the acks you've got rather than mixing incremental updates in like this.
Quoted 7 lines
Quoted 4 lines
I'm waiting until I have a few more Acks before I resend the entire patch-set again. Actually it's you and one other that I'm waiting for to review (and Ack as necessary) the ones requested by Linus, then resend with the corrections.
Well, I'm the person who's going to apply the patches so I'm unlikely to ack them... I was waiting for
arch/armreview before I looked at
I have all of Linus' Acks. The only ones missing are yours and Ola's, but I think Ola is on vacation still, so he's asked Roger to do it. I don't know if you saw, but Linus has placed lots of Acked-by's which are dependent on your say-so, hence why I was waiting for your response.
Quoted 1 line
them due to the number of resends.
Bingo, thus why I was dubious about resending the entire patch-set too prematurely.
Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
Please also send patches in
the format documented in SubmittingPatches.That's a big document, most of which I guess I'm adhering to. Care to be a little more specific?
The bit I quoted is the main example, you're including random mail headers in the body of the mail.
They're not mail headers per-say, they're git format-patch headers. I thought this was acceptable for single patches, hence why I've done it lots of times and had no complaints (until now).
If there are some changes required in a single patch, I usually fix it up, create a patch with git format-patch and send it as a reply to either the original patch in the series or the mail containing the suggestion. If this is wrong please educate me as I thought this was acceptable, as I thought it would be less pain than sending the entire patch-set again for just one change?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 1/1] ASoC: codecs: Enable AB8500 CODEC for Device Tree
Quoted 5 lines · Lee Jones
Quoted 2 lines · Mark Brown
The bit I quoted is the main example, you're including random mail headers in the body of the mail.
Quoted 8 lines
They're not mail headers per-say, they're
git format-patchheaders. I thought this was acceptable for single patches, hence why I've done it lots of times and had no complaints (until now).If there are some changes required in a single patch, I usually fix it up, create a patch with
git format-patchand send it as a reply to either the original patch in the series or the mail containing the suggestion. If this is wrong please educate me as I thought this was
If you're going to do this send the patch properly in the same way patches are normally sent. Take a step back and think about this for a minute - why would it be a good idea to send these incremental patches in a different format which requires the person applying the patch to hand edit things to strip out the noise?
Quoted 2 lines
acceptable, as I thought it would be less pain than sending the entire patch-set again for just one change?
It makes it harder to work out which versions of things to apply and
causes issues for tools when doing things like applying from a mailbox.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120821/e65efd78/attachment.sig>
PATCH 9/22 Documentation: Define the MOP500 Audio Machine Driver Device Tree bindings
In reply to Lee JonesHere we add the required documentation for the new Device Tree bindings pertaining to the MOP500 Audio Machine driver.
--- .../devicetree/bindings/sound/ux500-mop500.txt | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/ux500-mop500.txt
Documentation/devicetree/bindings/sound/ux500-mop500.txt new file +39 -0
@@ -0,0 +1,39 @@ +* MOP500 Audio Machine Driver + +This node is responsible for linking together all ux500 Audio Driver components. + +Required properties: + - compatible : "stericsson,snd-soc-mop500" + +Non-standard properties: + - stericsson,cpu-dai : Phandle to the CPU-side DAI + - stericsson,audio-codec : Phandle to the Audio CODEC + - stericsson,card-name : Over-ride default card name + +Example: + + sound { + compatible = "stericsson,snd-soc-mop500"; + + stericsson,cpu-dai = <&msp1 &msp3>; + stericsson,audio-codec = <&codec>; + }; + + msp1: msp@80124000 { + compatible = "stericsson,ux500-msp-i2s"; + reg = <0x80124000 0x1000>; + interrupts = <0 62 0x4>; + v-ape-supply = <&db8500_vape_reg>; + }; + + msp3: msp@80125000 { + compatible = "stericsson,ux500-msp-i2s"; + reg = <0x80125000 0x1000>; + interrupts = <0 62 0x4>; + v-ape-supply = <&db8500_vape_reg>; + }; + + codec: ab8500-codec { + compatible = "stericsson,ab8500-codec"; + stericsson,earpeice-cmv = <950>; /* Units in mV. */ + };
Signature · 1 line
1.7.9.5
PATCH 10/22 Documentation: Define the MSP Driver Device Tree bindings
In reply to Lee JonesHere we add the required documentation for the new Device Tree bindings pertaining to the MSP CPU-side DAI Driver.
--- .../devicetree/bindings/sound/ux500-msp.txt | 43 ++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/ux500-msp.txt
Documentation/devicetree/bindings/sound/ux500-msp.txt new file +43 -0
@@ -0,0 +1,43 @@ +* ux500 MSP (CPU-side Digital Audio Interface) + +Required properties: + - compatible :"stericsson,ux500-msp-i2s" + - reg : Physical base address and length of the device's registers. + +Optional properties: + - interrupts : The interrupt output from the device. + - interrupt-parent : The parent interrupt controller. + - <name>-supply : Phandle to the regulator <name> supply + +Example: + + sound { + compatible = "stericsson,snd-soc-mop500"; + + stericsson,platform-pcm-dma = <&pcm>; + stericsson,cpu-dai = <&msp1 &msp3>; + stericsson,audio-codec = <&codec>; + }; + + pcm: ux500-pcm { + compatible = "stericsson,ux500-pcm"; + }; + + msp1: msp@80124000 { + compatible = "stericsson,ux500-msp-i2s"; + reg = <0x80124000 0x1000>; + interrupts = <0 62 0x4>; + v-ape-supply = <&db8500_vape_reg>; + }; + + msp3: msp@80125000 { + compatible = "stericsson,ux500-msp-i2s"; + reg = <0x80125000 0x1000>; + interrupts = <0 62 0x4>; + v-ape-supply = <&db8500_vape_reg>; + }; + + codec: ab8500-codec { + compatible = "stericsson,ab8500-codec"; + stericsson,earpeice-cmv = <950>; /* Units in mV. */ + };
Signature · 1 line
1.7.9.5
PATCH 11/22 ARM: ux500: Clean-up MSP platform code
In reply to Lee JonesThis patch contains a couple of general MSP clean-ups pertaining to layout changes and changing functions to be void instead of int instead of regardlessly returning '0'.
--- arch/arm/mach-ux500/board-mop500-msp.c | 24 +++++++++++------------- arch/arm/mach-ux500/board-mop500-msp.h | 14 -------------- arch/arm/mach-ux500/board-mop500.c | 1 - arch/arm/mach-ux500/board-mop500.h | 3 +++ 4 files changed, 14 insertions(+), 28 deletions(-) delete mode 100644 arch/arm/mach-ux500/board-mop500-msp.h
arch/arm/mach-ux500/board-mop500-msp.c +11 -13
@@ -144,20 +144,20 @@ static struct platform_device *db8500_add_msp_i2s(struct device *parent,/* Platform device for ASoC MOP500 machine */ static struct platform_device snd_soc_mop500 = { - .name ="snd-soc-mop500" , - .id =0 , - .dev = { - .platform_data =NULL , - }, + .name ="snd-soc-mop500" , + .id =0 , + .dev = { + .platform_data =NULL , + }, };/* Platform device for Ux500-PCM */ static struct platform_device ux500_pcm = { - .name ="ux500-pcm" , - .id =0 , - .dev = { - .platform_data =NULL , - }, + .name ="ux500-pcm" , + .id =0 , + .dev = { + .platform_data =NULL , + }, };static struct msp_i2s_platform_data msp2_platform_data = {
@@ -172,7 +172,7 @@ static struct msp_i2s_platform_data msp3_platform_data = { .msp_i2s_dma_tx = NULL, }; -int mop500_msp_init (struct device *parent) +void mop500_msp_init (struct device *parent) {pr_info ("%s: Register platform-device 'snd-soc-mop500'.\n" , __func__);platform_device_register (&snd_soc_mop500);
@@ -189,6 +189,4 @@ int mop500_msp_init(struct device *parent)pr_info ("%s: Register platform-device 'ux500-pcm'\n" , __func__);platform_device_register (&ux500_pcm); - -return 0 ; }
arch/arm/mach-ux500/board-mop500-msp.h deleted +0 -14
@@ -1,14 +0,0 @@ -/* -* Copyright (C) ST-Ericsson SA 2012 -* -* Author: Ola Lilja <[email protected]>, -* for ST-Ericsson. -* -* License terms: -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License version 2 as published -* by the Free Software Foundation. -*/ - -void mop500_msp_init (struct device *parent);
arch/arm/mach-ux500/board-mop500.c +0 -1
@@ -54,7 +54,6 @@#include "devices-db8500.h" #include "board-mop500.h" #include "board-mop500-regulators.h" -#include "board-mop500-msp.h" static struct gpio_led snowball_led_array[] = { {
arch/arm/mach-ux500/board-mop500.h +3 -0
@@ -92,6 +92,9 @@ void __init mop500_stuib_init(void);void __init mop500_pinmaps_init (void );void __init snowball_pinmaps_init (void );void __init hrefv60_pinmaps_init (void ); +void mop500_msp_init (struct device *parent); +/* Due for removal once the MSP driver has been fully DT:ed. */ +void mop500_of_msp_init (struct device *parent);int __init mop500_uib_init (void ); void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
Signature · 1 line
1.7.9.5
Re: [PATCH 11/22] ARM: ux500: Clean-up MSP platform code
Quoted 5 lines · Lee Jones
This patch contains a couple of general MSP clean-ups pertaining to layout changes and changing functions to be void instead of int instead of regardlessly returning '0'.
Signed-off-by Lee Jones <[email protected]>
OK with me but also want Ola to look at this one.
Yours,
Linus Walleij
PATCH 12/22 ARM: ux500: Add AB8500 CODEC node to DB8500 Device Tree
In reply to Lee JonesEnsure correct probing and pass though important configuration options to the AB8500 CODEC driver when DT is enabled
--- arch/arm/boot/dts/db8500.dtsi | 6 ++++++ 1 file changed, 6 insertions(+)
arch/arm/boot/dts/db8500.dtsi +6 -0
@@ -389,6 +389,12 @@ compatible = "stericsson,ab8500-debug"; }; + codec: ab8500-codec { + compatible = "stericsson,ab8500-codec"; + + stericsson,earpeice-cmv = <950>; /* Units in mV. */ + }; + ab8500-regulators { compatible = "stericsson,ab8500-regulator";
Signature · 1 line
1.7.9.5
Re: [PATCH 12/22] ARM: ux500: Add AB8500 CODEC node to DB8500 Device Tree
Quoted 4 lines · Lee Jones
Ensure correct probing and pass though important configuration options to the AB8500 CODEC driver when DT is enabled
Signed-off-by Lee Jones <[email protected]>
FWIW:
But I think Ola and Marks ACKS are more important on this one.
Yours,
Linus Walleij
PATCH 13/22 ARM: ux500: Fork MSP platform registration for step-by-step DT enablement
In reply to Lee JonesWe've done this before and it worked well last time. Here we're duplicating a complex registration function to ease the process of enabling it for Device Tree. As there are quite a few steps taken during the registration process, it makes sense to break them up into more manageable chunks. This patch will aid us.
--- arch/arm/mach-ux500/board-mop500-msp.c | 20 ++++++++++++++++++++ arch/arm/mach-ux500/board-mop500.c | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-)
arch/arm/mach-ux500/board-mop500-msp.c +20 -0
@@ -172,6 +172,26 @@ static struct msp_i2s_platform_data msp3_platform_data = { .msp_i2s_dma_tx = NULL, }; +/* Due for removal once the MSP driver has been fully DT:ed. */ +void mop500_of_msp_init (struct device *parent) +{ +pr_info ("%s: Register platform-device 'snd-soc-u8500'.\n" , __func__); +platform_device_register (&snd_soc_mop500); + +pr_info ("Initialize MSP I2S-devices.\n" ); +db8500_add_msp_i2s (parent,0 ,U8500_MSP0_BASE ,IRQ_DB8500_MSP0 , + &msp0_platform_data); +db8500_add_msp_i2s (parent,1 ,U8500_MSP1_BASE ,IRQ_DB8500_MSP1 , + &msp1_platform_data); +db8500_add_msp_i2s (parent,2 ,U8500_MSP2_BASE ,IRQ_DB8500_MSP2 , + &msp2_platform_data); +db8500_add_msp_i2s (parent,3 ,U8500_MSP3_BASE ,IRQ_DB8500_MSP1 , + &msp3_platform_data); + +pr_info ("%s: Register platform-device 'ux500-pcm'\n" , __func__); +platform_device_register (&ux500_pcm); +} +void mop500_msp_init (struct device *parent) {pr_info ("%s: Register platform-device 'snd-soc-mop500'.\n" , __func__);
arch/arm/mach-ux500/board-mop500.c +1 -1
@@ -807,7 +807,7 @@ static void __init u8500_init_machine(void)mop500_uib_init (); }else if (of_machine_is_compatible ("calaosystems,snowball-a9500" )) { -mop500_msp_init (parent); +mop500_of_msp_init (parent); }else if (of_machine_is_compatible ("st-ericsson,hrefv60+" )) {/* * The HREFv60 board removed a GPIO expander and routed
Signature · 1 line
1.7.9.5
Re: [PATCH 13/22] ARM: ux500: Fork MSP platform registration for step-by-step DT enablement
Quoted 7 lines · Lee Jones
We've done this before and it worked well last time. Here we're duplicating a complex registration function to ease the process of enabling it for Device Tree. As there are quite a few steps taken during the registration process, it makes sense to break them up into more manageable chunks. This patch will aid us.
Signed-off-by Lee Jones <[email protected]>
I understand you have used this approach before so:
Yours,
Linus Walleij
Re: [PATCH 13/22] ARM: ux500: Fork MSP platform registration for step-by-step DT enablement
Quoted 8 lines · Linus Walleij
Quoted 6 lines · Lee Jones
We've done this before and it worked well last time. Here we're duplicating a complex registration function to ease the process of enabling it for Device Tree. As there are quite a few steps taken during the registration process, it makes sense to break them up into more manageable chunks. This patch will aid us.
Quoted 4 lines
Quoted 1 line
Signed-off-by Lee Jones <[email protected]>I understand you have used this approach before so:
Acked-by Linus Walleij <[email protected]>
Does this comment take back your previous one:
NOTE: it seems this patch set contains some churn. First you add in the forked device init, put in a big chunk of code and then in the *same* patch set delete it again. It's not like we're dying to see all the development history... can this be squashed down a bit?
... hence leave the patch-set as it is?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 13/22] ARM: ux500: Fork MSP platform registration for step-by-step DT enablement
Quoted 16 lines · Lee Jones
Quoted 8 lines · Linus Walleij
Quoted 6 lines · Lee Jones
We've done this before and it worked well last time. Here we're duplicating a complex registration function to ease the process of enabling it for Device Tree. As there are quite a few steps taken during the registration process, it makes sense to break them up into more manageable chunks. This patch will aid us.
Quoted 4 lines
Quoted 1 line
Signed-off-by Lee Jones <[email protected]>I understand you have used this approach before so:
Acked-by Linus Walleij <[email protected]>Does this comment take back your previous one:
Quoted 7 lines
NOTE: it seems this patch set contains some churn. First you add in the forked device init, put in a big chunk of code and then in the *same* patch set delete it again. It's not like we're dying to see all the development history... can this be squashed down a bit?
... hence leave the patch-set as it is?
No. I just meant leave it like that for the devices outside of this set.
If you're adding and then removing *all* of them in this set, why add them in the first place?
Yours,
Linus Walleij
Re: [PATCH 13/22] ARM: ux500: Fork MSP platform registration for step-by-step DT enablement
Quoted 23 lines · Linus Walleij
Quoted 22 lines · Lee Jones
Quoted 8 lines · Linus Walleij
Quoted 6 lines · Lee Jones
We've done this before and it worked well last time. Here we're duplicating a complex registration function to ease the process of enabling it for Device Tree. As there are quite a few steps taken during the registration process, it makes sense to break them up into more manageable chunks. This patch will aid us.
Quoted 4 lines
Quoted 1 line
Signed-off-by Lee Jones <[email protected]>I understand you have used this approach before so:
Acked-by Linus Walleij <[email protected]>Does this comment take back your previous one:
NOTE: it seems this patch set contains some churn. First you add in the forked device init, put in a big chunk of code and then in the *same* patch set delete it again. It's not like we're dying to see all the development history... can this be squashed down a bit?
Quoted 7 lines
Quoted 1 line
... hence leave the patch-set as it is?
No. I just meant leave it like that for the devices outside of this set.
If you're adding and then removing *all* of them in this set, why add them in the first place?
So that there's no breakage during bisection.
You should be able to roll the kernel back in between each of these patches and there to be full compatibility at each point. At least that was the intention. Is that wrong?
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 13/22] ARM: ux500: Fork MSP platform registration for step-by-step DT enablement
Quoted 10 lines · Lee Jones
Quoted 2 lines · Linus Walleij
If you're adding and then removing *all* of them in this set, why add them in the first place?
So that there's no breakage during bisection.
You should be able to roll the kernel back in between each of these patches and there to be full compatibility at each point. At least that was the intention. Is that wrong?
No it's correct, the only way to do what I'm thinking on may be to squash them all into one gigantic patch, which is not good either.
So go ahead with this scheme, it's the lesser of two evils. Acked-by etc.
Yours,
Linus Walleij
PATCH 14/22 ARM: ux500: Pass MSP DMA platform data though AUXDATA
In reply to Lee JonesIt isn't currently possible to pass all platform specific configuration though Device Tree. Thinks like device names used in the clock infrastructure, call-backs and DMA information have to be passed in via AUXDATA structures and the MSP is no exception. Here we're passing DMA settings.
--- arch/arm/mach-ux500/board-mop500-msp.c | 8 ++++---- arch/arm/mach-ux500/board-mop500.c | 9 +++++++++ arch/arm/mach-ux500/board-mop500.h | 5 +++++ 3 files changed, 18 insertions(+), 4 deletions(-)
arch/arm/mach-ux500/board-mop500-msp.c +4 -4
@@ -49,7 +49,7 @@ static struct stedma40_chan_cfg msp0_dma_tx = {/* data_width is set during configuration */ }; -static struct msp_i2s_platform_data msp0_platform_data = { +struct msp_i2s_platform_data msp0_platform_data = { .id =MSP_I2S_0 , .msp_i2s_dma_rx = &msp0_dma_rx, .msp_i2s_dma_tx = &msp0_dma_tx,
@@ -81,7 +81,7 @@ static struct stedma40_chan_cfg msp1_dma_tx = {/* data_width is set during configuration */ }; -static struct msp_i2s_platform_data msp1_platform_data = { +struct msp_i2s_platform_data msp1_platform_data = { .id =MSP_I2S_1 , .msp_i2s_dma_rx =NULL , .msp_i2s_dma_tx = &msp1_dma_tx,
@@ -160,13 +160,13 @@ static struct platform_device ux500_pcm = { }, }; -static struct msp_i2s_platform_data msp2_platform_data = { +struct msp_i2s_platform_data msp2_platform_data = { .id =MSP_I2S_2 , .msp_i2s_dma_rx = &msp2_dma_rx, .msp_i2s_dma_tx = &msp2_dma_tx, }; -static struct msp_i2s_platform_data msp3_platform_data = { +struct msp_i2s_platform_data msp3_platform_data = { .id =MSP_I2S_3 , .msp_i2s_dma_rx = &msp1_dma_rx, .msp_i2s_dma_tx =NULL ,
arch/arm/mach-ux500/board-mop500.c +9 -0
@@ -758,6 +758,15 @@ struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {OF_DEV_AUXDATA ("st,nomadik-i2c" ,0x8012a000 ,"nmk-i2c.4" ,NULL ),/* Requires device name bindings. */ OF_DEV_AUXDATA ("stericsson,nmk_pinctrl" ,0 ,"pinctrl-db8500" ,NULL ), +/* Requires clock name and DMA bindings. */ +OF_DEV_AUXDATA ("stericsson,ux500-msp-i2s" ,0x80123000 , +"ux500-msp-i2s.0" , &msp0_platform_data), +OF_DEV_AUXDATA ("stericsson,ux500-msp-i2s" ,0x80124000 , +"ux500-msp-i2s.1" , &msp1_platform_data), +OF_DEV_AUXDATA ("stericsson,ux500-msp-i2s" ,0x80117000 , +"ux500-msp-i2s.2" , &msp2_platform_data), +OF_DEV_AUXDATA ("stericsson,ux500-msp-i2s" ,0x80125000 , + "ux500-msp-i2s.3", &msp3_platform_data), {}, };
arch/arm/mach-ux500/board-mop500.h +5 -0
@@ -9,6 +9,7 @@/* For NOMADIK_NR_GPIO */ #include <mach/irqs.h> +#include <mach/msp.h> #include <linux/amba/mmci.h> /* Snowball specific GPIO assignments, this board has no GPIO expander */
@@ -81,6 +82,10 @@ struct device;struct i2c_board_info ;extern struct mmci_platform_data mop500_sdi0_data;extern struct mmci_platform_data mop500_sdi4_data; +extern struct msp_i2s_platform_data msp0_platform_data; +extern struct msp_i2s_platform_data msp1_platform_data; +extern struct msp_i2s_platform_data msp2_platform_data; +extern struct msp_i2s_platform_data msp3_platform_data;extern struct arm_pmu_platdata db8500_pmu_platdata;extern void mop500_sdi_init (struct device *parent);
Signature · 1 line
1.7.9.5
Re: [PATCH 14/22] ARM: ux500: Pass MSP DMA platform data though AUXDATA
Quoted 7 lines · Lee Jones
It isn't currently possible to pass all platform specific configuration though Device Tree. Thinks like device names used in the clock infrastructure, call-backs and DMA information have to be passed in via AUXDATA structures and the MSP is no exception. Here we're passing DMA settings.
Signed-off-by Lee Jones <[email protected]>
Yours,
Linus Walleij
PATCH 15/22 ARM: ux500: Stop registering the MOP500 Audio driver from platform code
In reply to Lee JonesIn this patch we prevent MOP500 driver registration from platform code and rely solely on Device Tree to do the probing for us.
--- arch/arm/mach-ux500/board-mop500-msp.c | 3 --- 1 file changed, 3 deletions(-)
arch/arm/mach-ux500/board-mop500-msp.c +0 -3
@@ -175,9 +175,6 @@ struct msp_i2s_platform_data msp3_platform_data = {/* Due for removal once the MSP driver has been fully DT:ed. */ void mop500_of_msp_init (struct device *parent) { -pr_info ("%s: Register platform-device 'snd-soc-u8500'.\n" , __func__); -platform_device_register (&snd_soc_mop500); -pr_info ("Initialize MSP I2S-devices.\n" );db8500_add_msp_i2s (parent,0 ,U8500_MSP0_BASE ,IRQ_DB8500_MSP0 , &msp0_platform_data);
Signature · 1 line
1.7.9.5
Re: [PATCH 15/22] ARM: ux500: Stop registering the MOP500 Audio driver from platform code
Quoted 4 lines · Lee Jones
In this patch we prevent MOP500 driver registration from platform code and rely solely on Device Tree to do the probing for us.
Signed-off-by Lee Jones <[email protected]>
Yours,
Linus Walleij
PATCH 16/22 ARM: ux500: Stop registering the PCM driver from platform code
In reply to Lee JonesWe now initialise the PCM driver through the MSP DAI, so there is no need to register it though platform code anymore. This patch strips out all PCM platform registration.
--- arch/arm/mach-ux500/board-mop500-msp.c | 6 ------ 1 file changed, 6 deletions(-)
arch/arm/mach-ux500/board-mop500-msp.c +0 -6
@@ -184,9 +184,6 @@ void mop500_of_msp_init(struct device *parent) &msp2_platform_data);db8500_add_msp_i2s (parent,3 ,U8500_MSP3_BASE ,IRQ_DB8500_MSP1 , &msp3_platform_data); - -pr_info ("%s: Register platform-device 'ux500-pcm'\n" , __func__); -platform_device_register (&ux500_pcm); }void mop500_msp_init (struct device *parent)
@@ -203,7 +200,4 @@ void mop500_msp_init(struct device *parent) &msp2_platform_data);db8500_add_msp_i2s (parent,3 ,U8500_MSP3_BASE ,IRQ_DB8500_MSP1 , &msp3_platform_data); - -pr_info ("%s: Register platform-device 'ux500-pcm'\n" , __func__); -platform_device_register (&ux500_pcm); }
Signature · 1 line
1.7.9.5
Re: [PATCH 16/22] ARM: ux500: Stop registering the PCM driver from platform code
Quoted 5 lines · Lee Jones
We now initialise the PCM driver through the MSP DAI, so there is no need to register it though platform code anymore. This patch strips out all PCM platform registration.
Signed-off-by Lee Jones <[email protected]>
Yours,
Linus Walleij
PATCH 17/22 ARM: ux500: Remove platform registration of MSP devices
In reply to Lee JonesThis patch removes platform device registration of all 4 MSP devices. It also takes care of all redundant infrastructure now that each of the ux500 audio components have been Device Tree enabled.
--- arch/arm/mach-ux500/board-mop500-msp.c | 14 -------------- arch/arm/mach-ux500/board-mop500.c | 2 -- arch/arm/mach-ux500/board-mop500.h | 2 -- 3 files changed, 18 deletions(-)
arch/arm/mach-ux500/board-mop500-msp.c +0 -14
@@ -172,20 +172,6 @@ struct msp_i2s_platform_data msp3_platform_data = { .msp_i2s_dma_tx = NULL, }; -/* Due for removal once the MSP driver has been fully DT:ed. */ -void mop500_of_msp_init (struct device *parent) -{ -pr_info ("Initialize MSP I2S-devices.\n" ); -db8500_add_msp_i2s (parent,0 ,U8500_MSP0_BASE ,IRQ_DB8500_MSP0 , - &msp0_platform_data); -db8500_add_msp_i2s (parent,1 ,U8500_MSP1_BASE ,IRQ_DB8500_MSP1 , - &msp1_platform_data); -db8500_add_msp_i2s (parent,2 ,U8500_MSP2_BASE ,IRQ_DB8500_MSP2 , - &msp2_platform_data); -db8500_add_msp_i2s (parent,3 ,U8500_MSP3_BASE ,IRQ_DB8500_MSP1 , - &msp3_platform_data); -} -void mop500_msp_init (struct device *parent) {pr_info ("%s: Register platform-device 'snd-soc-mop500'.\n" , __func__);
arch/arm/mach-ux500/board-mop500.c +0 -2
@@ -815,8 +815,6 @@ static void __init u8500_init_machine(void)mop500_uib_init (); - }else if (of_machine_is_compatible ("calaosystems,snowball-a9500" )) { -mop500_of_msp_init (parent); }else if (of_machine_is_compatible ("st-ericsson,hrefv60+" )) {/* * The HREFv60 board removed a GPIO expander and routed
arch/arm/mach-ux500/board-mop500.h +0 -2
@@ -98,8 +98,6 @@ void __init mop500_pinmaps_init(void);void __init snowball_pinmaps_init (void );void __init hrefv60_pinmaps_init (void );void mop500_msp_init (struct device *parent); -/* Due for removal once the MSP driver has been fully DT:ed. */ -void mop500_of_msp_init (struct device *parent);int __init mop500_uib_init (void ); void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
Signature · 1 line
1.7.9.5
Re: [PATCH 17/22] ARM: ux500: Remove platform registration of MSP devices
Quoted 6 lines · Lee Jones
This patch removes platform device registration of all 4 MSP devices. It also takes care of all redundant infrastructure now that each of the ux500 audio components have been Device Tree enabled.
Signed-off-by Lee Jones <[email protected]>
NOTE: it seems this patch set contains some churn. First you add in the forked device init, put in a big chunk of code and then in the *same* patch set delete it again. It's not like we're dying to see all the development history... can this be squashed down a bit?
Yours,
Linus Walleij
PATCH 18/22 ARM: ux500: Rename MSP board file to something more meaningful
In reply to Lee JonesThe 'msp' board file does more than just register MSP devices. It also registers some other components necessary to get audio working on ux500 based platforms; such as the PCM and Machine Drivers. For that reason we're changing the filename to be more encompassing - 'audio'.
--- arch/arm/mach-ux500/Makefile | 2 +- arch/arm/mach-ux500/board-mop500-audio.c | 189 ++++++++++++++++++++++++++++++ arch/arm/mach-ux500/board-mop500-msp.c | 189 ------------------------------ arch/arm/mach-ux500/board-mop500.c | 10 +- arch/arm/mach-ux500/board-mop500.h | 2 +- 5 files changed, 196 insertions(+), 196 deletions(-) create mode 100644 arch/arm/mach-ux500/board-mop500-audio.c delete mode 100644 arch/arm/mach-ux500/board-mop500-msp.c
arch/arm/mach-ux500/Makefile +1 -1
@@ -12,6 +12,6 @@ obj-$(CONFIG_MACH_MOP500) += board-mop500.o board-mop500-sdi.o \ board-mop500-uib.o board-mop500-stuib.o \ board-mop500-u8500uib.o \ board-mop500-pins.o \ - board-mop500-msp.o + board-mop500-audio.o obj-$(CONFIG_SMP) += platsmp.o headsmp.o obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
arch/arm/mach-ux500/board-mop500-audio.c new file +189 -0
189 lines not on this page · raw message
arch/arm/mach-ux500/board-mop500-msp.c deleted +0 -189
189 lines not on this page · raw message
arch/arm/mach-ux500/board-mop500.c +5 -5
@@ -607,7 +607,7 @@ static void __init mop500_init_machine(void)mop500_i2c_init (parent);mop500_sdi_init (parent);mop500_spi_init (parent); -mop500_msp_init (parent); +mop500_audio_init (parent);mop500_uart_init (parent);u8500_cryp1_hash1_init (parent);
@@ -641,7 +641,7 @@ static void __init snowball_init_machine(void)mop500_i2c_init (parent);snowball_sdi_init (parent);mop500_spi_init (parent); -mop500_msp_init (parent); +mop500_audio_init (parent);mop500_uart_init (parent);/* This board has full regulator constraints */
@@ -673,7 +673,7 @@ static void __init hrefv60_init_machine(void)mop500_i2c_init (parent);hrefv60_sdi_init (parent);mop500_spi_init (parent); -mop500_msp_init (parent); +mop500_audio_init (parent);mop500_uart_init (parent); i2c0_devs =ARRAY_SIZE (mop500_i2c0_devices);
@@ -807,7 +807,7 @@ static void __init u8500_init_machine(void) ARRAY_SIZE(mop500_platform_devs));mop500_sdi_init (parent); -mop500_msp_init (parent); +mop500_audio_init (parent); i2c0_devs =ARRAY_SIZE (mop500_i2c0_devices);i2c_register_board_info (0 , mop500_i2c0_devices, i2c0_devs); i2c_register_board_info(2, mop500_i2c2_devices,
@@ -826,7 +826,7 @@ static void __init u8500_init_machine(void) ARRAY_SIZE(mop500_platform_devs));hrefv60_sdi_init (parent); -mop500_msp_init (parent); +mop500_audio_init (parent); i2c0_devs =ARRAY_SIZE (mop500_i2c0_devices); i2c0_devs -=NUM_PRE_V60_I2C0_DEVICES ;
arch/arm/mach-ux500/board-mop500.h +1 -1
@@ -97,7 +97,7 @@ void __init mop500_stuib_init(void);void __init mop500_pinmaps_init (void );void __init snowball_pinmaps_init (void );void __init hrefv60_pinmaps_init (void ); -void mop500_msp_init (struct device *parent); +void mop500_audio_init (struct device *parent);int __init mop500_uib_init (void ); void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
Signature · 1 line
1.7.9.5
Re: [PATCH 18/22] ARM: ux500: Rename MSP board file to something more meaningful
Quoted 7 lines · Lee Jones
The 'msp' board file does more than just register MSP devices. It also registers some other components necessary to get audio working on ux500 based platforms; such as the PCM and Machine Drivers. For that reason we're changing the filename to be more encompassing - 'audio'.
Signed-off-by Lee Jones <[email protected]>
Ideally I want Ola to confirm this but it looks OK to me.
Consider using git format-patch -m which detects renames and makes for much more compact patches.
Yours,
Linus Walleij
Re: [PATCH 18/22] ARM: ux500: Rename MSP board file to something more meaningful
Quoted 8 lines · Linus Walleij
Quoted 6 lines · Lee Jones
The 'msp' board file does more than just register MSP devices. It also registers some other components necessary to get audio working on ux500 based platforms; such as the PCM and Machine Drivers. For that reason we're changing the filename to be more encompassing - 'audio'.
Quoted 4 lines
Quoted 1 line
Signed-off-by Lee Jones <[email protected]>Ideally I want Ola to confirm this but it looks OK to me.
Acked-by Linus Walleij <[email protected]>
Poke for Ola.
I'm guessing it's okay, as Ola told me to rename the file 'msp' -> 'audio'.
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
PATCH 19/22 ARM: ux500: Rename db8500.dtsi to dbx5x0.dtsi to encompass the u9500, u8540 and u9540
In reply to Lee Jones--- arch/arm/boot/dts/db8500.dtsi | 633 ---------------------------------------- arch/arm/boot/dts/dbx5x0.dtsi | 633 ++++++++++++++++++++++++++++++++++++++++ arch/arm/boot/dts/snowball.dts | 2 +- 3 files changed, 634 insertions(+), 634 deletions(-) delete mode 100644 arch/arm/boot/dts/db8500.dtsi create mode 100644 arch/arm/boot/dts/dbx5x0.dtsi
arch/arm/boot/dts/db8500.dtsi deleted +0 -633
@@ -1,633 +0,0 @@ -/* - * Copyright 2012 Linaro Ltd - * - * The code contained herein is licensed under the GNU General Public - * License. You may obtain a copy of the GNU General Public License - * Version 2 or later at the following locations: - * - * http://www.opensource.org/licenses/gpl-license.html - * http://www.gnu.org/copyleft/gpl.html - */ - -/include/ "skeleton.dtsi" - -/ { - soc-u9500 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "stericsson,db8500"; - interrupt-parent = <&intc>; - ranges; - - intc: interrupt-controller at a0411000 { - compatible = "arm,cortex-a9-gic"; - #interrupt-cells = <3>; - #address-cells = <1>; - interrupt-controller; - reg = <0xa0411000 0x1000>, - <0xa0410100 0x100>; - }; - - L2: l2-cache { - compatible = "arm,pl310-cache"; - reg = <0xa0412000 0x1000>; - interrupts = <0 13 4>; - cache-unified; - cache-level = <2>; - }; - - pmu { - compatible = "arm,cortex-a9-pmu"; - interrupts = <0 7 0x4>; - }; - - timer at a0410600 { - compatible = "arm,cortex-a9-twd-timer"; - reg = <0xa0410600 0x20>; - interrupts = <1 13 0x304>; - }; - - rtc at 80154000 { - compatible = "arm,rtc-pl031", "arm,primecell"; - reg = <0x80154000 0x1000>; - interrupts = <0 18 0x4>; - }; - - gpio0: gpio at 8012e000 { - compatible = "stericsson,db8500-gpio", - "st,nomadik-gpio"; - reg = <0x8012e000 0x80>; - interrupts = <0 119 0x4>; - interrupt-controller; - #interrupt-cells = <2>; - st,supports-sleepmode; - gpio-controller; - #gpio-cells = <2>; - gpio-bank = <0>; - }; - - gpio1: gpio at 8012e080 { - compatible = "stericsson,db8500-gpio", - "st,nomadik-gpio"; - reg = <0x8012e080 0x80>; - interrupts = <0 120 0x4>; - interrupt-controller; - #interrupt-cells = <2>; - st,supports-sleepmode; - gpio-controller; - #gpio-cells = <2>; - gpio-bank = <1>; - }; - - gpio2: gpio at 8000e000 { - compatible = "stericsson,db8500-gpio", - "st,nomadik-gpio"; - reg = <0x8000e000 0x80>; - interrupts = <0 121 0x4>; - interrupt-controller; - #interrupt-cells = <2>; - st,supports-sleepmode; - gpio-controller; - #gpio-cells = <2>; - gpio-bank = <2>; - }; - - gpio3: gpio at 8000e080 { - compatible = "stericsson,db8500-gpio", - "st,nomadik-gpio"; - reg = <0x8000e080 0x80>; - interrupts = <0 122 0x4>; - interrupt-controller; - #interrupt-cells = <2>; - st,supports-sleepmode; - gpio-controller; - #gpio-cells = <2>; - gpio-bank = <3>; - }; - - gpio4: gpio at 8000e100 { - compatible = "stericsson,db8500-gpio", - "st,nomadik-gpio"; - reg = <0x8000e100 0x80>; - interrupts = <0 123 0x4>; - interrupt-controller; - #interrupt-cells = <2>; - st,supports-sleepmode; - gpio-controller; - #gpio-cells = <2>; - gpio-bank = <4>; - }; - - gpio5: gpio at 8000e180 { - compatible = "stericsson,db8500-gpio", - "st,nomadik-gpio"; - reg = <0x8000e180 0x80>; - interrupts = <0 124 0x4>; - interrupt-controller; - #interrupt-cells = <2>; - st,supports-sleepmode; - gpio-controller; - #gpio-cells = <2>; - gpio-bank = <5>; - }; - - gpio6: gpio at 8011e000 { - compatible = "stericsson,db8500-gpio", - "st,nomadik-gpio"; - reg = <0x8011e000 0x80>; - interrupts = <0 125 0x4>; - interrupt-controller; - #interrupt-cells = <2>; - st,supports-sleepmode; - gpio-controller; - #gpio-cells = <2>; - gpio-bank = <6>; - }; - - gpio7: gpio at 8011e080 { - compatible = "stericsson,db8500-gpio", - "st,nomadik-gpio"; - reg = <0x8011e080 0x80>; - interrupts = <0 126 0x4>; - interrupt-controller; - #interrupt-cells = <2>; - st,supports-sleepmode; - gpio-controller; - #gpio-cells = <2>; - gpio-bank = <7>; - }; - - gpio8: gpio at a03fe000 { - compatible = "stericsson,db8500-gpio", - "st,nomadik-gpio"; - reg = <0xa03fe000 0x80>; - interrupts = <0 127 0x4>; - interrupt-controller; - #interrupt-cells = <2>; - st,supports-sleepmode; - gpio-controller; - #gpio-cells = <2>; - gpio-bank = <8>; - }; - - pinctrl { - compatible = "stericsson,nmk_pinctrl"; - }; - - usb at a03e0000 { - compatible = "stericsson,db8500-musb", - "mentor,musb"; - reg = <0xa03e0000 0x10000>; - interrupts = <0 23 0x4>; - }; - - dma-controller at 801C0000 { - compatible = "stericsson,db8500-dma40", - "stericsson,dma40"; - reg = <0x801C0000 0x1000 0x40010000 0x800>; - interrupts = <0 25 0x4>; - }; - - prcmu at 80157000 { - compatible = "stericsson,db8500-prcmu"; - reg = <0x80157000 0x1000>; - interrupts = <0 47 0x4>; - #address-cells = <1>; - #size-cells = <1>; - ranges; - - prcmu-timer-4 at 80157450 { - compatible = "stericsson,db8500-prcmu-timer-4"; - reg = <0x80157450 0xC>; - }; - - db8500-prcmu-regulators { - compatible = "stericsson,db8500-prcmu-regulator"; - - // DB8500_REGULATOR_VAPE - db8500_vape_reg: db8500_vape { - regulator-compatible = "db8500_vape"; - regulator-name = "db8500-vape"; - regulator-always-on; - }; - - // DB8500_REGULATOR_VARM - db8500_varm_reg: db8500_varm { - regulator-compatible = "db8500_varm"; - regulator-name = "db8500-varm"; - }; - - // DB8500_REGULATOR_VMODEM - db8500_vmodem_reg: db8500_vmodem { - regulator-compatible = "db8500_vmodem"; - regulator-name = "db8500-vmodem"; - }; - - // DB8500_REGULATOR_VPLL - db8500_vpll_reg: db8500_vpll { - regulator-compatible = "db8500_vpll"; - regulator-name = "db8500-vpll"; - }; - - // DB8500_REGULATOR_VSMPS1 - db8500_vsmps1_reg: db8500_vsmps1 { - regulator-compatible = "db8500_vsmps1"; - regulator-name = "db8500-vsmps1"; - }; - - // DB8500_REGULATOR_VSMPS2 - db8500_vsmps2_reg: db8500_vsmps2 { - regulator-compatible = "db8500_vsmps2"; - regulator-name = "db8500-vsmps2"; - }; - - // DB8500_REGULATOR_VSMPS3 - db8500_vsmps3_reg: db8500_vsmps3 { - regulator-compatible = "db8500_vsmps3"; - regulator-name = "db8500-vsmps3"; - }; - - // DB8500_REGULATOR_VRF1 - db8500_vrf1_reg: db8500_vrf1 { - regulator-compatible = "db8500_vrf1"; - regulator-name = "db8500-vrf1"; - }; - - // DB8500_REGULATOR_SWITCH_SVAMMDSP - db8500_sva_mmdsp_reg: db8500_sva_mmdsp { - regulator-compatible = "db8500_sva_mmdsp"; - regulator-name = "db8500-sva-mmdsp"; - }; - - // DB8500_REGULATOR_SWITCH_SVAMMDSPRET - db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret { - regulator-compatible = "db8500_sva_mmdsp_ret"; - regulator-name = "db8500-sva-mmdsp-ret"; - }; - - // DB8500_REGULATOR_SWITCH_SVAPIPE - db8500_sva_pipe_reg: db8500_sva_pipe { - regulator-compatible = "db8500_sva_pipe"; - regulator-name = "db8500_sva_pipe"; - }; - - // DB8500_REGULATOR_SWITCH_SIAMMDSP - db8500_sia_mmdsp_reg: db8500_sia_mmdsp { - regulator-compatible = "db8500_sia_mmdsp"; - regulator-name = "db8500_sia_mmdsp"; - }; - - // DB8500_REGULATOR_SWITCH_SIAMMDSPRET - db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret { - regulator-name = "db8500-sia-mmdsp-ret"; - }; - - // DB8500_REGULATOR_SWITCH_SIAPIPE - db8500_sia_pipe_reg: db8500_sia_pipe { - regulator-compatible = "db8500_sia_pipe"; - regulator-name = "db8500-sia-pipe"; - }; - - // DB8500_REGULATOR_SWITCH_SGA - db8500_sga_reg: db8500_sga { - regulator-compatible = "db8500_sga"; - regulator-name = "db8500-sga"; - vin-supply = <&db8500_vape_reg>; - }; - - // DB8500_REGULATOR_SWITCH_B2R2_MCDE - db8500_b2r2_mcde_reg: db8500_b2r2_mcde { - regulator-compatible = "db8500_b2r2_mcde"; - regulator-name = "db8500-b2r2-mcde"; - vin-supply = <&db8500_vape_reg>; - }; - - // DB8500_REGULATOR_SWITCH_ESRAM12 - db8500_esram12_reg: db8500_esram12 { - regulator-compatible = "db8500_esram12"; - regulator-name = "db8500-esram12"; - }; - - // DB8500_REGULATOR_SWITCH_ESRAM12RET - db8500_esram12_ret_reg: db8500_esram12_ret { - regulator-compatible = "db8500_esram12_ret"; - regulator-name = "db8500-esram12-ret"; - }; - - // DB8500_REGULATOR_SWITCH_ESRAM34 - db8500_esram34_reg: db8500_esram34 { - regulator-compatible = "db8500_esram34"; - regulator-name = "db8500-esram34"; - }; - - // DB8500_REGULATOR_SWITCH_ESRAM34RET - db8500_esram34_ret_reg: db8500_esram34_ret { - regulator-compatible = "db8500_esram34_ret"; - regulator-name = "db8500-esram34-ret"; - }; - }; - - ab8500 at 5 { - compatible = "stericsson,ab8500"; - reg = <5>; /* mailbox 5 is i2c */ - interrupts = <0 40 0x4>; - interrupt-controller; - #interrupt-cells = <2>; - - ab8500-rtc { - compatible = "stericsson,ab8500-rtc"; - interrupts = <17 0x4 - 18 0x4>; - interrupt-names = "60S", "ALARM"; - }; - - ab8500-gpadc { - compatible = "stericsson,ab8500-gpadc"; - interrupts = <32 0x4 - 39 0x4>; - interrupt-names = "HW_CONV_END", "SW_CONV_END"; - vddadc-supply = <&ab8500_ldo_tvout_reg>; - }; - - ab8500-usb { - compatible = "stericsson,ab8500-usb"; - interrupts = < 90 0x4 - 96 0x4 - 14 0x4 - 15 0x4 - 79 0x4 - 74 0x4 - 75 0x4>; - interrupt-names = "ID_WAKEUP_R", - "ID_WAKEUP_F", - "VBUS_DET_F", - "VBUS_DET_R", - "USB_LINK_STATUS", - "USB_ADP_PROBE_PLUG", - "USB_ADP_PROBE_UNPLUG"; - vddulpivio18-supply = <&ab8500_ldo_initcore_reg>; - v-ape-supply = <&db8500_vape_reg>; - musb_1v8-supply = <&db8500_vsmps2_reg>; - }; - - ab8500-ponkey { - compatible = "stericsson,ab8500-ponkey"; - interrupts = <6 0x4 - 7 0x4>; - interrupt-names = "ONKEY_DBF", "ONKEY_DBR"; - }; - - ab8500-sysctrl { - compatible = "stericsson,ab8500-sysctrl"; - }; - - ab8500-pwm { - compatible = "stericsson,ab8500-pwm"; - }; - - ab8500-debugfs { - compatible = "stericsson,ab8500-debug"; - }; - - codec: ab8500-codec { - compatible = "stericsson,ab8500-codec"; - - stericsson,earpeice-cmv = <950>; /* Units in mV. */ - }; - - ab8500-regulators { - compatible = "stericsson,ab8500-regulator"; - - // supplies to the display/camera - ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { - regulator-compatible = "ab8500_ldo_aux1"; - regulator-name = "V-DISPLAY"; - regulator-min-microvolt = <2500000>; - regulator-max-microvolt = <2900000>; - regulator-boot-on; - /* BUG: If turned off MMC will be affected. */ - regulator-always-on; - }; - - // supplies to the on-board eMMC - ab8500_ldo_aux2_reg: ab8500_ldo_aux2 { - regulator-compatible = "ab8500_ldo_aux2"; - regulator-name = "V-eMMC1"; - regulator-min-microvolt = <1100000>; - regulator-max-microvolt = <3300000>; - }; - - // supply for VAUX3; SDcard slots - ab8500_ldo_aux3_reg: ab8500_ldo_aux3 { - regulator-compatible = "ab8500_ldo_aux3"; - regulator-name = "V-MMC-SD"; - regulator-min-microvolt = <1100000>; - regulator-max-microvolt = <3300000>; - }; - - // supply for v-intcore12; VINTCORE12 LDO - ab8500_ldo_initcore_reg: ab8500_ldo_initcore { - regulator-compatible = "ab8500_ldo_initcore"; - regulator-name = "V-INTCORE"; - }; - - // supply for tvout; gpadc; TVOUT LDO - ab8500_ldo_tvout_reg: ab8500_ldo_tvout { - regulator-compatible = "ab8500_ldo_tvout"; - regulator-name = "V-TVOUT"; - }; - - // supply for ab8500-usb; USB LDO - ab8500_ldo_usb_reg: ab8500_ldo_usb { - regulator-compatible = "ab8500_ldo_usb"; - regulator-name = "dummy"; - }; - - // supply for ab8500-vaudio; VAUDIO LDO - ab8500_ldo_audio_reg: ab8500_ldo_audio { - regulator-compatible = "ab8500_ldo_audio"; - regulator-name = "V-AUD"; - }; - - // supply for v-anamic1 VAMic1-LDO - ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 { - regulator-compatible = "ab8500_ldo_anamic1"; - regulator-name = "V-AMIC1"; - }; - - // supply for v-amic2; VAMIC2 LDO; reuse constants for AMIC1 - ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 { - regulator-compatible = "ab8500_ldo_amamic2"; - regulator-name = "V-AMIC2"; - }; - - // supply for v-dmic; VDMIC LDO - ab8500_ldo_dmic_reg: ab8500_ldo_dmic { - regulator-compatible = "ab8500_ldo_dmic"; - regulator-name = "V-DMIC"; - }; - - // supply for U8500 CSI/DSI; VANA LDO - ab8500_ldo_ana_reg: ab8500_ldo_ana { - regulator-compatible = "ab8500_ldo_ana"; - regulator-name = "V-CSI/DSI"; - }; - }; - }; - }; - - i2c at 80004000 { - compatible = "stericsson,db8500-i2c", "st,nomadik-i2c"; - reg = <0x80004000 0x1000>; - interrupts = <0 21 0x4>; - #address-cells = <1>; - #size-cells = <0>; - - clock-frequency = <400000>; - stericsson,slsu = <0xe>; - stericsson,tft = <1>; - stericsson,rft = <8>; - stericsson,timeout = <200>; - stericsson,i2c_freq_mode_fast; - }; - - i2c at 80122000 { - compatible = "stericsson,db8500-i2c", "st,nomadik-i2c"; - reg = <0x80122000 0x1000>; - interrupts = <0 22 0x4>; - #address-cells = <1>; - #size-cells = <0>; - - clock-frequency = <400000>; - stericsson,slsu = <0xe>; - stericsson,tft = <1>; - stericsson,rft = <8>; - stericsson,timeout = <200>; - stericsson,i2c_freq_mode_fast; - }; - - i2c at 80128000 { - compatible = "stericsson,db8500-i2c", "st,nomadik-i2c"; - reg = <0x80128000 0x1000>; - interrupts = <0 55 0x4>; - #address-cells = <1>; - #size-cells = <0>; - - clock-frequency = <400000>; - stericsson,slsu = <0xe>; - stericsson,tft = <1>; - stericsson,rft = <8>; - stericsson,timeout = <200>; - stericsson,i2c_freq_mode_fast; - }; - - i2c at 80110000 { - compatible = "stericsson,db8500-i2c", "st,nomadik-i2c"; - reg = <0x80110000 0x1000>; - interrupts = <0 12 0x4>; - #address-cells = <1>; - #size-cells = <0>; - - clock-frequency = <400000>; - stericsson,slsu = <0xe>; - stericsson,tft = <1>; - stericsson,rft = <8>; - stericsson,timeout = <200>; - stericsson,i2c_freq_mode_fast; - }; - - i2c at 8012a000 { - compatible = "stericsson,db8500-i2c", "st,nomadik-i2c"; - reg = <0x8012a000 0x1000>; - interrupts = <0 51 0x4>; - #address-cells = <1>; - #size-cells = <0>; - - clock-frequency = <400000>; - stericsson,slsu = <0xe>; - stericsson,tft = <1>; - stericsson,rft = <8>; - stericsson,timeout = <200>; - stericsson,i2c_freq_mode_fast; - }; - - ssp at 80002000 { - compatible = "arm,pl022", "arm,primecell"; - reg = <80002000 0x1000>; - interrupts = <0 14 0x4>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - - // Add one of these for each child device - cs-gpios = <&gpio0 31 0x4 &gpio4 14 0x4 &gpio4 16 0x4 - &gpio6 22 0x4 &gpio7 0 0x4>; - - }; - - uart at 80120000 { - compatible = "arm,pl011", "arm,primecell"; - reg = <0x80120000 0x1000>; - interrupts = <0 11 0x4>; - status = "disabled"; - }; - uart at 80121000 { - compatible = "arm,pl011", "arm,primecell"; - reg = <0x80121000 0x1000>; - interrupts = <0 19 0x4>; - status = "disabled"; - }; - uart at 80007000 { - compatible = "arm,pl011", "arm,primecell"; - reg = <0x80007000 0x1000>; - interrupts = <0 26 0x4>; - status = "disabled"; - }; - - sdi at 80126000 { - compatible = "arm,pl18x", "arm,primecell"; - reg = <0x80126000 0x1000>; - interrupts = <0 60 0x4>; - status = "disabled"; - }; - sdi at 80118000 { - compatible = "arm,pl18x", "arm,primecell"; - reg = <0x80118000 0x1000>; - interrupts = <0 50 0x4>; - status = "disabled"; - }; - sdi at 80005000 { - compatible = "arm,pl18x", "arm,primecell"; - reg = <0x80005000 0x1000>; - interrupts = <0 41 0x4>; - status = "disabled"; - }; - sdi at 80119000 { - compatible = "arm,pl18x", "arm,primecell"; - reg = <0x80119000 0x1000>; - interrupts = <0 59 0x4>; - status = "disabled"; - }; - sdi at 80114000 { - compatible = "arm,pl18x", "arm,primecell"; - reg = <0x80114000 0x1000>; - interrupts = <0 99 0x4>; - status = "disabled"; - }; - sdi at 80008000 { - compatible = "arm,pl18x", "arm,primecell"; - reg = <0x80114000 0x1000>; - interrupts = <0 100 0x4>; - status = "disabled"; - }; - - external-bus at 50000000 { - compatible = "simple-bus"; - reg = <0x50000000 0x4000000>; - #address-cells = <1>; - #size-cells = <1>; - ranges = <0 0x50000000 0x4000000>; - status = "disabled"; - }; - }; -};
arch/arm/boot/dts/dbx5x0.dtsi new file +633 -0
633 lines not on this page · raw message
arch/arm/boot/dts/snowball.dts +1 -1
@@ -10,7 +10,7 @@ */ /dts-v1/; -/include/ "db8500.dtsi" +/include/ "dbx5x0.dtsi" / { model = "Calao Systems Snowball platform with device tree";
Signature · 1 line
1.7.9.5
Re: [PATCH 19/22] ARM: ux500: Rename db8500.dtsi to dbx5x0.dtsi to encompass the u9500, u8540 and u9540
On Thu, Aug 9, 2012 at 5:47 PM, Lee Jones <[email protected]> wrote:
This patch has nothing to do with the other patches in this series.
Send it to the ARM SoC maintainers as a separate patch and use git format-patch -m, because git is good at detecting renames.
Atleast move it to the beginning of the patch series.
Yours,
Linus Walleij
PATCH 20/22 ARM: ux500: Add nodes for the MSP into Device Tree
In reply to Lee JonesThis patch inserts all known MSP devices into the DBx5x0 Device Tree disabled and enables the two important ones for the Snowball low-cost development board.
--- arch/arm/boot/dts/dbx5x0.dtsi | 33 +++++++++++++++++++++++++++++++++ arch/arm/boot/dts/snowball.dts | 8 ++++++++ 2 files changed, 41 insertions(+)
arch/arm/boot/dts/dbx5x0.dtsi +33 -0
@@ -621,6 +621,39 @@ status = "disabled"; }; + msp0: msp at 80123000 { + compatible = "stericsson,ux500-msp-i2s"; + reg = <0x80123000 0x1000>; + interrupts = <0 31 0x4>; + v-ape-supply = <&db8500_vape_reg>; + status = "disabled"; + }; + + msp1: msp at 80124000 { + compatible = "stericsson,ux500-msp-i2s"; + reg = <0x80124000 0x1000>; + interrupts = <0 62 0x4>; + v-ape-supply = <&db8500_vape_reg>; + status = "disabled"; + }; + + // HDMI sound + msp2: msp at 80117000 { + compatible = "stericsson,ux500-msp-i2s"; + reg = <0x80117000 0x1000>; + interrupts = <0 98 0x4>; + v-ape-supply = <&db8500_vape_reg>; + status = "disabled"; + }; + + msp3: msp at 80125000 { + compatible = "stericsson,ux500-msp-i2s"; + reg = <0x80125000 0x1000>; + interrupts = <0 62 0x4>; + v-ape-supply = <&db8500_vape_reg>; + status = "disabled"; + }; + external-bus at 50000000 { compatible = "simple-bus"; reg = <0x50000000 0x4000000>;
arch/arm/boot/dts/snowball.dts +8 -0
@@ -83,6 +83,14 @@ }; soc-u9500 { + msp1: msp at 80124000 { + status = "okay"; + }; + + msp3: msp at 80125000 { + status = "okay"; + }; + external-bus at 50000000 { status = "okay";
Signature · 1 line
1.7.9.5
Re: [PATCH 20/22] ARM: ux500: Add nodes for the MSP into Device Tree
Quoted 5 lines · Lee Jones
This patch inserts all known MSP devices into the DBx5x0 Device Tree disabled and enables the two important ones for the Snowball low-cost development board.
Signed-off-by Lee Jones <[email protected]>
Yours,
Linus Walleij
PATCH 21/22 ARM: ux500: Add all encompassing sound node to the Snowball Device Tree
In reply to Lee JonesThis is where we link together all of the SoC sound components for a given platform. This all encompassing sound node is only found in the very lowest hierarchical DTS file, since the component mix may well change from board variant to board variant.
--- arch/arm/boot/dts/snowball.dts | 8 ++++++++ 1 file changed, 8 insertions(+)
arch/arm/boot/dts/snowball.dts +8 -0
@@ -83,6 +83,14 @@ }; soc-u9500 { + + sound { + compatible = "stericsson,snd-soc-mop500"; + + stericsson,cpu-dai = <&msp1 &msp3>; + stericsson,audio-codec = <&codec>; + }; + msp1: msp at 80124000 { status = "okay"; };
Signature · 1 line
1.7.9.5
Re: [PATCH 21/22] ARM: ux500: Add all encompassing sound node to the Snowball Device Tree
Quoted 6 lines · Lee Jones
This is where we link together all of the SoC sound components for a given platform. This all encompassing sound node is only found in the very lowest hierarchical DTS file, since the component mix may well change from board variant to board variant.
Signed-off-by Lee Jones <[email protected]>
Yours,
Linus Walleij
PATCH 22/22 Documentation: Add the AB8500 CODEC device to the MFD AB8500 doc
In reply to Lee JonesHere we document the AB8500 Audio CODEC in the existing MFD AB8500 document.
--- Documentation/devicetree/bindings/mfd/ab8500.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
Documentation/devicetree/bindings/mfd/ab8500.txt +15 -0
@@ -23,6 +23,7 @@ Device IRQ Names Supply Names Description ab8500-bm : : : Battery Manager ab8500-btemp : : : Battery Temperature ab8500-charger : : : Battery Charger +ab8500-codec : : : Audio Codec ab8500-fg : : : Fuel Gauge ab8500-gpadc : HW_CONV_END : vddadc : Analogue to Digital Converter SW_CONV_END : :
@@ -52,6 +53,14 @@ Optional child device properties: supplied in the interrupts property - <supply_name>-supply : contains a phandle to the regulator supply node in Device Tree +Non-standard child device properties: + - Audio CODEC: + - stericsson,amic[1|2]-type-single-ended : Single-ended Analoge Mic (default: differential) + - stericsson,amic1a-bias-vamic2 : Analoge Mic wishes to use a non-standard Vamic + - stericsson,amic1b-bias-vamic2 : Analoge Mic wishes to use a non-standard Vamic + - stericsson,amic2-bias-vamic1 : Analoge Mic wishes to use a non-standard Vamic + - stericsson,earpeice-cmv : Earpeice voltage (only: 950 | 1100 | 1270 | 1580) + ab8500@5 { compatible = "stericsson,ab8500"; reg = <5>; /* mailbox 5 is i2c */
@@ -110,6 +119,12 @@ ab8500@5 { compatible = "stericsson,ab8500-pwm"; }; + codec: ab8500-codec { + compatible = "stericsson,ab8500-codec"; + + stericsson,earpeice-cmv = <950>; /* Units in mV. */ + }; + ab8500-regulators { compatible = "stericsson,ab8500-regulator";
Signature · 1 line
1.7.9.5
Re: [PATCH 22/22] Documentation: Add the AB8500 CODEC device to the MFD AB8500 doc
Quoted 4 lines · Lee Jones
Here we document the AB8500 Audio CODEC in the existing MFD AB8500 document.
Signed-off-by Lee Jones <[email protected]>
Yours,
Linus Walleij
Quoted 3 lines · Lee Jones
Another fine instalment of Audio fixes and Device Tree enablement surrounding the mop500 sound driver. Hopefully containing all of the recommendations suggested by Mark Brown.
Can we have some review of this from the ARM side please? It's pretty big...
Quoted 7 lines · Mark Brown
Quoted 3 lines · Lee Jones
Another fine instalment of Audio fixes and Device Tree enablement surrounding the mop500 sound driver. Hopefully containing all of the recommendations suggested by Mark Brown.
Can we have some review of this from the ARM side please? It's pretty big...
I don't expect Linus will do anything until he returns back from vacation.
I'll speak to Arnd tomorrow and offer him some kind of liquid refreshment. :)
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Quoted 10 lines · Lee Jones
Quoted 7 lines · Mark Brown
Quoted 3 lines · Lee Jones
Another fine instalment of Audio fixes and Device Tree enablement surrounding the mop500 sound driver. Hopefully containing all of the recommendations suggested by Mark Brown.
Can we have some review of this from the ARM side please? It's pretty big...
I don't expect Linus will do anything until he returns back from vacation.
I'm back from vacation, and catching up. Now there is a few different DT patch bombs from you in my inbox, which patchset shall I review first? This one? Or is there a more urgent one?
Yours,
Linus Walleij
Quoted 7 lines · Linus Walleij
Quoted 6 lines · Lee Jones
Quoted 5 lines · Mark Brown
Quoted 3 lines · Lee Jones
Another fine instalment of Audio fixes and Device Tree enablement surrounding the mop500 sound driver. Hopefully containing all of the recommendations suggested by Mark Brown.
Quoted 8 lines
Quoted 4 lines
Quoted 2 lines
Can we have some review of this from the ARM side please? It's pretty big...
I don't expect Linus will do anything until he returns back from vacation.
I'm back from vacation, and catching up. Now there is a few different DT patch bombs from you in my inbox, which patchset shall I review first? This one? Or is there a more urgent one?
You can ignore all the ones from before yesterday.
None are more important than the other, as I'm on vacation all next week.
Take your time and I'll see to the carnage when I return. :)
Signature · 4 lines
Lee Jones Linaro ST-Ericsson Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Quoted 7 lines · Mark Brown
Quoted 3 lines · Lee Jones
Another fine instalment of Audio fixes and Device Tree enablement surrounding the mop500 sound driver. Hopefully containing all of the recommendations suggested by Mark Brown.
Can we have some review of this from the ARM side please? It's pretty big...
I looked over it, merged two patches to ux500 fixes and ACKed these I understand. For the patches mainly dealing with ALSA SoC I get confused so would prefer to have Ola Lilja comment on those once he's available.
Yours,
Linus Walleij