lkml.org 
[lkml]   [2016]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v5 6/7] i2c: designware: enable SLAVE in platform module
    From
    Date
    On 28-Dec-16 17:10, Andy Shevchenko wrote:
    > On Wed, 2016-12-28 at 16:41 +0000, Luis Oliveira wrote:
    >> On 28-Dec-16 16:31, Andy Shevchenko wrote:
    >>> On Wed, 2016-12-28 at 15:53 +0000, Luis Oliveira wrote:
    >>>> On 28-Dec-16 15:44, Andy Shevchenko wrote:
    >>>>> On Wed, 2016-12-28 at 14:43 +0000, Luis Oliveira wrote:
    >>>>>> - Slave mode selected in platform module (devicetree support
    >>>>>> only)
    >>>>>> - Check for ACPI - not supported in SLAVE mode:
    >>>>>> - Changed the ifndef style to the use of ACPI_HANDLE that
    >>>>>> returns
    >>>>>> NULL
    >>>>>> if the device was not enumerated from ACPI namespace.
    >>>>>
    >>>>> I'm not sure what is wrong with ACPI?
    >>>>
    >>>> I dont have a way to test it. Just that.
    >>>
    >>> Okay, can you provide an excerpt to see how it will look like in
    >>> DTS?
    >>
    >> Yes, it looks like this now:
    >>
    >> i2c@0x2000 {
    >> compatible = "snps,designware-i2c";
    >> #address-cells = <1>;
    >> #size-cells = <0>;
    >> reg = <0x2000 0x100>;
    >> clock-frequency = <400000>;
    >> clocks = <&i2cclk>;
    >> interrupts = <0>;
    >>
    >> eeprom@64 {
    >> compatible = "linux,slave-24c02";
    >> reg = <0x40000064>;
    >> };
    >> };
    >
    > +1 to Carlos' comment.

    Agree, I'm on it.

    >
    >>>
    >>>>>> - dev->functionality = I2C_FUNC_10BIT_ADDR |
    >>>>>> DW_IC_DEFAULT_FUNCTIONALITY;
    >>>>>> -
    >>>>>> - i2c_dw_configure_master(pdev);
    >>>>>> + if (ACPI_HANDLE(&pdev->dev) == NULL) {
    >>>>>
    >>>>> I don't think you need this at all.
    >>>>
    >>>> This is to avoid the use of the "ifdef" style I used before.
    >>>
    >>> My point is to drop it completely.
    >>>
    >>>>>
    >>>>>> + device_for_each_child_node(&pdev->dev, child)
    >>>>>> {
    >>>>>
    >>>>> This is resource agnostic.
    >>>>>
    >>>>>> + fwnode_property_read_u32(child,
    >>>>>> "reg",
    >>>>>> &reg);
    >>>>>
    >>>>> This is as well.
    >>>>
    >>>> Are you suggesting I use of_ functions?
    >>>
    >>> Nope. See above.
    >
    > So, ACPI has a property to support slave mode for I2CSerialBus() macro.
    >
    > I would propose to create a helper function in i2c-core.c which will be
    > responsible for mode detection
    >
    > ... i2c_slave_mode_detect()
    > {
    > ...
    > if (IS_BUILTIN(CONFIG_OF) && dev->of_node) {
    > ... (use of_*() here) ...
    > } else if (IS_BUILTIN(CONFIG_ACPI) && ACPI_HANDLE(dev))
    > dev_dbg(..., "ACPI slave is not supported yet\n");
    > ... to master ...
    > } else {
    > ... default to master ...
    > }
    > }
    > EXPORT_...();
    >
    > Make it as a separate patch.
    >

    Oh I see, yes it looks good. I will check it. Thanks

    \
     
     \ /
      Last update: 2016-12-28 19:11    [W:3.100 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site