From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Vadim Pasternak <vadimp@mellanox.com>,
dvhart@infradead.org, fengguang.wu@intel.com
Cc: davem@davemloft.net, geert@linux-m68k.org,
akpm@linux-foundation.org, kvalo@codeaurora.org,
gregkh@linuxfoundation.org, mchehab@kernel.org,
linux@roeck-us.net, linux-kernel@vger.kernel.org,
platform-driver-x86@vger.kernel.org, jiri@resnulli.us
Subject: Re: [patch v2 2/2] drivers/platform/x86: add mlxcpld-hotplug driver registration to mlx-platform driver
Date: Thu, 27 Oct 2016 21:24:57 +0300 [thread overview]
Message-ID: <1477592697.5295.48.camel@linux.intel.com> (raw)
In-Reply-To: <1477598154-4459-1-git-send-email-vadimp@mellanox.com>
Same comment regarding series (Use --thread to git send-email)
On Thu, 2016-10-27 at 19:55 +0000, Vadim Pasternak wrote:
> Add calls for mlxcpld-hotplug platform driver
> registration/unregistration
> and add platform hotplug data configurations. This driver, when
> registered
> within system will handle system hot-plug events for the power
> suppliers,
> power cables and fans (insertion and removing). These events are
> controlled through CPLD Lattice device.
>
> Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
> v1->v2:
> Comments pointed out by Andy:
> - Remove "from sender" from the message body;
> - Add more information to commit message. (When CPLD spec will be
> available at Mellanox portal - MAINTAINERS Web-page info is to
> be updated);
> - Do not change include order.
Same comment. Put it below '---' line.
> ---
>
> @@ -121,7 +123,87 @@ static struct i2c_mux_reg_platform_data
> mlxplat_mux_data[] = {
>
> };
>
> -static struct platform_device *mlxplat_dev;
Why did you move it? Seems like it's not needed in this patch.
> +/* Platform hotplug devices */
> +static struct mlxcpld_hotplug_device mlxplat_mlxcpld_hotplug_psu[] =
I_really_like_long_names_of_variables. No, I don't.
> +static struct mlxcpld_hotplug_device mlxplat_mlxcpld_hotplug_pwr[] =
> +static struct mlxcpld_hotplug_device mlxplat_mlxcpld_hotplug_fan[] =
> +static
> +struct mlxcpld_hotplug_platform_data
> mlxplat_mlxcpld_hotplug_default_data = {
> + .top_aggr_offset = (MLXPLAT_CPLD_LPC_REG_BASE_ADRR | 0x3a),
| ?! Can you elaborate why it's ORred and not just added?
Besides that redundant parens.
> + .top_aggr_mask = 0x48,
> + .top_aggr_psu_mask = 0x08,
And above explanation might shed a light why you are using interesting
masks like 0b101.
> + .psu_reg_offset = (MLXPLAT_CPLD_LPC_REG_BASE_ADRR | 0x58),
> + .psu_mask = 0x03,
GENMASK()?
> + .psu_count = ARRAY_SIZE(mlxplat_mlxcpld_hotplug_psu),
> + .psu = mlxplat_mlxcpld_hotplug_psu,
> + .top_aggr_pwr_mask = 0x08,
> + .pwr_reg_offset = (MLXPLAT_CPLD_LPC_REG_BASE_ADRR | 0x64),
> + .pwr_mask = 0x03,
> + .pwr_count = ARRAY_SIZE(mlxplat_mlxcpld_hotplug_pwr),
> + .pwr = mlxplat_mlxcpld_hotplug_pwr,
> + .top_aggr_fan_mask = 0x40,
> + .fan_reg_offset = (MLXPLAT_CPLD_LPC_REG_BASE_ADRR | 0x88),
> + .fan_mask = 0x0f,
> + .fan_count = ARRAY_SIZE(mlxplat_mlxcpld_hotplug_fan),
> + .fan = mlxplat_mlxcpld_hotplug_fan,
Wouldn't be cleaner like this:
struct hotplug_dev_pdata {
reg_offset;
mask;
count;
void *somethig;
};
struct hotplug_pdata {
/* top stuff, will see later how to put it here */
struct hotplug_dev_data psu;
struct hotplug_dev_data pwr;
struct hotplug_dev_data fan;
};
> +};
> +
> +/* Platform hotplug MSN21xx system family data */
> +static
> +struct mlxcpld_hotplug_platform_data
> mlxplat_mlxcpld_hotplug_msn21xx_data = {
> + .top_aggr_offset = (MLXPLAT_CPLD_LPC_REG_BASE_ADRR | 0x3a),
> + .top_aggr_mask = 0x04,
> + .top_aggr_pwr_mask = 0x04,
> + .pwr_reg_offset = (MLXPLAT_CPLD_LPC_REG_BASE_ADRR | 0x64),
> + .pwr_mask = 0x03,
> + .pwr_count = ARRAY_SIZE(mlxplat_mlxcpld_hotplug_pwr),
> +};
> +
> +static struct resource mlxplat_mlxcpld_hotplug_resources[] = {
> + [0] = DEFINE_RES_IRQ_NAMED(17, "mlxcpld-hotplug"),
> +};
> +
> +struct platform_device *mlxplat_dev;
> +struct mlxcpld_hotplug_platform_data *mlxplat_hotplug;
>
> static int __init mlxplat_dmi_default_matched(const struct
> dmi_system_id *dmi)
> {
> @@ -132,6 +214,7 @@ static int __init
> mlxplat_dmi_default_matched(const struct dmi_system_id *dmi)
> mlxplat_mux_data[i].n_values =
> ARRAY_SIZE(mlxplat_default_channels[i
> ]);
> }
> + mlxplat_hotplug = &mlxplat_mlxcpld_hotplug_default_data;
Is it only one hotplug device at a time? Otherwise it will be affected
by race conditions.
>
> return 1;
> };
> @@ -145,6 +228,7 @@ static int __init
> mlxplat_dmi_msn21xx_matched(const struct dmi_system_id *dmi)
> mlxplat_mux_data[i].n_values =
> ARRAY_SIZE(mlxplat_msn21xx_channels);
> }
> + mlxplat_hotplug = &mlxplat_mlxcpld_hotplug_msn21xx_data;
>
> return 1;
> };
> @@ -230,6 +314,16 @@ static int __init mlxplat_init(void)
> }
> }
>
> + priv->pdev_hotplug = platform_device_register_resndata(
> + &mlxplat_dev->dev, "mlxcpld-hotplug",
> -1,
Isn't it something like PLATFORM_DEVID_AUTO / NONE ?
> + mlxplat_mlxcpld_hotplug_resources,
> + ARRAY_SIZE(mlxplat_mlxcpld_hotplug_re
> sources),
> + mlxplat_hotplug,
> sizeof(*mlxplat_hotplug));
> + if (IS_ERR(priv->pdev_hotplug)) {
> + err = PTR_ERR(priv->pdev_hotplug);
> + goto fail_platform_mux_register;
> + }
> +
> return 0;
>
> fail_platform_mux_register:
> @@ -248,6 +342,8 @@ static void __exit mlxplat_exit(void)
> struct mlxplat_priv *priv =
> platform_get_drvdata(mlxplat_dev);
> int i;
>
> + platform_device_unregister(priv->pdev_hotplug);
> +
> for (i = ARRAY_SIZE(mlxplat_mux_data) - 1; i >= 0 ; i--)
> platform_device_unregister(priv->pdev_mux[i]);
>
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
next prev parent reply other threads:[~2016-10-27 18:31 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-27 19:55 [patch v2 2/2] drivers/platform/x86: add mlxcpld-hotplug driver registration to mlx-platform driver Vadim Pasternak
2016-10-27 18:24 ` Andy Shevchenko [this message]
2016-10-27 19:14 ` Vadim Pasternak
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=1477592697.5295.48.camel@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=dvhart@infradead.org \
--cc=fengguang.wu@intel.com \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=jiri@resnulli.us \
--cc=kvalo@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=mchehab@kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=vadimp@mellanox.com \
/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.