[PATCH 1/6] Documentation: dt-bindings: Add Aspeed PECI

Jae Hyun Yoo jae.hyun.yoo at linux.intel.com
Thu Dec 7 09:24:28 AEDT 2017


On 12/6/2017 1:42 PM, Andrew Jeffery wrote:
> Hi Jae Hun Yoo,
> 
> Nice work! Some comments below
> 
> On Thu, 7 Dec 2017, at 07:32, Jae Hyun Yoo wrote:
>> This commit adds a dt-bindings document for Aspeed PECI.
>>
>> Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo at linux.intel.com>
>> ---
>>   .../devicetree/bindings/misc/aspeed-peci.txt       | 52
>>   ++++++++++++++++++++++
>>   1 file changed, 52 insertions(+)
>>   create mode 100644
>>   Documentation/devicetree/bindings/misc/aspeed-peci.txt
>>
>> diff --git a/Documentation/devicetree/bindings/misc/aspeed-peci.txt
>> b/Documentation/devicetree/bindings/misc/aspeed-peci.txt
>> new file mode 100644
>> index 000000000000..af950d72a48c
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/misc/aspeed-peci.txt
>> @@ -0,0 +1,52 @@
>> +* ASPEED PECI (Platform Environment Control Interface) misc driver.
>> +
>> +Hardware Interfaces:
>> +- This driver implements support for the ASPEED AST2400/2500 PECI which
>> has the
>> +  following features:
>> +       - Directly connected to APB bus
>> +       - Intel PECI 3.1 compliant (PECI 3.0 for AST2400)
>> +       - Maximum packet length is 256 bytes (Baseline transmission unit)
>> +       - Support up to 8 CPUs and 2 domains per CPU
>> +       - Integrate PECI compliant I/O buffers, can connect to PECI bus
>> directly
>> +       - Transmit buffer 32 bytes and receive buffer 32 bytes
>> +
>> +Required properties:
>> +- compatible: "aspeed,ast2400-peci" or "aspeed,ast2500-peci"
>> +       - aspeed,ast2400-peci: Aspeed AST2400 family PECI control
>> interface
>> +       - aspeed,ast2500-peci: Aspeed AST2500 family PECI control
>> interface
>> +- reg: Should contain PECI registers location and length
>> +- interrupts: Should contain PECI interrupt
>> +
>> +Optional properties:
>> +- msg_timing_nego: Message timing negotiation period
> 
> Typically we use '-' rather than '_' as a separator in property names. I
> notice your example uses '-'; please change the documentation.
> 

Ah, I missed this part. Thanks for your pointing it out.

> Separately, what unit is this property working with? Clock cycles? It's
> not clear what picking any particular value means.
> 
> The two problems apply to the next few properties as well:
> 

Sure, I'll fix all these and will add more details.

>> +       0 ~ 255 (default: 1)
>> +- addr_timing_nego: Address timing negotiation period
>> +       0 ~ 255 (default: 1)
>> +- rd_sampling_point: Read sampling point selection
>> +       0 ~ 15 (default: 8)
> 
>> +- clk_div: Clock divider for 24MHz clock source
>> +       0: Divide by 1   <- default
>> +       1: Divide by 2
>> +       2: Divide by 4
>> +       3: Divide by 8
>> +       4: Divide by 16
>> +       5: Divide by 32
>> +       6: Divide by 64
>> +       7: Divide by 128
> 
> What is the purpose of the clock divider? To derive the peci bus
> frequency? If so, you should instead use the generic 'bus-frequency'
> property, and implement support in the driver to derive the described
> frequency from the upstream clock rate and the value of bus-frequency
> specified in the devicetree node. That is, derive the divisor value and
> program it into the hardware. You should also document the 'clocks' and
> 'clock-names' properties here in order to describe the upstream clock
> 

Yes, right. I totally agree with you. I'll add calculation logic for bus 
clock into driver. Thanks!

>> +- cmd_timeout_ms: Command timeout in units of ms
>> +       1 ~ 60000 (default: 1000)
> 
> This is a contrast to your properties above in the the unit is clear,
> which is good.
> 
>> +
>> +Example:
>> +       peci: peci at 1e78b000 {
>> +               compatible = "aspeed,ast2500-peci", "syscon",
>> "simple-mfd";
> 
> If you need it to be a syscon you should say so in the documentation as
> well as the example. But:
> 
> Do you actually need a syscon here? why? Do we need to share these
> registers across multiple drivers? I'd be surprised if this controller
> fits the syscon description.
> 
> If you want a regmap you can create one inside the driver without
> affecting the devicetree. But I'd also question why you want one - they
> introduce overhead where you probably don't need it.
> 

I simply added a syscon to use syscon_node_to_regmap api but I didn't 
consider the issue you pointed out. I'll remove the syscon and will make 
driver to use devm_regmap_init_mmio instead.

> Cheers,
> 
> Andrew
> 

Thanks a lot for sharing your time on reviewing this. Will address all 
you pointed out.

BR,

Jae

>> +               reg = <0x1e78b000 0x60>;
>> +               reg-io-width = <4>;
>> +               interrupt-controller;
>> +               interrupts = <15>;
>> +               msg-timing-nego = <1>;
>> +               addr-timing-nego = <1>;
>> +               rd-sampling-point = <8>;
>> +               clk-div = <0>;
>> +               cmd-timeout-ms = <1000>;
>> +       };
>> +
>> -- 
>> 2.15.1
>>


More information about the openbmc mailing list