linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dan Murphy <dmurphy@ti.com>
To: Jacek Anaszewski <jacek.anaszewski@gmail.com>, <pavel@ucw.cz>,
	<robh@kernel.org>
Cc: <kbuild-all@lists.01.org>, <devicetree@vger.kernel.org>,
	<linux-leds@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [RESEND PATCH v27 11/15] leds: lp55xx: Add multicolor framework support to lp55xx
Date: Mon, 22 Jun 2020 08:04:51 -0500	[thread overview]
Message-ID: <a95610f7-8ab4-fe04-0ecc-f1cf2ba8ff0e@ti.com> (raw)
In-Reply-To: <52d2c06a-d4ab-b9b2-b1d3-d5f81780cd7f@gmail.com>

Jacek

On 6/21/20 3:24 PM, Jacek Anaszewski wrote:
> Dan,
>
> On 6/21/20 4:12 PM, Dan Murphy wrote:
>> Jacek
>>
>> On 6/19/20 5:10 PM, Jacek Anaszewski wrote:
>>> Dan,
>>>
>>> On 6/19/20 6:35 PM, Dan Murphy wrote:
>>>> Jacek
>>>>
>>>> On 6/18/20 6:26 PM, Jacek Anaszewski wrote:
>>>>> On 6/19/20 12:09 AM, Jacek Anaszewski wrote:
>>>>>> Dan,
>>>>>>
>>>>>> On 6/18/20 11:44 PM, Dan Murphy wrote:
>>>>>>> Jacek
>>>>>>>
>>>>>>> On 6/18/20 4:21 PM, Jacek Anaszewski wrote:
>>>>>>>> Dan,
>>>>>>>>
>>>>>>>> On 6/18/20 12:33 AM, Dan Murphy wrote:
>>>>>>>>> Jacek
>>>>>>>>>
>>>>>>>>> On 6/17/20 4:41 PM, Jacek Anaszewski wrote:
>>>>>>>>>> Dan,
>>>>>>>>>>
>>>>>>>>>> On 6/17/20 9:22 PM, Dan Murphy wrote:
>>>>>>>>>>> Pavel/Jacek
>>>>>>>>>>>
>>>>>>>>>>> On 6/17/20 11:28 AM, kernel test robot wrote:
>>>>>>>>>>>> Hi Dan,
>>>>>>>>>>>>
>>>>>>>>>>>> I love your patch! Yet something to improve:
>>>>>>>>>>>>
>>>>>>>>>>>> [auto build test ERROR on pavel-linux-leds/for-next]
>>>>>>>>>>>> [cannot apply to j.anaszewski-leds/for-next]
>>>>>>>>>>>> [if your patch is applied to the wrong git tree, please 
>>>>>>>>>>>> drop us a note to help
>>>>>>>>>>>> improve the system. BTW, we also suggest to use '--base' 
>>>>>>>>>>>> option to specify the
>>>>>>>>>>>> base tree in git format-patch, please see 
>>>>>>>>>>>> https://stackoverflow.com/a/37406982]
>>>>>>>>>>>>
>>>>>>>>>>>> url: 
>>>>>>>>>>>> https://github.com/0day-ci/linux/commits/Dan-Murphy/Multicolor-Framework-v27/20200616-042217 
>>>>>>>>>>>>
>>>>>>>>>>>> base: 
>>>>>>>>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git 
>>>>>>>>>>>> for-next
>>>>>>>>>>>> config: ia64-randconfig-r015-20200617 (attached as .config)
>>>>>>>>>>>> compiler: ia64-linux-gcc (GCC) 9.3.0
>>>>>>>>>>>> reproduce (this is a W=1 build):
>>>>>>>>>>>>          wget 
>>>>>>>>>>>> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross 
>>>>>>>>>>>> -O ~/bin/make.cross
>>>>>>>>>>>>          chmod +x ~/bin/make.cross
>>>>>>>>>>>>          # save the attached .config to linux build tree
>>>>>>>>>>>>          COMPILER_INSTALL_PATH=$HOME/0day 
>>>>>>>>>>>> COMPILER=gcc-9.3.0 make.cross ARCH=ia64
>>>>>>>>>>>>
>>>>>>>>>>>> If you fix the issue, kindly add following tag as appropriate
>>>>>>>>>>>> Reported-by: kernel test robot <lkp@intel.com>
>>>>>>>>>>>>
>>>>>>>>>>>> All errors (new ones prefixed by >>, old ones prefixed by <<):
>>>>>>>>>>>>
>>>>>>>>>>>> ia64-linux-ld: drivers/leds/leds-lp55xx-common.o: in 
>>>>>>>>>>>> function `lp55xx_set_mc_brightness':
>>>>>>>>>>>>>> drivers/leds/leds-lp55xx-common.c:146: undefined 
>>>>>>>>>>>>>> reference to `led_mc_calc_color_components'
>>>>>>>>>>>> ia64-linux-ld: drivers/leds/leds-lp55xx-common.o: in 
>>>>>>>>>>>> function `devm_led_classdev_multicolor_register':
>>>>>>>>>>>>>> include/linux/led-class-multicolor.h:74: undefined 
>>>>>>>>>>>>>> reference to `devm_led_classdev_multicolor_register_ext'
>>>>>>>>>>>> vim +146 drivers/leds/leds-lp55xx-common.c
>>>>>>>>>>>>
>>>>>>>>>>>>     138
>>>>>>>>>>>>     139    static int lp55xx_set_mc_brightness(struct 
>>>>>>>>>>>> led_classdev *cdev,
>>>>>>>>>>>>     140                        enum led_brightness brightness)
>>>>>>>>>>>>     141    {
>>>>>>>>>>>>     142        struct led_classdev_mc *mc_dev = 
>>>>>>>>>>>> lcdev_to_mccdev(cdev);
>>>>>>>>>>>>     143        struct lp55xx_led *led = 
>>>>>>>>>>>> mcled_cdev_to_led(mc_dev);
>>>>>>>>>>>>     144        struct lp55xx_device_config *cfg = 
>>>>>>>>>>>> led->chip->cfg;
>>>>>>>>>>>>     145
>>>>>>>>>>>>   > 146 led_mc_calc_color_components(&led->mc_cdev, 
>>>>>>>>>>>> brightness);
>>>>>>>>>>>>     147        return cfg->multicolor_brightness_fn(led);
>>>>>>>>>>>>     148
>>>>>>>>>>>
>>>>>>>>>>> Well this was a mess to figure out.
>>>>>>>>>>>
>>>>>>>>>>> The only fix I can figure out here is to remove the
>>>>>>>>>>>
>>>>>>>>>>>      depends on LEDS_CLASS_MULTI_COLOR || 
>>>>>>>>>>> !LEDS_CLASS_MULTI_COLOR
>>>>>>>>>>>
>>>>>>>>>>> from each child device and add
>>>>>>>>>>>
>>>>>>>>>>>      select LEDS_CLASS_MULTI_COLOR
>>>>>>>>>>>
>>>>>>>>>>> to the LP55XX_COMMON
>>>>>>>>>>>
>>>>>>>>>>> This way the Multi color framework will inherit the symbol 
>>>>>>>>>>> that was set by the COMMON flag which is inherited by 
>>>>>>>>>>> majority from the child flags.
>>>>>>>>>>
>>>>>>>>>> Did you try this?
>>>>>>>>>>
>>>>>>>>>> --- a/drivers/leds/Kconfig
>>>>>>>>>> +++ b/drivers/leds/Kconfig
>>>>>>>>>> @@ -398,6 +398,7 @@ config LEDS_LP50XX
>>>>>>>>>>  config LEDS_LP55XX_COMMON
>>>>>>>>>>         tristate "Common Driver for TI/National 
>>>>>>>>>> LP5521/5523/55231/5562/8501"
>>>>>>>>>>         depends on LEDS_LP5521 || LEDS_LP5523 || LEDS_LP5562 
>>>>>>>>>> || LEDS_LP8501
>>>>>>>>>> +       depends on LEDS_CLASS_MULTI_COLOR || 
>>>>>>>>>> !LEDS_CLASS_MULTI_COLOR
>>>>>>>>>>         depends on OF
>>>>>>>>>>         select FW_LOADER
>>>>>>>>>>         select FW_LOADER_USER_HELPER
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> Yes I did
>>>>>>>>>
>>>>>>>>> That gave unmet dependencies.
>>>>>>>>>
>>>>>>>>> WARNING: unmet direct dependencies detected for 
>>>>>>>>> LEDS_LP55XX_COMMON
>>>>>>>>>    Depends on [m]: NEW_LEDS [=y] && (LEDS_LP5521 [=n] || 
>>>>>>>>> LEDS_LP5523 [=m] || LEDS_LP5562 [=y] || LEDS_LP8501 [=y]) && 
>>>>>>>>> (LEDS_CLASS_MULTI_COLOR [=m] || !LEDS_CLASS_MULTI_COLOR [=m]) 
>>>>>>>>> && OF [=y]
>>>>>>>>>    Selected by [y]:
>>>>>>>>>    - LEDS_LP5562 [=y] && NEW_LEDS [=y] && LEDS_CLASS [=y] && 
>>>>>>>>> I2C [=y]
>>>>>>>>>    - LEDS_LP8501 [=y] && NEW_LEDS [=y] && LEDS_CLASS [=y] && 
>>>>>>>>> I2C [=y]
>>>>>>>>>    Selected by [m]:
>>>>>>>>>    - LEDS_LP5523 [=m] && NEW_LEDS [=y] && LEDS_CLASS [=y] && 
>>>>>>>>> I2C [=y] && (LEDS_CLASS_MULTI_COLOR [=m] || 
>>>>>>>>> !LEDS_CLASS_MULTI_COLOR [=m])
>>>>>>>>>
>>>>>>>>
>>>>>>>> When I was testing that yesterday I also had the same warning 
>>>>>>>> at some
>>>>>>>> point of testing different Kconfig setups, but with what I 
>>>>>>>> showed above
>>>>>>>> it ceased to appear. Now every time I am doing "make oldconfig" 
>>>>>>>> the
>>>>>>>> CONFIG_LEDS_LP55XX_COMMON=y entry gets changed to =m with the 
>>>>>>>> config
>>>>>>>> from the test bot.
>>>>>>>>
>>>>>>> That is not what I saw in my testing especially after doing a 
>>>>>>> distclean
>>>>>>
>>>>>> Could you please give your exact steps after "make distclean" and
>>>>>> copying test bot config to the kernel root directory?
>>>>>>
>>>>>> Also, please share the toolchain you're using for tests.
>>>>>
>>>>> Actually at this stage the toolchain is of lesser relevance.
>>>>>
>>>>> I've tried once more and indeed the problem shows up.
>>>>>
>>>>> It is caused by the driver entries doing
>>>>>
>>>>> "select LEDS_LP55XX_COMMON".
>>>>>
>>>>> Select sets config to "y" so it conflicts with
>>>>> "depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR"
>>>>> in the "config LEDS_LP55XX_COMMON".
>>>>>
>>>>> Your proposed fix will block the possibility of building
>>>>> LED_CLASS_MULTI_COLOR as a module when LP55XX drivers
>>>>> are enabled so this is also not an option.
>>>>>
>>>>> Solving this riddle will require some more thinking.
>>>>> I haven't analyzed it in detail but maybe "imply" statement from
>>>>> kconfig-language.rst could help somehow here. 
>>>>
>>>> The multicolor framework will build as a module if the LED_CLASS is 
>>>> defined as a module.
>>>>
>>>> See attached test_defconfig
>>>
>>> But it will be impossible to enable CONFIG_LEDS_LP50XX without
>>> CONFIG_LEDS_CLASS_MULTI_COLOR if you will remove
>>>
>>> depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR.
>>>
>> I was not removing the dependency for the LP50xx only the LP55xx.
>
> It was my typo, I meant LP55XX.
>
>>
>>> This is actually why the above entry was needed.
>>>
>>> LP55XX drivers have to work also without multicolor class.
>>>
>> Well I am not sure how else to resolve this problem.  Because the 
>> LP55xx has multi level dependencies.
>>
>> Only the LP55xx_common has the dependency on the MC framework. The 
>> device drivers do not.
>>
>> The issue is the mixing and matching of the MC fw as a module vs the 
>> LP55XX_COMMON as a built-in.
>
> The simplest solution is to avoid selecting LP55XX_COMMON in favor
> of making child drivers depending on it. Of course, maybe there exists
> some trickier option to keep the selection, but I would have to play
> a bit more with it to be sure.
>
That actually makes more sense then what is there now.

The children depend on the COMMON and the COMMON depends on the MC.

Not sure why select was used originally.

But this will prompt another patch to update the u8500_defconfig to 
include the common.

Dan


  parent reply	other threads:[~2020-06-22 13:05 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-15 20:15 [RESEND PATCH v27 00/15] Multicolor Framework v27 Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 01/15] dt: bindings: Add multicolor class dt bindings documention Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 02/15] leds: Add multicolor ID to the color ID list Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 03/15] leds: multicolor: Introduce a multicolor class definition Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 04/15] dt: bindings: lp50xx: Introduce the lp50xx family of RGB drivers Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 05/15] leds: lp50xx: Add the LP50XX family of the RGB LED driver Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 06/15] dt-bindings: leds: Convert leds-lp55xx to yaml Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 07/15] ARM: dts: n900: Add reg property to the LP5523 channel node Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 08/15] ARM: dts: imx6dl-yapp4: Add reg property to the lp5562 " Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 09/15] ARM: dts: ste-href: Add reg property to the LP5521 channel nodes Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 10/15] leds: lp55xx: Convert LED class registration to devm_* Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 11/15] leds: lp55xx: Add multicolor framework support to lp55xx Dan Murphy
2020-06-17 16:28   ` kernel test robot
2020-06-17 19:22     ` Dan Murphy
2020-06-17 21:41       ` Jacek Anaszewski
2020-06-17 22:33         ` Dan Murphy
2020-06-18 21:21           ` Jacek Anaszewski
2020-06-18 21:44             ` Dan Murphy
2020-06-18 22:09               ` Jacek Anaszewski
2020-06-18 23:26                 ` Jacek Anaszewski
2020-06-18 23:38                   ` Dan Murphy
2020-06-19 16:35                   ` Dan Murphy
2020-06-19 22:10                     ` Jacek Anaszewski
2020-06-21 14:12                       ` Dan Murphy
2020-06-21 20:24                         ` Jacek Anaszewski
2020-06-22 12:42                           ` Jacek Anaszewski
2020-06-22 12:45                             ` Dan Murphy
2020-06-22 13:04                           ` Dan Murphy [this message]
2020-06-15 20:15 ` [RESEND PATCH v27 12/15] leds: lp5523: Update the lp5523 code to add multicolor brightness function Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 13/15] leds: lp5521: Add multicolor framework multicolor brightness support Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 14/15] leds: lp55xx: Fix file permissions to use DEVICE_ATTR macros Dan Murphy
2020-06-15 20:15 ` [RESEND PATCH v27 15/15] leds: lp5523: Fix various formatting issues in the code Dan Murphy
2020-06-15 20:27 ` [RESEND PATCH v27 00/15] Multicolor Framework v27 Pavel Machek
2020-06-15 20:31   ` Dan Murphy

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=a95610f7-8ab4-fe04-0ecc-f1cf2ba8ff0e@ti.com \
    --to=dmurphy@ti.com \
    --cc=devicetree@vger.kernel.org \
    --cc=jacek.anaszewski@gmail.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=robh@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).