Re: [PATCH 1/4] ACPI / LPSS: introduce flags

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2014-09-02 at 10:55 +0300, Heikki Krogerus wrote:
> Replace the booleans with a single flags member variable.
> 
> Signed-off-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>

Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>

> ---
>  drivers/acpi/acpi_lpss.c | 79 ++++++++++++++++++------------------------------
>  1 file changed, 29 insertions(+), 50 deletions(-)
> 
> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
> index 9dfec48..4723a0e 100644
> --- a/drivers/acpi/acpi_lpss.c
> +++ b/drivers/acpi/acpi_lpss.c
> @@ -54,6 +54,13 @@ ACPI_MODULE_NAME("acpi_lpss");
>  
>  #define LPSS_PRV_REG_COUNT		9
>  
> +/* LPSS Flags */
> +#define LPSS_CLK			BIT(0)
> +#define LPSS_CLK_GATE			BIT(1)
> +#define LPSS_CLK_DIVIDER		BIT(2)
> +#define LPSS_LTR			BIT(3)
> +#define LPSS_SAVE_CTX			BIT(4)
> +
>  struct lpss_shared_clock {
>  	const char *name;
>  	unsigned long rate;
> @@ -63,21 +70,17 @@ struct lpss_shared_clock {
>  struct lpss_private_data;
>  
>  struct lpss_device_desc {
> -	bool clk_required;
>  	const char *clkdev_name;
> -	bool ltr_required;
> +	unsigned int flags;
>  	unsigned int prv_offset;
>  	size_t prv_size_override;
> -	bool clk_divider;
> -	bool clk_gate;
> -	bool save_ctx;
>  	struct lpss_shared_clock *shared_clock;
>  	void (*setup)(struct lpss_private_data *pdata);
>  };
>  
>  static struct lpss_device_desc lpss_dma_desc = {
> -	.clk_required = true,
>  	.clkdev_name = "hclk",
> +	.flags = LPSS_CLK,
>  };
>  
>  struct lpss_private_data {
> @@ -113,42 +116,26 @@ static void lpss_i2c_setup(struct lpss_private_data *pdata)
>  	writel(val, pdata->mmio_base + offset);
>  }
>  
> -static struct lpss_device_desc wpt_dev_desc = {
> -	.clk_required = true,
> -	.prv_offset = 0x800,
> -	.ltr_required = true,
> -	.clk_divider = true,
> -	.clk_gate = true,
> -};
> -
>  static struct lpss_device_desc lpt_dev_desc = {
> -	.clk_required = true,
> +	.flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_LTR,
>  	.prv_offset = 0x800,
> -	.ltr_required = true,
> -	.clk_divider = true,
> -	.clk_gate = true,
>  };
>  
>  static struct lpss_device_desc lpt_i2c_dev_desc = {
> -	.clk_required = true,
> +	.flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_LTR,
>  	.prv_offset = 0x800,
> -	.ltr_required = true,
> -	.clk_gate = true,
>  };
>  
>  static struct lpss_device_desc lpt_uart_dev_desc = {
> -	.clk_required = true,
> +	.flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_LTR,
>  	.prv_offset = 0x800,
> -	.ltr_required = true,
> -	.clk_divider = true,
> -	.clk_gate = true,
>  	.setup = lpss_uart_setup,
>  };
>  
>  static struct lpss_device_desc lpt_sdio_dev_desc = {
> +	.flags = LPSS_LTR,
>  	.prv_offset = 0x1000,
>  	.prv_size_override = 0x1018,
> -	.ltr_required = true,
>  };
>  
>  static struct lpss_shared_clock pwm_clock = {
> @@ -157,30 +144,23 @@ static struct lpss_shared_clock pwm_clock = {
>  };
>  
>  static struct lpss_device_desc byt_pwm_dev_desc = {
> -	.clk_required = true,
> -	.save_ctx = true,
> +	.flags = LPSS_CLK | LPSS_SAVE_CTX,
>  	.shared_clock = &pwm_clock,
>  };
>  
>  static struct lpss_device_desc byt_uart_dev_desc = {
> -	.clk_required = true,
> +	.flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX,
>  	.prv_offset = 0x800,
> -	.clk_divider = true,
> -	.clk_gate = true,
> -	.save_ctx = true,
>  	.setup = lpss_uart_setup,
>  };
>  
>  static struct lpss_device_desc byt_spi_dev_desc = {
> -	.clk_required = true,
> +	.flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX,
>  	.prv_offset = 0x400,
> -	.clk_divider = true,
> -	.clk_gate = true,
> -	.save_ctx = true,
>  };
>  
>  static struct lpss_device_desc byt_sdio_dev_desc = {
> -	.clk_required = true,
> +	.flags = LPSS_CLK,
>  };
>  
>  static struct lpss_shared_clock i2c_clock = {
> @@ -189,9 +169,8 @@ static struct lpss_shared_clock i2c_clock = {
>  };
>  
>  static struct lpss_device_desc byt_i2c_dev_desc = {
> -	.clk_required = true,
> +	.flags = LPSS_CLK | LPSS_SAVE_CTX,
>  	.prv_offset = 0x800,
> -	.save_ctx = true,
>  	.shared_clock = &i2c_clock,
>  	.setup = lpss_i2c_setup,
>  };
> @@ -202,8 +181,7 @@ static struct lpss_shared_clock bsw_pwm_clock = {
>  };
>  
>  static struct lpss_device_desc bsw_pwm_dev_desc = {
> -	.clk_required = true,
> -	.save_ctx = true,
> +	.flags = LPSS_CLK | LPSS_SAVE_CTX,
>  	.shared_clock = &bsw_pwm_clock,
>  };
>  
> @@ -251,7 +229,8 @@ static const struct acpi_device_id acpi_lpss_device_ids[] = {
>  	{ "INT3436", LPSS_ADDR(lpt_sdio_dev_desc) },
>  	{ "INT3437", },
>  
> -	{ "INT3438", LPSS_ADDR(wpt_dev_desc) },
> +	/* Wildcat Point LPSS devices */
> +	{ "INT3438", LPSS_ADDR(lpt_dev_desc) },
>  
>  	{ }
>  };
> @@ -314,13 +293,13 @@ static int register_device_clock(struct acpi_device *adev,
>  		parent = shared_clock->name;
>  	}
>  
> -	if (dev_desc->clk_gate) {
> +	if (dev_desc->flags & LPSS_CLK_GATE) {
>  		clk = clk_register_gate(NULL, devname, parent, 0,
>  					prv_base, 0, 0, NULL);
>  		parent = devname;
>  	}
>  
> -	if (dev_desc->clk_divider) {
> +	if (dev_desc->flags & LPSS_CLK_DIVIDER) {
>  		/* Prevent division by zero */
>  		if (!readl(prv_base))
>  			writel(LPSS_CLK_DIVIDER_DEF_MASK, prv_base);
> @@ -392,7 +371,7 @@ static int acpi_lpss_create_device(struct acpi_device *adev,
>  
>  	pdata->dev_desc = dev_desc;
>  
> -	if (dev_desc->clk_required) {
> +	if (dev_desc->flags & LPSS_CLK) {
>  		ret = register_device_clock(adev, pdata);
>  		if (ret) {
>  			/* Skip the device, but continue the namespace scan. */
> @@ -693,19 +672,19 @@ static int acpi_lpss_platform_notify(struct notifier_block *nb,
>  
>  	switch (action) {
>  	case BUS_NOTIFY_BOUND_DRIVER:
> -		if (pdata->dev_desc->save_ctx)
> +		if (pdata->dev_desc->flags & LPSS_SAVE_CTX)
>  			pdev->dev.pm_domain = &acpi_lpss_pm_domain;
>  		break;
>  	case BUS_NOTIFY_UNBOUND_DRIVER:
> -		if (pdata->dev_desc->save_ctx)
> +		if (pdata->dev_desc->flags & LPSS_SAVE_CTX)
>  			pdev->dev.pm_domain = NULL;
>  		break;
>  	case BUS_NOTIFY_ADD_DEVICE:
> -		if (pdata->dev_desc->ltr_required)
> +		if (pdata->dev_desc->flags & LPSS_LTR)
>  			return sysfs_create_group(&pdev->dev.kobj,
>  						  &lpss_attr_group);
>  	case BUS_NOTIFY_DEL_DEVICE:
> -		if (pdata->dev_desc->ltr_required)
> +		if (pdata->dev_desc->flags & LPSS_LTR)
>  			sysfs_remove_group(&pdev->dev.kobj, &lpss_attr_group);
>  	default:
>  		break;
> @@ -722,7 +701,7 @@ static void acpi_lpss_bind(struct device *dev)
>  {
>  	struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev));
>  
> -	if (!pdata || !pdata->mmio_base || !pdata->dev_desc->ltr_required)
> +	if (!pdata || !pdata->mmio_base || !(pdata->dev_desc->flags & LPSS_LTR))
>  		return;
>  
>  	if (pdata->mmio_size >= pdata->dev_desc->prv_offset + LPSS_LTR_SIZE)


-- 
Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
Intel Finland Oy

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux