Hi Philipp,

On 24 July 2017 at 10:49, Dr. Philipp Tomsich
<philipp.toms...@theobroma-systems.com> wrote:
>
>> On 24 Jul 2017, at 18:43, Simon Glass <s...@chromium.org> wrote:
>>
>> Hi Philipp,
>>
>> On 24 July 2017 at 07:10, Dr. Philipp Tomsich
>> <philipp.toms...@theobroma-systems.com> wrote:
>>>
>>>
>>>> On 24 Jul 2017, at 14:45, Kever Yang <kever.y...@rock-chips.com> wrote:
>>>>
>>>> Hi Philipp,
>>>>
>>>>
>>>> On 07/24/2017 05:11 PM, Dr. Philipp Tomsich wrote:
>>>>>> On 24 Jul 2017, at 10:34, Andy Yan <andy....@rock-chips.com> wrote:
>>>>>>
>>>>>> Hi Philipp:
>>>>>>
>>>>>>
>>>>>> On 2017年07月21日 16:34, Dr. Philipp Tomsich wrote:
>>>>>>>> On 21 Jul 2017, at 05:50, Andy Yan <andy....@rock-chips.com> wrote:
>>>>>>>>
>>>>>>>> Hi Philipp:
>>>>>>>>
>>>>>>>>
>>>>>>>> On 2017年07月19日 04:36, Philipp Tomsich wrote:
>>>>>>>>> The RK3368 GRF header was still defines with a shifted-mask but with
>>>>>>>>> non-shifted function selectors for the IOMUX defines.  As the RK3368
>>>>>>>>> support is still fresh enough to allow a quick rename, we do this now
>>>>>>>>> before having more code use this.
>>>>>>>>>
>>>>>>>>> As some of the downstream drivers (e.g. the Designware GMAC wrapper)
>>>>>>>>> may need to include the grf-header of multiple devices, we rename the
>>>>>>>>> various defines for the RK3368 by prefixing them with the device name.
>>>>>>>>> This avoids future trouble during driver integration.
>>>>>>>>   Is that really necessary to add such a prefix for all the register 
>>>>>>>> definition, just to fit  the GMAC dirver?
>>>>>>>> Maybe the gmac driver can define the platform specific macro in its 
>>>>>>>> own code like dwmac-rk in the kernel. Then we can keep the register 
>>>>>>>> header file a little tidy.
>>>>>>> The problem is not the GMAC driver (although it was the motivation for 
>>>>>>> doing
>>>>>>> this change), but rather how easy it is to pick up the wrong grf-file 
>>>>>>> and refer
>>>>>>> to the wrong definitions/values… the conflicts are not through the 
>>>>>>> GMAC-specifc
>>>>>>> defines but rather through things like the IOMUX masks or (before I 
>>>>>>> moved
>>>>>>> this to the DDR-driver) things like the defines to enable DRAM in GRF.
>>>>>>>
>>>>>>> Until we find a way to consistently structure things in such a way that
>>>>>>>   (a) common constructs can be shared (e.g. the masks in the IOMUX)
>>>>>>>   (b) specific definitions (e.g. the pin-out for a specific device) is 
>>>>>>> not visible outside of its driver
>>>>>>> I prefer the names to explicitly refer to each device.
>>>>>>>  That said, the longer-term plan (especially with a larger number of 
>>>>>>> devices
>>>>>>> being supported) needs to include a consistent rework of how (and where)
>>>>>>> we manage all these definitions from the grf-header files.
>>>>>> It's true that many devices use GRF, we also face this condition in the 
>>>>>> kernel land.And all the drivers in kernel handle this device specific 
>>>>>> definition in the driver itself(by of_device_id->data or MACRO). And 
>>>>>> there is also no need to use the grf constructs, the common syscon api 
>>>>>> will provide  you the grf base address. I think this keeps things 
>>>>>> simple, we don't need to rely on too much of the grf or cru header, 
>>>>>> maybe some day we can remove the header file, just as clean as the 
>>>>>> kernel.
>>>>> The problem is not the base-address of GRF, but rather the need to pull 
>>>>> in the
>>>>> register structure (so we can refer to individual registers by name 
>>>>> instead of by
>>>>> hard-coded offset): as we pull this in today, the definitions for the 
>>>>> various IOMUX
>>>>> entries will also be pulled in, which will cause duplicate definitions.
>>>>
>>>> I really don't like the idea of add the prefix, which end with longer 
>>>> MACRO but no other improve.
>>>> I think the GRF is used mostly for the IOMUX, in this case the better 
>>>> solution is
>>>> port the kernel rockchip-pinctrl driver in uboot, which not rely on the 
>>>> dtsi instead of header file.
>>>>
>>>> If we do this, we can remove most of the GRF header definition for IOMUX, 
>>>> I can ask David Wu
>>>> to do this, but maybe few weeks later.
>>>
>>> As indicated earlier: this is a temporary solution (although we have a 
>>> local saying that
>>> "nothing is more permanent than a temporary solution”) and should remain 
>>> limited to
>>> the RK3368 until we can clean this up across all boards.
>>
>> Can we drop the prefix for now? I do worry about the precedent this
>> sets. If this is needed anywhere then it suggests to me that we have
>> not split up the drivers correctly. We should not be including two
>> different GRF headers into the same file. E.g. there should be
>> different pinctrl drivers for each SoC.
>
> If we drop it, we can’t get RK3368-support merged into the GMAC driver for 
> now.
> Splitting the Rockchip-wrapper of the GMAC-driver doesn’t appear like a 
> workable
> solution either, as this would create a new file for each chip-variant in 
> drivers/net.
>
> I’ll just pull the RK3368 GMAC (driver) support for now and split it off this 
> series.

My view of GRF is that we should try to have a driver for the various
operations that each thing needs (e.g. using the ioctl model). Imagine
a world where we have a U-Boot that supports running on all available
Rockchip SoCs and can boot on any board. In that case we probably want
a GRF driver with operations that can be implemented by each SoC.

I have not sketched this out or tried it though. It needs more thought
/ prototyping.

I am concerned about #ifdefs in the code and including private
SoC-specific RK header files in generic Rockchip drivers. To me that
is the wrong approach.

>
>>> Pulling this into the pinctrl drivers is an excellent choice.
>>> Please watch out for board_debug_uart_init(…), which also directly accesses 
>>> the IOMUX
>>> constants and will need to be restructured together with pinctrl drivers.
>>>
>>> Thanks!
>>> —Philipp.
>>>
>>>> Thanks,
>>>> - Kever
>>>>>
>>>>>> On the other hand, add such a prefix of rk3368 breaks the consistency 
>>>>>> with other rockchip devices.
>>>>> I do agree that we need to clean this up across all the boards and drivers
>>>>> supported today.  As of today, I can not resolve this on a RK3368-only 
>>>>> basis,
>>>>> as I’d need to clean up the RK3288 at the same time (and don’t want to do 
>>>>> this
>>>>> in a RK3368-focused series that already has way too much going on).
>>>>>
>>>>> Let’s try to clean this up for the next (i.e. the one after this) merge 
>>>>> window.
>>>>> Once we have bit-definitions out of the grf-header, I’ll remove the 
>>>>> RK3368_
>>>>> prefixes...
>>>>>
>>>>>>>>> Signed-off-by: Philipp Tomsich <philipp.toms...@theobroma-systems.com>
>>>>>>>>> ---
>>>>>>>>>


Regards,
Simon
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to