All of lore.kernel.org
 help / color / mirror / Atom feed
From: Georgi Djakov <georgi.djakov@linaro.org>
To: bjorn@kryo.se, Kumar Gala <galak@codeaurora.org>,
	Andy Gross <agross@codeaurora.org>,
	David Brown <davidb@codeaurora.org>
Cc: linux-kernel@vger.kernel.org, linux-soc@vger.kernel.org,
	Jeffrey Hugo <jhugo@codeaurora.org>,
	linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH v2 04/11] soc: qcom: Add Shared Memory Driver
Date: Tue, 07 Jul 2015 16:45:45 +0300	[thread overview]
Message-ID: <559BD809.3060003@linaro.org> (raw)
In-Reply-To: <1435355419-23602-5-git-send-email-bjorn.andersson@sonymobile.com>

Hi Bjorn,
Thank you for this patchset! Some nits and a question below.

On 06/27/2015 12:50 AM, bjorn@kryo.se wrote:
> From: Bjorn Andersson <bjorn.andersson@sonymobile.com>
> 
> This adds the Qualcomm Shared Memory Driver (SMD) providing
> communication channels to remote processors, ontop of SMEM.
> 
> Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
> ---
>  drivers/soc/qcom/Kconfig     |    8 +
>  drivers/soc/qcom/Makefile    |    1 +
>  drivers/soc/qcom/smd.c       | 1324 ++++++++++++++++++++++++++++++++++++++++++
>  include/linux/soc/qcom/smd.h |   46 ++
>  4 files changed, 1379 insertions(+)
>  create mode 100644 drivers/soc/qcom/smd.c
>  create mode 100644 include/linux/soc/qcom/smd.h
> 
[...]
> --- /dev/null
> +++ b/drivers/soc/qcom/smd.c
> @@ -0,0 +1,1324 @@
> +/*
> + * Copyright (c) 2015, Sony Mobile Communications AB.
> + * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +
> +#include <linux/delay.h>

unused?

[...]
> +
> +#define GET_RX_CHANNEL_INFO(channel, param) \
> +	(channel->rx_info_word ? \
> +		channel->rx_info_word->param : \
> +		channel->rx_info->param)
> +
> +#define SET_RX_CHANNEL_INFO(channel, param, value) \
> +	(channel->rx_info_word ? \
> +		(channel->rx_info_word->param = value) : \
> +		(channel->rx_info->param = value))
> +
> +#define GET_TX_CHANNEL_INFO(channel, param) \
> +	(channel->rx_info_word ? \

Maybe this should be tx_info_word?

> +		channel->tx_info_word->param : \
> +		channel->tx_info->param)
> +
> +#define SET_TX_CHANNEL_INFO(channel, param, value) \
> +	(channel->rx_info_word ? \

ditto?

> +		(channel->tx_info_word->param = value) : \
> +		(channel->tx_info->param = value))
> +
[...]
> +	ret = qcom_smem_get(edge->edge_id, smem_fifo_item, &fifo_base, &fifo_size);
> +	if (ret)
> +		goto free_name_and_channel;
> +
> +	/* The channel consist of a rx and tx fifo of equal size */
> +	fifo_size /= 2;
> +
> +	dev_dbg(smd->dev, "new channel '%s' info-size: %d fifo-size: %zu\n",

%zu for info-size?

> +			  name, info_size, fifo_size);
> +

[...]
> +static int __init qcom_smd_init(void)
> +{
> +	int ret;
> +
> +	ret = bus_register(&qcom_smd_bus);
> +	if (ret) {
> +		pr_err("failed to register smd bus: %d\n", ret);
> +		return ret;
> +	}
> +
> +	return platform_driver_register(&qcom_smd_driver);
> +}
> +arch_initcall(qcom_smd_init);
> +
> +static void __exit qcom_smd_exit(void)
> +{
> +	platform_driver_unregister(&qcom_smd_driver);
> +	bus_unregister(&qcom_smd_bus);
> +}
> +module_exit(qcom_smd_exit);
> +
[...]
> +/**
> + * struct qcom_smd_driver - smd driver struct
> + * @driver:	underlying device driver
> + * @probe:	invoked when the smd channel is found
> + * @remove:	invoked when the smd channel is closed
> + * @callback:	invoked when an inbound message is received on the channel,
> + *		should return 0 on success or -EBUSY if the data cannot be
> + *		consumed at this time
> + */
> +struct qcom_smd_driver {
> +	struct device_driver driver;
> +	int (*probe)(struct qcom_smd_device *dev);
> +	void (*remove)(struct qcom_smd_device *dev);
> +	int (*callback)(struct qcom_smd_device *, const void *, size_t);
> +};
> +
> +int qcom_smd_driver_register(struct qcom_smd_driver *drv);
> +void qcom_smd_driver_unregister(struct qcom_smd_driver *drv);
> +
> +#define module_qcom_smd_driver(__smd_driver) \
> +	module_driver(__smd_driver, qcom_smd_driver_register, \
> +		      qcom_smd_driver_unregister)
> +

This comment is mostly related to your RPM over SMD driver patch, as
i have a RPM clock driver based on it. The RPM clock driver registers
some fundamental stuff like XO and i had to hack smd-rpm to probe
earlier, so that most other drivers can initialize. So i was wondering,
what if we register the drivers on the bus earlier? What do you think?

Thanks,
Georgi

  reply	other threads:[~2015-07-07 13:45 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-26 21:50 [PATCH v2 00/11] Qualcomm Shared Memory & RPM drivers bjorn
2015-06-26 21:50 ` bjorn at kryo.se
     [not found] ` <1435355419-23602-1-git-send-email-bjorn.andersson-/MT0OVThwyLZJqsBc5GL+g@public.gmane.org>
2015-06-26 21:50   ` [PATCH v2 01/11] soc: qcom: Add device tree binding for SMEM bjorn-UYDU3/A3LUY
2015-06-26 21:50     ` bjorn
2015-07-08 23:56     ` Stephen Boyd
2015-07-09  3:50       ` Andy Gross
     [not found]       ` <559DB8B2.2090202-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2015-07-13 22:30         ` Bjorn Andersson
2015-07-13 22:30           ` Bjorn Andersson
2015-07-23 20:49     ` Andy Gross
2015-06-26 21:50 ` [PATCH v2 02/11] soc: qcom: Add Shared Memory Manager driver bjorn
2015-07-17 21:15   ` Andy Gross
2015-07-23 20:47   ` Andy Gross
2015-06-26 21:50 ` [PATCH v2 03/11] soc: qcom: Add device tree binding for Shared Memory Device bjorn
2015-06-26 21:50 ` [PATCH v2 04/11] soc: qcom: Add Shared Memory Driver bjorn
2015-07-07 13:45   ` Georgi Djakov [this message]
2015-07-13 22:27     ` Bjorn Andersson
2015-07-13 22:27       ` Bjorn Andersson
2015-07-21 11:46       ` Georgi Djakov
2015-06-26 21:50 ` [PATCH v2 05/11] mfd: devicetree: bindings: Add Qualcomm SMD based RPM DT binding bjorn
2015-07-07 12:16   ` Lee Jones
2015-07-13 21:48     ` Bjorn Andersson
2015-07-13 21:48       ` Bjorn Andersson
2015-07-23 13:31       ` Lee Jones
2015-07-23 16:41         ` Bjorn Andersson
2015-07-23 16:41           ` Bjorn Andersson
     [not found]           ` <20150723164128.GD4753-P9SbAA3LsXe39TS3lRcy0mP6iJigPa5YXqFh9Ls21Oc@public.gmane.org>
2015-07-23 17:16             ` Mark Brown
2015-07-23 17:16               ` Mark Brown
2015-07-24  9:58               ` Lee Jones
2015-07-24 10:24                 ` Mark Brown
2015-07-24 10:24                   ` Mark Brown
     [not found]                   ` <20150724102434.GF11162-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-07-24 17:23                     ` Mark Brown
2015-07-24 17:23                       ` Mark Brown
2015-07-27  7:29                       ` Lee Jones
2015-07-27  7:29                         ` Lee Jones
2015-07-27  9:53                         ` Mark Brown
2015-07-27 10:58                           ` Lee Jones
2015-06-26 21:50 ` [PATCH v2 06/11] mfd: qcom-smd-rpm: Driver for the Qualcomm RPM over SMD bjorn
2015-07-07 12:37   ` Lee Jones
2015-07-13 21:58     ` Bjorn Andersson
2015-07-13 21:58       ` Bjorn Andersson
2015-07-23 13:22       ` Lee Jones
2015-07-23 16:55         ` Bjorn Andersson
2015-07-24 10:06           ` Lee Jones
2015-06-26 21:50 ` [PATCH v2 07/11] regulator: qcom: smd: Regulator driver for the Qualcomm RPM bjorn
2015-06-26 21:50 ` [PATCH v2 08/11] ARM: dts: msm8974: Add tcsr mutex node bjorn
2015-06-26 21:50   ` bjorn
2015-06-26 21:50   ` bjorn at kryo.se
     [not found]   ` <1435355419-23602-9-git-send-email-bjorn.andersson-/MT0OVThwyLZJqsBc5GL+g@public.gmane.org>
2015-07-23 20:42     ` Andy Gross
2015-07-23 20:42       ` Andy Gross
2015-07-23 20:42       ` Andy Gross
2015-06-26 21:50 ` [PATCH v2 09/11] ARM: dts: msm8974: Add smem reservation and node bjorn
2015-06-26 21:50   ` bjorn
2015-06-26 21:50   ` bjorn at kryo.se
2015-07-23 20:51   ` Andy Gross
2015-07-23 20:51     ` Andy Gross
2015-06-26 21:50 ` [PATCH v2 10/11] ARM: dts: msm8974: Add smd, rpm and regulator nodes bjorn
2015-06-26 21:50   ` bjorn
2015-06-26 21:50   ` bjorn at kryo.se
2015-06-26 21:50 ` [PATCH v2 11/11] ARM: dts: xperia-honami: Add regulator nodes for Honami bjorn
2015-06-26 21:50   ` bjorn at kryo.se

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=559BD809.3060003@linaro.org \
    --to=georgi.djakov@linaro.org \
    --cc=agross@codeaurora.org \
    --cc=bjorn@kryo.se \
    --cc=davidb@codeaurora.org \
    --cc=galak@codeaurora.org \
    --cc=jhugo@codeaurora.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-soc@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.