Re: [PATCH v2 0/9] unshare and simplify omap_hsmmc platform struct
On 3 October 2014 15:00, Ulf Hansson ulf.hans...@linaro.org wrote: On 29 September 2014 11:32, Andreas Fenkart afenk...@gmail.com wrote: v2: - replace erroneous mmci by omap1/2 - add description to all patches - full compile check with: CONFIG_MACH_OMAP3_BEAGLE=y CONFIG_MACH_DEVKIT8000=y CONFIG_MACH_OMAP_LDP=y CONFIG_MACH_OMAP3530_LV_SOM=y CONFIG_MACH_OMAP3_TORPEDO=y CONFIG_MACH_OVERO=y CONFIG_MACH_OMAP3517EVM=y CONFIG_MACH_CRANEBOARD=y CONFIG_MACH_OMAP3_PANDORA=y CONFIG_MACH_TOUCHBOOK=y CONFIG_MACH_OMAP_3430SDP=y CONFIG_MACH_NOKIA_RX51=y CONFIG_MACH_CM_T35=y CONFIG_MACH_CM_T3517=y CONFIG_MACH_CM_T3730=y CONFIG_MACH_SBC3530=y - reorganized and added more patches, hence no blank ack added Andreas Fenkart (9): omap_hsmmc: use separate platform data for ompa3 and omap 1/2 driver omap_hsmmc: remove unused fields in platform_data omap_hsmmc: remove un-initialized callbacks from platform data omap_hsmmc: remove un-ready power_saving field in omap2_hsmmc_info omap_hsmmc: remove unused get_context_loss_count callback omap_hsmmc: remove unnecessary omap_hsmmc_slot_data indirection omap_hsmmc: pass mmc_priv struct to gpio init / free omap_hsmmc: Remove unnecessary callbacks from platform data omap_hsmmc: remove unused slot_id parameter arch/arm/mach-omap2/board-rx51-peripherals.c | 4 +- arch/arm/mach-omap2/hsmmc.c| 155 +-- arch/arm/mach-omap2/hsmmc.h| 9 +- arch/arm/mach-omap2/mmc.h | 6 +- .../mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c | 6 +- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 6 +- drivers/mmc/host/omap_hsmmc.c | 282 ++--- include/linux/platform_data/hsmmc-omap.h | 88 +++ 8 files changed, 299 insertions(+), 257 deletions(-) create mode 100644 include/linux/platform_data/hsmmc-omap.h -- 2.1.0 Thanks! Applied for next! As you know, these had some issues for omap2. I have dropped them from next branch, they will have to be considered for 3.19 instead. Kind regards Uffe -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCHv4 4/7] hwspinlock/core: add common OF helpers
On Fri, Sep 26, 2014 at 7:25 PM, Suman Anna s-a...@ti.com wrote: I am yet to receive any comments on v6, but that series should address both your need for a probe deferral and Ohad's request to not change any return types. Please give it a try and let me know if you have any comments. Guys, Just to let you know we have several holidays around here these days, and I intend to review all pending patches immediately soon after. Thanks, Ohad. -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: CPSW bug with AM437x SK
On Friday 03 October 2014 06:34 AM, Felipe Balbi wrote: [ 261.177168] [c0648d48] (skb_panic) from [c0565edc] (skb_put+0x5c/0x60) [ 261.184415] [c0565edc] (skb_put) from [c0605aac] (unix_stream_sendmsg+0x164/0x390) [ 261.192712] [c0605aac] (unix_stream_sendmsg) from [c055b364] (sock_aio_write+0xdc/0xfc) [ 261.201475] [c055b364] (sock_aio_write) from [c014c42c] (do_sync_write+0x8c/0xb4) [ 261.209697] [c014c42c] (do_sync_write) from [c014cf70] (vfs_write+0x118/0x1c0) [ 261.217652] [c014cf70] (vfs_write) from [c014d564] (SyS_write+0x4c/0xa0) [ 261.225054] [c014d564] (SyS_write) from [c000ed40] (ret_fast_syscall+0x0/0x48) [ 261.232988] Code: e58d4008 e58de00c e59f0008 ebfff48e (e7f001f2) [ 261.239378] ---[ end trace d64258d586f40104 ]--- The BT shows that the warn came from a unix socket interface, so this cannot be a CPSW bug, its a bug in unix socket. Are you not seeing this issue with file system in any other media? I will try to reproduce this locally with my AM437x EVMsk. Regards Mugunthan V N -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: CPSW bug with AM437x SK
Hi, On Mon, Oct 06, 2014 at 03:24:59PM +0530, Mugunthan V N wrote: On Friday 03 October 2014 06:34 AM, Felipe Balbi wrote: [ 261.177168] [c0648d48] (skb_panic) from [c0565edc] (skb_put+0x5c/0x60) [ 261.184415] [c0565edc] (skb_put) from [c0605aac] (unix_stream_sendmsg+0x164/0x390) [ 261.192712] [c0605aac] (unix_stream_sendmsg) from [c055b364] (sock_aio_write+0xdc/0xfc) [ 261.201475] [c055b364] (sock_aio_write) from [c014c42c] (do_sync_write+0x8c/0xb4) [ 261.209697] [c014c42c] (do_sync_write) from [c014cf70] (vfs_write+0x118/0x1c0) [ 261.217652] [c014cf70] (vfs_write) from [c014d564] (SyS_write+0x4c/0xa0) [ 261.225054] [c014d564] (SyS_write) from [c000ed40] (ret_fast_syscall+0x0/0x48) [ 261.232988] Code: e58d4008 e58de00c e59f0008 ebfff48e (e7f001f2) [ 261.239378] ---[ end trace d64258d586f40104 ]--- The BT shows that the warn came from a unix socket interface, so this cannot be a CPSW bug, its a bug in unix socket. Are you not seeing this issue with file system in any other media? Have not tried with other media, but since it comes from vfs_write() and my rootfs sits in NFS I figured that might be the cause. Could not reproduce this with BeagleBone Black, btw. I will try to reproduce this locally with my AM437x EVMsk. alright. -- balbi signature.asc Description: Digital signature
[PATCH] ARM: OMAP2: Remove unnecessary KERN_* in omap_phy_internal.c
This patch remove unnecessary KERN_INFO and KERN_ERR from omap_phy_internal.c. Signed-off-by: Masanari Iida standby2...@gmail.com --- arch/arm/mach-omap2/omap_phy_internal.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c index 50640b3..f4d942a 100644 --- a/arch/arm/mach-omap2/omap_phy_internal.c +++ b/arch/arm/mach-omap2/omap_phy_internal.c @@ -97,13 +97,13 @@ void am35x_musb_phy_power(u8 on) omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2); - pr_info(KERN_INFO Waiting for PHY clock good...\n); + pr_info(Waiting for PHY clock good...\n); while (!(omap_ctrl_readl(AM35XX_CONTROL_DEVCONF2) CONF2_PHYCLKGD)) { cpu_relax(); if (time_after(jiffies, timeout)) { - pr_err(KERN_ERR musb PHY clock good timed out\n); + pr_err(musb PHY clock good timed out\n); break; } } @@ -145,7 +145,7 @@ void am35x_set_mode(u8 musb_mode) devconf2 |= CONF2_NO_OVERRIDE; break; default: - pr_info(KERN_INFO Unsupported mode %u\n, musb_mode); + pr_info(Unsupported mode %u\n, musb_mode); } omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2); -- 2.1.1.273.g97b8860 -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] ARM: OMAP2: Remove unnecessary KERN_* in omap_phy_internal.c
On 01:16-20141007, Masanari Iida wrote: This patch remove unnecessary KERN_INFO and KERN_ERR from omap_phy_internal.c. Signed-off-by: Masanari Iida standby2...@gmail.com --- arch/arm/mach-omap2/omap_phy_internal.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c index 50640b3..f4d942a 100644 --- a/arch/arm/mach-omap2/omap_phy_internal.c +++ b/arch/arm/mach-omap2/omap_phy_internal.c With the cleanups, maybe add a #define pr_fmt(fmt) %s: fmt, __func__ at the start to make the log info a little more relevant? @@ -97,13 +97,13 @@ void am35x_musb_phy_power(u8 on) omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2); - pr_info(KERN_INFO Waiting for PHY clock good...\n); + pr_info(Waiting for PHY clock good...\n); while (!(omap_ctrl_readl(AM35XX_CONTROL_DEVCONF2) CONF2_PHYCLKGD)) { cpu_relax(); if (time_after(jiffies, timeout)) { - pr_err(KERN_ERR musb PHY clock good timed out\n); + pr_err(musb PHY clock good timed out\n); break; } } @@ -145,7 +145,7 @@ void am35x_set_mode(u8 musb_mode) devconf2 |= CONF2_NO_OVERRIDE; break; default: - pr_info(KERN_INFO Unsupported mode %u\n, musb_mode); + pr_info(Unsupported mode %u\n, musb_mode); } omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2); -- 2.1.1.273.g97b8860 -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- Regards, Nishanth Menon -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] clk: Make clk API return per-user struct clk instances
On 4 October 2014 01:15, Stephen Boyd sb...@codeaurora.org wrote: On 10/02, Tomeu Vizoso wrote: Moves clock state to struct clk_core, but takes care to change as little API as possible. struct clk_hw still has a pointer to a struct clk, which is the implementation's per-user clk instance, for backwards compatibility. The struct clk that clk_get_parent() returns isn't owned by the caller, but by the clock implementation, so the former shouldn't call clk_put() on it. Because some boards in mach-omap2 still register clocks statically, their clock registration had to be updated to take into account that the clock information is stored in struct clk_core now. Signed-off-by: Tomeu Vizoso tomeu.viz...@collabora.com --- We should s/provider/core/ when we're dealing with clk_core structures in the function signature. The providers are hardware drivers and the core structures are for the framework, not the same. Furthermore, the provider drivers should only be dealing with clk_hw structures. The only place that clk_core should be in clk-provider.h is in struct clk_hw because there's no way to get around it. This way, provider drivers should only be including clk-provider.h because they only care about dealing with struct clk_hw. Consumers should only be including linux/clk.h where they only know about struct clk as an opaque pointer. Once we get OMAP to stop using clk-private.h we can kill off that header entirely (I see there are some other bogus users of that header outside of OMAP that we should nuke). Then the framework can include clk-provider.h and clk.h to map between the hw cookie and the consumer cookie. Agreed. This is the end goal. I understand that the provider API is sort of a mess with us allowing drivers to use the underscore and non-underscore functions and the mixture of struct clk and struct ckl_hw throughout. struct clk_hw -- struct clk_core struct clk \- struct clk |- struct clk Agree this is how it should look like at some point, but for now I need a reference to struct clk from struct clk_hw, so providers can keep using the existing API. This reference would be removed once they move to the new clk_hw-based API. providers - struct clk_hw { struct clk_core * ... }; consumers - struct clk; hidden in core framework struct clk { struct clk_core *; ... } struct clk_core { struct clk_hw *; ... } diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 4eeb8de..b216b13 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -37,6 +37,13 @@ static HLIST_HEAD(clk_root_list); static HLIST_HEAD(clk_orphan_list); static LIST_HEAD(clk_notifier_list); +static void clk_provider_put(struct clk_core *clk); Does this need to be forward declared? No, removed. +static long clk_provider_get_accuracy(struct clk_core *clk); +static bool clk_provider_is_prepared(struct clk_core *clk); +static bool clk_provider_is_enabled(struct clk_core *clk); +static long clk_provider_round_rate(struct clk_core *clk, unsigned long rate); @@ -356,7 +363,7 @@ out: * * Caller must hold prepare_lock. */ -static void clk_debug_unregister(struct clk *clk) +static void clk_debug_unregister(struct clk_core *clk) { debugfs_remove_recursive(clk-dentry); } @@ -366,8 +373,8 @@ struct dentry *clk_debugfs_add_file(struct clk *clk, char *name, umode_t mode, We should pass struct clk_hw here instead of struct clk. Let's do it soon before we get any users. Sounds good to me. { struct dentry *d = NULL; - if (clk-dentry) - d = debugfs_create_file(name, mode, clk-dentry, data, fops); + if (clk-core-dentry) + d = debugfs_create_file(name, mode, clk-core-dentry, data, fops); return d; } @@ -545,53 +553,67 @@ late_initcall_sync(clk_disable_unused); const char *__clk_get_name(struct clk *clk) { - return !clk ? NULL : clk-name; + return !clk ? NULL : clk-core-name; } EXPORT_SYMBOL_GPL(__clk_get_name); struct clk_hw *__clk_get_hw(struct clk *clk) { - return !clk ? NULL : clk-hw; + return !clk ? NULL : clk-core-hw; } EXPORT_SYMBOL_GPL(__clk_get_hw); u8 __clk_get_num_parents(struct clk *clk) { - return !clk ? 0 : clk-num_parents; + return !clk ? 0 : clk-core-num_parents; } EXPORT_SYMBOL_GPL(__clk_get_num_parents); struct clk *__clk_get_parent(struct clk *clk) { - return !clk ? NULL : clk-parent; + /* TODO: Create a per-user clk and change callers to call clk_put */ More like replace all callers with a function that returns their parent's hw pointer. Sounds good, but I thought about it and have chosen to just remove the comment. struct clk_hw *clk_provider_get_parent(struct clk_hw *hw) + return
Re: [PATCH 1/2] clk: Make clk API return per-user struct clk instances
On 10/06/2014 10:14 AM, Tomeu Vizoso wrote: This is the end goal. I understand that the provider API is sort of a mess with us allowing drivers to use the underscore and non-underscore functions and the mixture of struct clk and struct ckl_hw throughout. struct clk_hw -- struct clk_core struct clk \- struct clk |- struct clk Agree this is how it should look like at some point, but for now I need a reference to struct clk from struct clk_hw, so providers can keep using the existing API. This reference would be removed once they move to the new clk_hw-based API. Ok sounds like we're on the same page. +struct clk *__clk_create_clk(struct clk_core *clk_core, const char *dev_id, + const char *con_id); +#endif diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c index da4bda8..fe3712f 100644 --- a/drivers/clk/clkdev.c +++ b/drivers/clk/clkdev.c @@ -168,14 +172,27 @@ static struct clk_lookup *clk_find(const char *dev_id, const char *con_id) struct clk *clk_get_sys(const char *dev_id, const char *con_id) { struct clk_lookup *cl; + struct clk *clk = NULL; mutex_lock(clocks_mutex); cl = clk_find(dev_id, con_id); - if (cl !__clk_get(cl-clk)) - cl = NULL; + if (cl) { +#if defined(CONFIG_COMMON_CLK) + clk = __clk_create_clk(cl-clk-core, dev_id, con_id); + if (clk !__clk_get(clk)) { + kfree(clk); This looks weird. It makes me suspect we've failed to reference count something properly. Can we avoid this? Can you extend on this? But I see how the behaviour doesn't match the previous one because cl should be NULLed when __clk_get fails. I have fixed this. It triggers my that's not symmetric filter because it requires the caller to free something allocated by the callee. Do we still need __clk_get() to be called in the common clock path? Why not just do the stuff we do in __clk_get() in __clk_create_clk()? Then if that fails we can return an error pointer indicating some sort of failure (-ENOENT?) and we don't need to do any sort of cleanup otherwise. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html