Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1551939 > unrolled thread
| Started by | Luis Oliveira <Luis.Oliveira@synopsys.com> |
|---|---|
| First post | 2017-01-05 13:20 +0100 |
| Last post | 2017-01-05 13:50 +0100 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH v5 6/7] i2c: designware: enable SLAVE in platform module Luis Oliveira <Luis.Oliveira@synopsys.com> - 2017-01-05 13:20 +0100
Re: [PATCH v5 6/7] i2c: designware: enable SLAVE in platform module Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2017-01-05 13:50 +0100
| From | Luis Oliveira <Luis.Oliveira@synopsys.com> |
|---|---|
| Date | 2017-01-05 13:20 +0100 |
| Subject | Re: [PATCH v5 6/7] i2c: designware: enable SLAVE in platform module |
| Message-ID | <sWfbs-2RN-17@gated-at.bofh.it> |
On 28-Dec-16 18:10, Luis Oliveira wrote:
> 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",
>>>>>>> ®);
>>>>>>
>>>>>> 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
>
Hi Andy,
I implemented a helper function as you proposed and it looks like this:
int i2c_slave_mode_detect(struct device *dev)
{
struct device_node *child;
u32 reg;
if (IS_BUILTIN(CONFIG_OF) && dev->of_node) {
for_each_child_of_node(dev->of_node, child) {
of_property_read_u32(child, "reg", ®);
if (reg & I2C_OWN_SLAVE_ADDRESS)
return 1;
}
} else if (IS_BUILTIN(CONFIG_ACPI) && ACPI_HANDLE(dev))
dev_dbg(dev, "ACPI slave is not supported yet\n");
else
return 0;
return 0;
}
Before I submit the patch to the i2c-core.c I wonder if I could have some
comment on the implementation.
Thanks,
Luis
[toc] | [next] | [standalone]
| From | Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
|---|---|
| Date | 2017-01-05 13:50 +0100 |
| Message-ID | <sWfEu-31R-3@gated-at.bofh.it> |
| In reply to | #1551939 |
On Thu, 2017-01-05 at 12:13 +0000, Luis Oliveira wrote:
> On 28-Dec-16 18:10, Luis Oliveira wrote:
> > 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:
> > > 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
> >
>
> Hi Andy,
>
> I implemented a helper function as you proposed and it looks like
> this:
>
> int i2c_slave_mode_detect(struct device *dev)
> {
> struct device_node *child;
> u32 reg;
>
> if (IS_BUILTIN(CONFIG_OF) && dev->of_node) {
> for_each_child_of_node(dev->of_node, child) {
> of_property_read_u32(child, "reg", ®);
> if (reg & I2C_OWN_SLAVE_ADDRESS)
> return 1;
> }
> } else if (IS_BUILTIN(CONFIG_ACPI) && ACPI_HANDLE(dev))
> dev_dbg(dev, "ACPI slave is not supported yet\n");
Curly braces here as well.
> else
> return 0;
For now this is not needed
> return 0;
> }
>
> Before I submit the patch to the i2c-core.c I wonder if I could have
> some
> comment on the implementation.
Glad you did it. See above. Otherwise looks good to me.
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web