Dan,

On 05/06/2014 08:18 AM, Murphy, Dan wrote:
> Tony
> 
> Thanks for the comments
> 
> On 05/05/2014 05:01 PM, Tony Lindgren wrote:
>> * Dan Murphy <[email protected]> [140505 13:10]:
>>> +
>>> +Required parent properties:
>>> +- compatible : Should be one of,
>>> +           "ti,omap4-prm" for OMAP4 PRM instances
>>> +           "ti,omap5-prm" for OMAP5 PRM instances
>>> +           "ti,dra7-prm" for DRA7xx PRM instances
>>> +           "ti,am4-prcm" for AM43xx PRCM instances
>>> +           "ti,am3-prcm" for AM33xx PRCM instances
>>> +
>>> +Required child reset property:
>>> +- compatible : Should be
>>> +           "resets" for All TI SoCs
>>> +
>>> +example:
>>> +           prm: prm@4ae06000 {
>>> +                   compatible = "ti,omap5-prm";
>>> +                   reg = <0x4ae06000 0x3000>;
>>> +
>>> +                   prm_resets: resets {
>>> +                           #address-cells = <1>;
>>> +                           #size-cells = <1>;
>>> +                           #reset-cells = <1>;
>>> +                   };
>>> +           };
>> The reg entries you have in the example below has different format
>> compared to this?

Right, the #size-cells should have been 0, or each reg field updated
with an additional field value of 4 as the registers are all of constant
width - 4 bytes.

> 
> This is the parent to the resets.  The reg entries below are for
> the child reset signals.
> 
>>
>>> +Reset node declaration
>>> +==============================================
>>> +The reset node is declared in a parent child relationship.  The main parent
>>> +is the PRCM module which contains the base address.  The first child within
>>> +the reset parent declares the target modules reset name.  This is followed 
>>> by
>>> +the control and status offsets.
>>> +
>>> +Within the first reset child node is a secondary child node which declares 
>>> the
>>> +reset signal of interest.  Under this node the control and status bits
>>> +are declared.  These bits declare the bit mask for the target reset.
>>> +
>>> +
>>> +Required properties:
>>> +reg - This is the register offset from the PRCM parent.
>>> +   This must be declared as:
>>> +
>>> +   reg = <control register offset>,
>>> +             <status register offset>;
>>> +
>>> +control-bit - This is the bit within the register which controls the reset
>>> +   of the target module.  This is declared as a bit mask for the register.
>>> +status-bit - This is the bit within the register which contains the status 
>>> of
>>> +   the reset of the target module.
>>> +   This is declared as a bit mask for the register.
>>> +
>>> +example:
>>> +&prm_resets {
>>> +   dsp_rstctrl {
>>> +           reg = <0x1c00>,
>>> +                     <0x1c04>;
>> Shouldn't this be start and size instead of start and end here?

These are two registers - one for control and one for status.

> 
> I could do start and size.  But the size will be the same for each register.
> AM33xx really hurts the consistency model here as the other patches in the 
> series
> it appears that the control and status are consistent but AM33xx the 
> registers are all over
> the place.
> 
> I have not looked at OMAP2->4 yet for control and status register offsets.
> 
>>> +           dsp_reset: dsp_reset {
>>> +                   control-bit = <0x01>;
>>> +                   status-bit = <0x01>;
>>> +           };
>>> +   };
>>> +};
>> Are the control-bit and status-bit always the same? If so, you can
>> keep that knowlede private to the the driver.
> 
> No there is a case in the am33xx resets file where the status and control 
> bits are not the same.

Do we really need two separate properties to represent this, as these
are essentially the relevant bits in the corresponding reg elements.
I guess this is somewhat same as Tony's suggestion about using the reg
field for these sub-nodes, in which case, you would have to add another
#address-cells as 1 for each of the child reset nodes.

regards
Suman

> 
>>
>> And maybe you can have the bit offset in a reg property here to
>> avoid adding any custom properties? Something like:
>>
>>      dsp_reset: reset@1 {
>>              reg = 1;
>>      };
>>
>> If reg is not suitable for that, it seems that some generic property
>> to describe the bit offset is needed by quite a few drivers
>> anyways, for things like clocks and regulators.
> 
> I will have to look into this.  Maybe a generic entry called bit-offset
> that defines the bit or a mask for the registers.  It can mimic the reg
> entry.
> 
>>> +Client Node Declaration
>>> +==============================================
>>> +This is the consumer of the parent node to declare what resets this
>>> +particular module is interested in.
>>> +
>>> +example:
>>> +   src: src@55082000 {
>>> +               resets = <&reset_src phandle>;
>>> +                   reset-names = "<reset_name>";
>>> +   };
>>> +
>>> +Required Properties:
>>> +reset_src - This is the parent DT entry for the reset controller
>>> +phandle - This is the phandle of the specific reset to be used by the clien
>>> +   driver.
>>> +reset-names - This is the reset name of module that the device driver
>>> +   needs to be able to reset.  This value must correspond to a value within
>>> +   the reset controller array.
>>> +
>>> +example:
>>> +resets = <&prm_resets &dsp_mmu_reset>;
>>> +reset-names = "dsp_mmu_reset";
>> This part looks OK to me, not sure if we need the reset-names property
>> if we have one already why not.
> 
> reset-names are part of the reset.txt file.  I could probably drop the resets 
> and reset-name information here
> and point to the reset.txt file for further explanation.
> 
>>
>> Regards,
>>
>> Tony
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to