RE: [PATCH] ARM: OMAP2+: gpmc: enable wait-pin monitoring for NAND devices via DT

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

 



Hi Javier,

>From: Javier Martinez Canillas [mailto:javier@xxxxxxxxxxxx]
>
>Hello Pekon,
>
>On Fri, May 16, 2014 at 9:07 PM, Pekon Gupta <pekon@xxxxxx> wrote:
>> This patch enables 'wait-pin' monitoring in NAND driver if following properties
>> are present under NAND DT node
>>         gpmc,wait-pin = <wait-pin number>
>>         gpmc,wait-on-read;
>>         gpmc,wait-on-write;
>> As NAND generic framework uses common path nand_chip->dev_ready() for monitoring
>> completion of Read and Write status, so wait-pin monitoring is enabled only when
>> both 'gpmc,wait-on-read' and 'gpmc,wait-on-write' are specified.
>>
>
>I see that the GPMC driver checks if "gpmc,wait-pin" property is
>defined and only in that case tries to read both "gpmc,wait-on-read"
>and "gpmc,wait-on-write" and prints a "read/write wait monitoring not
>enabled!" warning if one of those is not defined.
>
>So my question is, it's a requirement and these 3 properties need to
>always be defined together?  If that is the case then I wonder why
>there are 3 different properties and why not just defining
>"gpmc,wait-pin" implies "gpmc,wait-on-{read,write}" ?
>
GPMC as a hardware engine allows selection of wait-pin independently
for both Read and Write paths, but NAND generic framework uses single
common function nand_chip->dev_ready() which is used for both
Read and Write paths to poll wait-pin. 
So, in case of NAND both 'gpmc,wait-on-read' and 'gpmc,wait-on-write'
should be simultaneously defined to enable wait-pin monitoring. 

But GPMC being generic hardware engine for NOR, OneNAND and other
parallel interfaces like Camera, Ethernet the two separate bindings allow
flexibility to use wait-pin monitoring for only one of the paths {Read | Write}.

Therefore this check is added in gpmc_nand_init(), and not in gpmc_read_settings_dt()
which is common for all type of GPMC devices (NAND, NOR, .. )


>Or if is valid to define "gpmc-wait-pin" without
>"gpmc-wait-on-{read,write}" or only one those then why that scary
>warning is printed?
>
>Whatever is the case I think that the GPMC DT binding documentation
>(Documentation/devicetree/bindings/bus/ti-gpmc.txt) should be more
>clear on this regard.
>
Agree. But I think this clarification fits better in NAND specific documentation
Documentation/devicetree/bindings/mtd/gpmc-nand.txt


>> Signed-off-by: Pekon Gupta <pekon@xxxxxx>
>> ---
>>  arch/arm/mach-omap2/gpmc-nand.c | 8 +++++---
>>  1 file changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/gpmc-nand.c b/arch/arm/mach-omap2/gpmc-nand.c
>> index 4349e82..7dc742d 100644
>> --- a/arch/arm/mach-omap2/gpmc-nand.c
>> +++ b/arch/arm/mach-omap2/gpmc-nand.c
>> @@ -123,11 +123,13 @@ int gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data,
>>                 }
>>         }
>>
>> -       if (gpmc_nand_data->of_node)
>> +       if (gpmc_nand_data->of_node) {
>>                 gpmc_read_settings_dt(gpmc_nand_data->of_node, &s);
>> -       else
>> +               if (s.wait_on_read && s.wait_on_write)
>
>You said that wait-on-pin monitoring is only enabled if both
>"gpmc,wait-on-read" and "gpmc,wait-on-write" are specified. But in
>that case I think we should clear the wait_pin on
>gpmc_read_settings_dt() if either "gpmc,wait-on-read" or
>"gpmc,wait-on-write" were not specified and check s.wait_pin instead.
>
>Or is this semantic only for NAND and other devices connected to the
>GPMC behave differently wrt "gpmc,wait-pin"?
>
True, this is only for NAND. Other device drivers may use wait-pin
either 'only for Read' or 'only for Write' access. However I doubt why
anyone would do so, unless there is some design bug | constrain.


>> +                       gpmc_nand_data->dev_ready = "true";
>
>You should really use gpmc_nand_data->dev_ready = true here. The C99
>standard allows you to assign a string literal to a _Bool type and
>will be evaluated to 1 but that is confusing and I haven't seen that
>used in other part of the kernel.
>
Sorry, my bad. I over looked it.
I'll fix it in next version along with Documentation update.


With regards, pekon
��.n��������+%������w��{.n�����{�������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f





[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux