mfd: Provide MACRO to declare commonly defined MFD cell attributes
Subsystems (2)
PATCH 1/1 mfd: Provide MACRO to declare commonly defined MFD cell attributes
--- include/linux/mfd/core.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+)
include/linux/mfd/core.h +32 -0
@@ -16,6 +16,38 @@#include <linux/platform_device.h> +#define MFD_CELL_ALL (_name, _res, _pdata, _id, _compat, _match) \ + { \ + .name = (_name), \ + .num_resources = ARRAY_SIZE((_res)), \ + .resources = (_res), \ + .platform_data = (_pdata), \ + .pdata_size = ARRAY_SIZE((_pdata)), \ + .of_compatible = (_compat), \ + .acpi_match = (_match), \ + .id = _id, \ + } + +#define OF_MFD_CELL (_name, _res, _pdata, _id, _compat) \ + { \ + MFD_CELL_ALL(_name, _res, _pdata, _id, _compat, NULL) \ + } + +#define ACPI_MFD_CELL (_name, _res, _pdata, _id, _match) \ + { \ + MFD_CELL_ALL(_name, _res, _pdata, _id, NULL, _match) \ + } + +#define MFD_CELL_BASIC (_name, _res, _pdata, _id) \ + { \ + MFD_CELL_ALL(_name, _res, _pdata, _id, NULL, NULL) \ + } + +#define MFD_CELL_NAME (_name) \ + { \ + MFD_CELL_ALL(_name, NULL, NULL, 0, NULL, NULL) \ + } +struct irq_domain ;/* Matches ACPI PNP id, either _HID or _CID, or ACPI _ADR */
Signature · 1 line
1.9.1
include/linux/mfd/core.h line 51
Quoted 7 lines · Lee Jones
include/linux/mfd/core.h +6
-0+ +#define MFD_CELL_NAME (_name) \ + { \ + MFD_CELL_ALL(_name, NULL, NULL, 0, NULL, NULL) \ + } +struct irq_domain ;
It is failed in compilation as we can not use ARRAY_SIZE(NULL)
static struct mfd_cell max77620_children[] = {
MFD_CELL_NAME("max77620-pinctrl"),
}; CC drivers/mfd/max77620.odrivers/mfd/max77620.c:57:2: warning: braces around scalar initializer
MFD_CELL_NAME("max77620-pinctrl"),
include/linux/compiler-gcc.h:64:63: warning: taking address of expression of type 'void'
#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
^
include/linux/bug.h:33:55: note: in definition of macro 'BUILD_BUG_ON_ZERO'
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
^include/linux/compiler-gcc.h:64:46: note: in expansion of macro '__same_type'
#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
Quoted 16 lines · Lee Jones
Cc Laxman Dewangan <[email protected]>Signed-off-by Lee Jones <[email protected]>--- include/linux/mfd/core.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+)include/linux/mfd/core.h +2
-0@@ -16,6 +16,38 @@#include <linux/platform_device.h> +#define MFD_CELL_ALL (_name, _res, _pdata, _id, _compat, _match) \ + { \
include/linux/mfd/core.h line 30
Quoted 10 lines
include/linux/mfd/core.h +9
-0+ .name = (_name), \ + .num_resources = ARRAY_SIZE((_res)), \ + .resources = (_res), \ + .platform_data = (_pdata), \ + .pdata_size = ARRAY_SIZE((_pdata)), \ + .of_compatible = (_compat), \ + .acpi_match = (_match), \ + .id = _id, \ + }
Should we add the _res_size and _pdata_size also in argument and use them instead of ARRA_SIZE and lets client set the size with help of ARRAY_SIZE based on type of data?
PATCH v2 1/1 mfd: Provide MACRO to declare commonly defined MFD cell attributes
In reply to Lee Jonesmfd: Provide MACRO to declare commonly defined MFD cell attributes
--- include/linux/mfd/core.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)
include/linux/mfd/core.h +26 -0
@@ -16,6 +16,32 @@#include <linux/platform_device.h> +#define MFD_ARRAY_SIZE (arr) (sizeof(arr) / sizeof((arr)[0])) + +#define MFD_CELL_ALL (_name, _res, _pdata, _id, _compat, _match) \ + { \ + .name = (_name), \ + .resources = (_res), \ + .num_resources = MFD_ARRAY_SIZE((_res)), \ + .platform_data = (_pdata), \ + .pdata_size = MFD_ARRAY_SIZE((_pdata)), \ + .of_compatible = (_compat), \ + .acpi_match = (_match), \ + .id = _id, \ + } + +#define OF_MFD_CELL (_name, _res, _pdata, _id, _compat) \ + MFD_CELL_ALL(_name, _res, _pdata, _id, _compat, NULL) \ + +#define ACPI_MFD_CELL (_name, _res, _pdata, _id, _match) \ + MFD_CELL_ALL(_name, _res, _pdata, _id, NULL, _match) \ + +#define MFD_CELL_BASIC (_name, _res, _pdata, _id) \ + MFD_CELL_ALL(_name, _res, _pdata, _id, NULL, NULL) \ + +#define MFD_CELL_NAME (_name) \ + MFD_CELL_ALL(_name, NULL, NULL, 0, NULL, NULL) \ +struct irq_domain ;struct property_set ;
Quoted 4 lines · Lee Jones
mfd: Provide MACRO to declare commonly defined MFD cell attributes
Cc Laxman Dewangan <[email protected]>Signed-off-by Lee Jones <[email protected]>
Build passed with this patch when using it.
Please let me know if you applying this. I am going to use the macro from this patch on max77620 series on next spin.
Quoted 6 lines · Laxman Dewangan
Quoted 3 lines · Lee Jones
mfd: Provide MACRO to declare commonly defined MFD cell attributes
Cc Laxman Dewangan <[email protected]>Signed-off-by Lee Jones <[email protected]>
Quoted 6 lines
Build passed with this patch when using it.
Acked-by Laxman Dewangan <[email protected]>Please let me know if you applying this. I am going to use the macro from this patch on max77620 series on next spin.
As you are the first user, just submit it as 0/1 of your set.
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Quoted 6 lines · Lee Jones
Quoted 4 lines · Laxman Dewangan
Quoted 3 lines · Lee Jones
mfd: Provide MACRO to declare commonly defined MFD cell attributes
Cc Laxman Dewangan <[email protected]>Signed-off-by Lee Jones <[email protected]>
Quoted 8 lines
Quoted 6 lines
Build passed with this patch when using it.
Acked-by Laxman Dewangan <[email protected]>Please let me know if you applying this. I am going to use the macro from this patch on max77620 series on next spin.
As you are the first user, just submit it as 0/1 of your set.
I saw that it is merged and available in linux-next 20160211. So it is fine to not submit this patch again and modify my patch assuming it is on tree.
Quoted 12 lines · Laxman Dewangan
Quoted 10 lines · Lee Jones
Quoted 8 lines · Laxman Dewangan
Quoted 3 lines · Lee Jones
mfd: Provide MACRO to declare commonly defined MFD cell attributes
Cc Laxman Dewangan <[email protected]>Signed-off-by Lee Jones <[email protected]>Build passed with this patch when using it.
Acked-by Laxman Dewangan <[email protected]>
Quoted 8 lines
Quoted 4 lines
Quoted 2 lines
Please let me know if you applying this. I am going to use the macro from this patch on max77620 series on next spin.
As you are the first user, just submit it as 0/1 of your set.
I saw that it is merged and available in linux-next 20160211. So it is fine to not submit this patch again and modify my patch assuming it is on tree.
I was going to handle that, but as you wish, either way is fine by me.
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Quoted 2 lines · Lee Jones
mfd: Provide MACRO to declare commonly defined MFD cell attributes
Commit message?
Quoted 1 line
+#define
MFD_ARRAY_SIZE(arr)(sizeof(arr) / sizeof((arr)[0]))
What's wrong with ARRAY_SIZE() ?
include/linux/mfd/core.h line 21
Quoted 2 lines
include/linux/mfd/core.h +2
-0+ +#define MFD_CELL_ALL (_name, _res, _pdata, _id, _compat, _match) \
It misses pset. Which makes below set of macros is not sufficient.
Quoted 22 lines
include/linux/mfd/core.h +22
-0+ { \ + .name = (_name), \ + .resources = (_res), \ + .num_resources = MFD_ARRAY_SIZE((_res)), \ + .platform_data = (_pdata), \ + .pdata_size = MFD_ARRAY_SIZE((_pdata)), \ + .of_compatible = (_compat), \ + .acpi_match = (_match), \ + .id = _id, \ + } + +#define OF_MFD_CELL(_name, _res, _pdata, _id, _compat) \ + MFD_CELL_ALL(_name, _res, _pdata, _id, _compat, NULL) \ + +#define ACPI_MFD_CELL(_name, _res, _pdata, _id, _match) \ + MFD_CELL_ALL(_name, _res, _pdata, _id, NULL, _match) \ + +#define MFD_CELL_BASIC(_name, _res, _pdata, _id) \ + MFD_CELL_ALL(_name, _res, _pdata, _id, NULL, NULL) \ + +#define MFD_CELL_NAME (_name) \ + MFD_CELL_ALL(_name, NULL, NULL, 0, NULL, NULL) \
Signature · 2 lines
With Best Regards, Andy Shevchenko
PATCH v2 1/1 mfd: ab8500: Provide a small example using new MFD cell MACROs
In reply to Lee Jonesmfd: ab8500: Provide a small example using new MFD cell MACROs
--- drivers/mfd/ab8500-core.c | 106 +++++++++++++++------------------------------- 1 file changed, 34 insertions(+), 72 deletions(-)
drivers/mfd/ab8500-core.c +34 -72
@@ -634,79 +634,41 @@ static const struct mfd_cell ab8500_bm_devs[] = {static const struct mfd_cell ab8500_devs[] = { #ifdef CONFIG_DEBUG_FS - { - .name ="ab8500-debug" , - .of_compatible ="stericsson,ab8500-debug" , - }, +OF_MFD_CELL ("ab8500-debug" , +NULL ,NULL ,0 ,"stericsson,ab8500-debug" ), #endif - { - .name ="ab8500-sysctrl" , - .of_compatible ="stericsson,ab8500-sysctrl" , - }, - { - .name ="ab8500-ext-regulator" , - .of_compatible ="stericsson,ab8500-ext-regulator" , - }, - { - .name ="ab8500-regulator" , - .of_compatible ="stericsson,ab8500-regulator" , - }, - { - .name ="abx500-clk" , - .of_compatible ="stericsson,abx500-clk" , - }, - { - .name ="ab8500-gpadc" , - .of_compatible ="stericsson,ab8500-gpadc" , - }, - { - .name ="ab8500-rtc" , - .of_compatible ="stericsson,ab8500-rtc" , - }, - { - .name ="ab8500-acc-det" , - .of_compatible ="stericsson,ab8500-acc-det" , - }, - { - - .name ="ab8500-poweron-key" , - .of_compatible ="stericsson,ab8500-poweron-key" , - }, - { - .name ="ab8500-pwm" , - .of_compatible ="stericsson,ab8500-pwm" , - .id =1 , - }, - { - .name ="ab8500-pwm" , - .of_compatible ="stericsson,ab8500-pwm" , - .id =2 , - }, - { - .name ="ab8500-pwm" , - .of_compatible ="stericsson,ab8500-pwm" , - .id =3 , - }, - { - .name ="ab8500-denc" , - .of_compatible ="stericsson,ab8500-denc" , - }, - { - .name ="pinctrl-ab8500" , - .of_compatible ="stericsson,ab8500-gpio" , - }, - { - .name ="abx500-temp" , - .of_compatible ="stericsson,abx500-temp" , - }, - { - .name ="ab8500-usb" , - .of_compatible ="stericsson,ab8500-usb" , - }, - { - .name ="ab8500-codec" , - .of_compatible ="stericsson,ab8500-codec" , - }, +OF_MFD_CELL ("ab8500-sysctrl" , +NULL ,NULL ,0 ,"stericsson,ab8500-sysctrl" ), +OF_MFD_CELL ("ab8500-ext-regulator" , +NULL ,NULL ,0 ,"stericsson,ab8500-ext-regulator" ), +OF_MFD_CELL ("ab8500-regulator" , +NULL ,NULL ,0 ,"stericsson,ab8500-regulator" ), +OF_MFD_CELL ("abx500-clk" , +NULL ,NULL ,0 ,"stericsson,abx500-clk" ), +OF_MFD_CELL ("ab8500-gpadc" , +NULL ,NULL ,0 ,"stericsson,ab8500-gpadc" ), +OF_MFD_CELL ("ab8500-rtc" , +NULL ,NULL ,0 ,"stericsson,ab8500-rtc" ), +OF_MFD_CELL ("ab8500-acc-det" , +NULL ,NULL ,0 ,"stericsson,ab8500-acc-det" ), +OF_MFD_CELL ("ab8500-poweron-key" , +NULL ,NULL ,0 ,"stericsson,ab8500-poweron-key" ), +OF_MFD_CELL ("ab8500-pwm" , +NULL ,NULL ,1 ,"stericsson,ab8500-pwm" ), +OF_MFD_CELL ("ab8500-pwm" , +NULL ,NULL ,2 ,"stericsson,ab8500-pwm" ), +OF_MFD_CELL ("ab8500-pwm" , +NULL ,NULL ,3 ,"stericsson,ab8500-pwm" ), +OF_MFD_CELL ("ab8500-denc" , +NULL ,NULL ,0 ,"stericsson,ab8500-denc" ), +OF_MFD_CELL ("pinctrl-ab8500" , +NULL ,NULL ,0 ,"stericsson,ab8500-gpio" ), +OF_MFD_CELL ("abx500-temp" , +NULL ,NULL ,0 ,"stericsson,abx500-temp" ), +OF_MFD_CELL ("ab8500-usb" , +NULL ,NULL ,0 ,"stericsson,ab8500-usb" ), +OF_MFD_CELL ("ab8500-codec" , +NULL ,NULL ,0 ,"stericsson,ab8500-codec" ), };static const struct mfd_cell ab9540_devs[] = {
Re: [PATCH v2] mfd: ab8500: Provide a small example using new MFD cell MACROs
Quoted 3 lines · Lee Jones
mfd: ab8500: Provide a small example using new MFD cell MACROs
Signed-off-by Lee Jones <[email protected]>
Oh, that's pretty.
Yours,
Linus Walleij