From: Faiz Abbas <hidden> Date: 2018-06-06 06:09:03
The following patches add dts and sysconfig support
for MCAN on TI's dra76 SOCs
The patches depend on the following series:
https://patchwork.kernel.org/patch/10221105/
Changes in v3:
1. Added reset functionality to the ti-sysc
driver. This enables me to drop the hwmod
data patch as everything is being done in dt.
2. Dropped ti,hwmods from the dts nodes
3. Fixed the unit address of target-module
and mcan
4. Removed the status="disabled" in dtsi
followed by status="okay" in dts.
Changes in v2:
1. Added Support for mcan in the ti-sysc driver
Also added the target-module node for the same
2. Added clkctrl data for mcan clocks
Faiz Abbas (4):
clk: ti: dra7: Add clkctrl clock data for the mcan clocks
bus: ti-sysc: Add support for using ti-sysc for MCAN on dra76x
bus: ti-sysc: Add support for software reset
ARM: dts: Add generic interconnect target module node for MCAN
Franklin S Cooper Jr (1):
ARM: dts: dra76x: Add MCAN node
Lokesh Vutla (1):
ARM: dts: dra762: Add MCAN clock support
.../devicetree/bindings/bus/ti-sysc.txt | 1 +
arch/arm/boot/dts/dra76-evm.dts | 6 ++
arch/arm/boot/dts/dra76x.dtsi | 65 +++++++++++++++++++
drivers/bus/ti-sysc.c | 58 +++++++++++++++++
drivers/clk/ti/clk-7xx.c | 1 +
include/dt-bindings/bus/ti-sysc.h | 2 +
include/dt-bindings/clock/dra7.h | 1 +
include/linux/platform_data/ti-sysc.h | 1 +
8 files changed, 135 insertions(+)
--
2.17.0
From: Faiz Abbas <hidden> Date: 2018-06-06 06:07:32
From: Lokesh Vutla <redacted>
MCAN is clocked by H14 divider of DPLL_GMAC. Unlike other
DPLL dividers this DPLL_GMAC H14 divider is controlled by
control module. Adding support for these clocks.
Signed-off-by: Lokesh Vutla <redacted>
Signed-off-by: Faiz Abbas <redacted>
---
arch/arm/boot/dts/dra76x.dtsi | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
From: Faiz Abbas <hidden> Date: 2018-06-06 06:07:36
The dra76x MCAN generic interconnect module has a its own
format for the bits in the control registers.
Therefore add a new module type, new regbits and new capabilities
specific to the MCAN module.
Acked-by: Rob Herring <robh@kernel.org>
CC: Tony Lindgren <tony@atomide.com>
Signed-off-by: Faiz Abbas <redacted>
---
.../devicetree/bindings/bus/ti-sysc.txt | 1 +
drivers/bus/ti-sysc.c | 18 ++++++++++++++++++
include/dt-bindings/bus/ti-sysc.h | 2 ++
include/linux/platform_data/ti-sysc.h | 1 +
4 files changed, 22 insertions(+)
@@ -36,6 +36,7 @@ Required standard properties: "ti,sysc-omap-aes" "ti,sysc-mcasp" "ti,sysc-usb-host-fs"+ "ti,sysc-dra7-mcan" - reg shall have register areas implemented for the interconnect target module in question such as revision, sysc and syss
From: Faiz Abbas <hidden> Date: 2018-06-06 06:07:39
Add clkctrl data for the m_can clocks and register it within the
clkctrl driver
CC: Tero Kristo <redacted>
Signed-off-by: Faiz Abbas <redacted>
---
drivers/clk/ti/clk-7xx.c | 1 +
include/dt-bindings/clock/dra7.h | 1 +
2 files changed, 2 insertions(+)
From: Rob Herring <robh@kernel.org> Date: 2018-06-11 18:22:51
On Wed, Jun 06, 2018 at 11:38:22AM +0530, Faiz Abbas wrote:
Add clkctrl data for the m_can clocks and register it within the
clkctrl driver
CC: Tero Kristo <redacted>
Signed-off-by: Faiz Abbas <redacted>
---
drivers/clk/ti/clk-7xx.c | 1 +
include/dt-bindings/clock/dra7.h | 1 +
From: Faiz Abbas <hidden> Date: 2018-06-06 06:07:55
The ti-sysc driver provides support for manipulating the idle modes
and interconnect level resets.
Add the generic interconnect target module node for MCAN to support
the same.
CC: Tony Lindgren <tony@atomide.com>
Signed-off-by: Faiz Abbas <redacted>
---
arch/arm/boot/dts/dra76x.dtsi | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
From: Faiz Abbas <hidden> Date: 2018-06-06 06:07:57
Add support for the software reset of a target interconnect
module using its sysconfig and sysstatus registers.
Signed-off-by: Faiz Abbas <redacted>
---
drivers/bus/ti-sysc.c | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
@@ -700,6 +708,26 @@ static void sysc_init_revision_quirks(struct sysc *ddata)}}+staticintsysc_reset(structsysc*ddata)+{+intoffset=ddata->offsets[SYSC_SYSCONFIG];+intval=sysc_read(ddata,offset);++val|=(0x1<<ddata->cap->regbits->srst_shift);+sysc_write(ddata,offset,val);++/* Poll on reset status */+if(ddata->cfg.quirks&SYSC_QUIRK_RESET_STATUS){+offset=ddata->offsets[SYSC_SYSSTATUS];++returnreadl_poll_timeout(ddata->module_va+offset,val,+(val&ddata->cfg.syss_mask)==0x0,+100,MAX_MODULE_SOFTRESET_WAIT);+}++return0;+}+/* At this point the module is configured enough to read the revision */staticintsysc_init_module(structsysc*ddata){
@@ -716,6 +744,18 @@ static int sysc_init_module(struct sysc *ddata)return0;}++if(!(ddata->cfg.quirks&SYSC_QUIRK_NO_RESET_ON_INIT)&&+!ddata->legacy_mode){+error=sysc_reset(ddata);+if(error){+dev_err(ddata->dev,"Reset failed with %d\n",error);+pm_runtime_put_sync(ddata->dev);++returnerror;+}+}+ddata->revision=sysc_read_revision(ddata);pm_runtime_put_sync(ddata->dev);
From: Tony Lindgren <tony@atomide.com> Date: 2018-06-07 07:35:37
* Faiz Abbas [off-list ref] [180606 06:14]:
+static int sysc_reset(struct sysc *ddata)
+{
+ int offset = ddata->offsets[SYSC_SYSCONFIG];
+ int val = sysc_read(ddata, offset);
+
+ val |= (0x1 << ddata->cap->regbits->srst_shift);
+ sysc_write(ddata, offset, val);
+
+ /* Poll on reset status */
+ if (ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS) {
+ offset = ddata->offsets[SYSC_SYSSTATUS];
+
+ return readl_poll_timeout(ddata->module_va + offset, val,
+ (val & ddata->cfg.syss_mask) == 0x0,
+ 100, MAX_MODULE_SOFTRESET_WAIT);
+ }
+
+ return 0;
+}
I wonder if we should also add SYSS_QUIRK_RESET_STATUS in
addition to SYSC_QUIRK_RESET status to make it easy to
read the right register?
Then we can add support for SYSC_QUIRK_RESET_STATUS later on
when tested and return error for now.
Regards,
Tony
From: Faiz Abbas <hidden> Date: 2018-06-07 10:22:53
Hi,
On Thursday 07 June 2018 01:05 PM, Tony Lindgren wrote:
* Faiz Abbas [off-list ref] [180606 06:14]:
quoted
+static int sysc_reset(struct sysc *ddata)
+{
+ int offset = ddata->offsets[SYSC_SYSCONFIG];
+ int val = sysc_read(ddata, offset);
+
+ val |= (0x1 << ddata->cap->regbits->srst_shift);
+ sysc_write(ddata, offset, val);
+
+ /* Poll on reset status */
+ if (ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS) {
+ offset = ddata->offsets[SYSC_SYSSTATUS];
+
+ return readl_poll_timeout(ddata->module_va + offset, val,
+ (val & ddata->cfg.syss_mask) == 0x0,
+ 100, MAX_MODULE_SOFTRESET_WAIT);
+ }
+
+ return 0;
+}
I wonder if we should also add SYSS_QUIRK_RESET_STATUS in
addition to SYSC_QUIRK_RESET status to make it easy to
read the right register?
I assumed SYSC_QUIRK is the prefix to indicate the ti-sysc driver not
the register. Are there layouts in which the reset status bit is in the
sysconfig register rather than the sysstatus register?
Thanks,
Faiz
From: Tony Lindgren <tony@atomide.com> Date: 2018-06-08 06:22:07
* Faiz Abbas [off-list ref] [180607 10:24]:
Hi,
On Thursday 07 June 2018 01:05 PM, Tony Lindgren wrote:
quoted
* Faiz Abbas [off-list ref] [180606 06:14]:
quoted
+static int sysc_reset(struct sysc *ddata)
+{
+ int offset = ddata->offsets[SYSC_SYSCONFIG];
+ int val = sysc_read(ddata, offset);
+
+ val |= (0x1 << ddata->cap->regbits->srst_shift);
+ sysc_write(ddata, offset, val);
+
+ /* Poll on reset status */
+ if (ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS) {
+ offset = ddata->offsets[SYSC_SYSSTATUS];
+
+ return readl_poll_timeout(ddata->module_va + offset, val,
+ (val & ddata->cfg.syss_mask) == 0x0,
+ 100, MAX_MODULE_SOFTRESET_WAIT);
+ }
+
+ return 0;
+}
I wonder if we should also add SYSS_QUIRK_RESET_STATUS in
addition to SYSC_QUIRK_RESET status to make it easy to
read the right register?
I assumed SYSC_QUIRK is the prefix to indicate the ti-sysc driver not
the register. Are there layouts in which the reset status bit is in the
sysconfig register rather than the sysstatus register?
Yes we can have reset status bit in either syss or syssconfig register.
We detect that in sysc_init_syss_mask() but we should also set something
at that point to make it clear which reset to use. But as we don't need
the quirk flag, it's probably set a function pointer after the detection.
So how about let's have two functions sysc_reset() and sysc_syss_reset()
and then we can implement sysc_syss_reset() in a separate patch after
testing it when we have a non-platform data using example for
sysc_syss_reset().
Regards,
Tony
From: Faiz Abbas <hidden> Date: 2018-06-11 06:07:38
Hi Tony,
On Friday 08 June 2018 11:51 AM, Tony Lindgren wrote:
* Faiz Abbas [off-list ref] [180607 10:24]:
quoted
Hi,
On Thursday 07 June 2018 01:05 PM, Tony Lindgren wrote:
quoted
* Faiz Abbas [off-list ref] [180606 06:14]:
quoted
+static int sysc_reset(struct sysc *ddata)
+{
+ int offset = ddata->offsets[SYSC_SYSCONFIG];
+ int val = sysc_read(ddata, offset);
+
+ val |= (0x1 << ddata->cap->regbits->srst_shift);
+ sysc_write(ddata, offset, val);
+
+ /* Poll on reset status */
+ if (ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS) {
+ offset = ddata->offsets[SYSC_SYSSTATUS];
+
+ return readl_poll_timeout(ddata->module_va + offset, val,
+ (val & ddata->cfg.syss_mask) == 0x0,
+ 100, MAX_MODULE_SOFTRESET_WAIT);
+ }
+
+ return 0;
+}
I wonder if we should also add SYSS_QUIRK_RESET_STATUS in
addition to SYSC_QUIRK_RESET status to make it easy to
read the right register?
I assumed SYSC_QUIRK is the prefix to indicate the ti-sysc driver not
the register. Are there layouts in which the reset status bit is in the
sysconfig register rather than the sysstatus register?
Yes we can have reset status bit in either syss or syssconfig register.
You mean sysstatus and sysconfig right?
We detect that in sysc_init_syss_mask() but we should also set something
at that point to make it clear which reset to use. But as we don't need
the quirk flag, it's probably set a function pointer after the detection.
So how about let's have two functions sysc_reset() and sysc_syss_reset()
and then we can implement sysc_syss_reset() in a separate patch after
testing it when we have a non-platform data using example for
sysc_syss_reset().
Shouldn't the function I add be called sysc_syss_reset()? The reset
status bit is in the sysstatus.
Thanks,
Faiz
From: Tony Lindgren <tony@atomide.com> Date: 2018-06-11 06:10:07
* Faiz Abbas [off-list ref] [180611 06:09]:
Hi Tony,
On Friday 08 June 2018 11:51 AM, Tony Lindgren wrote:
quoted
* Faiz Abbas [off-list ref] [180607 10:24]:
quoted
Hi,
On Thursday 07 June 2018 01:05 PM, Tony Lindgren wrote:
quoted
* Faiz Abbas [off-list ref] [180606 06:14]:
quoted
+static int sysc_reset(struct sysc *ddata)
+{
+ int offset = ddata->offsets[SYSC_SYSCONFIG];
+ int val = sysc_read(ddata, offset);
+
+ val |= (0x1 << ddata->cap->regbits->srst_shift);
+ sysc_write(ddata, offset, val);
+
+ /* Poll on reset status */
+ if (ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS) {
+ offset = ddata->offsets[SYSC_SYSSTATUS];
+
+ return readl_poll_timeout(ddata->module_va + offset, val,
+ (val & ddata->cfg.syss_mask) == 0x0,
+ 100, MAX_MODULE_SOFTRESET_WAIT);
+ }
+
+ return 0;
+}
I wonder if we should also add SYSS_QUIRK_RESET_STATUS in
addition to SYSC_QUIRK_RESET status to make it easy to
read the right register?
I assumed SYSC_QUIRK is the prefix to indicate the ti-sysc driver not
the register. Are there layouts in which the reset status bit is in the
sysconfig register rather than the sysstatus register?
Yes we can have reset status bit in either syss or syssconfig register.
You mean sysstatus and sysconfig right?
Yup.
quoted
We detect that in sysc_init_syss_mask() but we should also set something
at that point to make it clear which reset to use. But as we don't need
the quirk flag, it's probably set a function pointer after the detection.
So how about let's have two functions sysc_reset() and sysc_syss_reset()
and then we can implement sysc_syss_reset() in a separate patch after
testing it when we have a non-platform data using example for
sysc_syss_reset().
Shouldn't the function I add be called sysc_syss_reset()? The reset
status bit is in the sysstatus.
From: Faiz Abbas <hidden> Date: 2018-06-11 06:26:54
On Monday 11 June 2018 11:39 AM, Tony Lindgren wrote:
* Faiz Abbas [off-list ref] [180611 06:09]:
quoted
Hi Tony,
On Friday 08 June 2018 11:51 AM, Tony Lindgren wrote:
quoted
* Faiz Abbas [off-list ref] [180607 10:24]:
quoted
Hi,
On Thursday 07 June 2018 01:05 PM, Tony Lindgren wrote:
quoted
* Faiz Abbas [off-list ref] [180606 06:14]:
quoted
+static int sysc_reset(struct sysc *ddata)
+{
+ int offset = ddata->offsets[SYSC_SYSCONFIG];
+ int val = sysc_read(ddata, offset);
+
+ val |= (0x1 << ddata->cap->regbits->srst_shift);
+ sysc_write(ddata, offset, val);
+
+ /* Poll on reset status */
+ if (ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS) {
+ offset = ddata->offsets[SYSC_SYSSTATUS];
+
+ return readl_poll_timeout(ddata->module_va + offset, val,
+ (val & ddata->cfg.syss_mask) == 0x0,
+ 100, MAX_MODULE_SOFTRESET_WAIT);
+ }
+
+ return 0;
+}
I wonder if we should also add SYSS_QUIRK_RESET_STATUS in
addition to SYSC_QUIRK_RESET status to make it easy to
read the right register?
I assumed SYSC_QUIRK is the prefix to indicate the ti-sysc driver not
the register. Are there layouts in which the reset status bit is in the
sysconfig register rather than the sysstatus register?
Yes we can have reset status bit in either syss or syssconfig register.
You mean sysstatus and sysconfig right?
Yup.
quoted
quoted
We detect that in sysc_init_syss_mask() but we should also set something
at that point to make it clear which reset to use. But as we don't need
the quirk flag, it's probably set a function pointer after the detection.
So how about let's have two functions sysc_reset() and sysc_syss_reset()
and then we can implement sysc_syss_reset() in a separate patch after
testing it when we have a non-platform data using example for
sysc_syss_reset().
Shouldn't the function I add be called sysc_syss_reset()? The reset
status bit is in the sysstatus.
Yes
Great. I thought I completely misunderstood you. But I don't see what
adding another function will accomplish. A QUIRK flag used in the same
function would work well enough.
Regards,
Faiz
From: Tony Lindgren <tony@atomide.com> Date: 2018-06-11 06:29:14
* Faiz Abbas [off-list ref] [180611 06:28]:
Great. I thought I completely misunderstood you. But I don't see what
adding another function will accomplish. A QUIRK flag used in the same
function would work well enough.
Fine with me as long as the function stays simple for both
syss and sysc reset.
Regards,
Tony
From: Faiz Abbas <hidden> Date: 2018-06-11 06:46:17
Hi,
On Monday 11 June 2018 11:59 AM, Tony Lindgren wrote:
* Faiz Abbas [off-list ref] [180611 06:28]:
quoted
Great. I thought I completely misunderstood you. But I don't see what
adding another function will accomplish. A QUIRK flag used in the same
function would work well enough>
Fine with me as long as the function stays simple for both
syss and sysc reset.
In general a reset status bit being in sysstatus is the norm and it
being in sysconfig should be the "quirk" for which a flag needs to be
added. What do you think?
As an aside, naming bitshifts by the name of the platform they were
originally added in seems weird. There should be some generic mask
saying "soft reset is the 0th bit". Currently I am using
SYSC_OMAP4_SOFTRESET for a dra76x module. I guess it depends on how many
different sysconfig types we have.
Thanks,
Faiz
From: Tony Lindgren <tony@atomide.com> Date: 2018-06-11 07:03:40
* Faiz Abbas [off-list ref] [180611 06:48]:
Hi,
On Monday 11 June 2018 11:59 AM, Tony Lindgren wrote:
quoted
* Faiz Abbas [off-list ref] [180611 06:28]:
quoted
Great. I thought I completely misunderstood you. But I don't see what
adding another function will accomplish. A QUIRK flag used in the same
function would work well enough>
Fine with me as long as the function stays simple for both
syss and sysc reset.
In general a reset status bit being in sysstatus is the norm and it
being in sysconfig should be the "quirk" for which a flag needs to be
added. What do you think?
Sure makes sense to me.
As an aside, naming bitshifts by the name of the platform they were
originally added in seems weird. There should be some generic mask
saying "soft reset is the 0th bit". Currently I am using
SYSC_OMAP4_SOFTRESET for a dra76x module. I guess it depends on how many
different sysconfig types we have.
Sure we could have a macro for that.
Regards,
Tony
From: Tony Lindgren <tony@atomide.com> Date: 2018-07-03 07:07:54
* Tony Lindgren [off-list ref] [180611 07:06]:
* Faiz Abbas [off-list ref] [180611 06:48]:
quoted
Hi,
On Monday 11 June 2018 11:59 AM, Tony Lindgren wrote:
quoted
* Faiz Abbas [off-list ref] [180611 06:28]:
quoted
Great. I thought I completely misunderstood you. But I don't see what
adding another function will accomplish. A QUIRK flag used in the same
function would work well enough>
Fine with me as long as the function stays simple for both
syss and sysc reset.
In general a reset status bit being in sysstatus is the norm and it
being in sysconfig should be the "quirk" for which a flag needs to be
added. What do you think?
Sure makes sense to me.
quoted
As an aside, naming bitshifts by the name of the platform they were
originally added in seems weird. There should be some generic mask
saying "soft reset is the 0th bit". Currently I am using
SYSC_OMAP4_SOFTRESET for a dra76x module. I guess it depends on how many
different sysconfig types we have.
Sure we could have a macro for that.
So what's the conclusion on this one? Are you going to do one
more version of the ti-sysc driver patch?
Regards,
Tony
From: Faiz Abbas <hidden> Date: 2018-07-03 07:28:30
Hi,
On Tuesday 03 July 2018 12:37 PM, Tony Lindgren wrote:
* Tony Lindgren [off-list ref] [180611 07:06]:
quoted
* Faiz Abbas [off-list ref] [180611 06:48]:
quoted
Hi,
On Monday 11 June 2018 11:59 AM, Tony Lindgren wrote:
quoted
* Faiz Abbas [off-list ref] [180611 06:28]:
quoted
Great. I thought I completely misunderstood you. But I don't see what
adding another function will accomplish. A QUIRK flag used in the same
function would work well enough>
Fine with me as long as the function stays simple for both
syss and sysc reset.
In general a reset status bit being in sysstatus is the norm and it
being in sysconfig should be the "quirk" for which a flag needs to be
added. What do you think?
Sure makes sense to me.
quoted
As an aside, naming bitshifts by the name of the platform they were
originally added in seems weird. There should be some generic mask
saying "soft reset is the 0th bit". Currently I am using
SYSC_OMAP4_SOFTRESET for a dra76x module. I guess it depends on how many
different sysconfig types we have.
Sure we could have a macro for that.
So what's the conclusion on this one? Are you going to do one
more version of the ti-sysc driver patch?
Yes. I have just now been able to get back to this. Will post a v4 by
tomorrow.
Thanks,
Faiz
From: Tony Lindgren <tony@atomide.com> Date: 2018-07-03 07:31:48
* Faiz Abbas [off-list ref] [180703 07:31]:
Hi,
On Tuesday 03 July 2018 12:37 PM, Tony Lindgren wrote:
quoted
* Tony Lindgren [off-list ref] [180611 07:06]:
quoted
* Faiz Abbas [off-list ref] [180611 06:48]:
quoted
Hi,
On Monday 11 June 2018 11:59 AM, Tony Lindgren wrote:
quoted
* Faiz Abbas [off-list ref] [180611 06:28]:
quoted
Great. I thought I completely misunderstood you. But I don't see what
adding another function will accomplish. A QUIRK flag used in the same
function would work well enough>
Fine with me as long as the function stays simple for both
syss and sysc reset.
In general a reset status bit being in sysstatus is the norm and it
being in sysconfig should be the "quirk" for which a flag needs to be
added. What do you think?
Sure makes sense to me.
quoted
As an aside, naming bitshifts by the name of the platform they were
originally added in seems weird. There should be some generic mask
saying "soft reset is the 0th bit". Currently I am using
SYSC_OMAP4_SOFTRESET for a dra76x module. I guess it depends on how many
different sysconfig types we have.
Sure we could have a macro for that.
So what's the conclusion on this one? Are you going to do one
more version of the ti-sysc driver patch?
Yes. I have just now been able to get back to this. Will post a v4 by
tomorrow.
From: Faiz Abbas <hidden> Date: 2018-07-04 13:35:21
Hi,
On Tuesday 03 July 2018 01:01 PM, Tony Lindgren wrote:
* Faiz Abbas [off-list ref] [180703 07:31]:
quoted
Hi,
On Tuesday 03 July 2018 12:37 PM, Tony Lindgren wrote:
quoted
* Tony Lindgren [off-list ref] [180611 07:06]:
quoted
* Faiz Abbas [off-list ref] [180611 06:48]:
quoted
Hi,
On Monday 11 June 2018 11:59 AM, Tony Lindgren wrote:
quoted
* Faiz Abbas [off-list ref] [180611 06:28]:
quoted
Great. I thought I completely misunderstood you. But I don't see what
adding another function will accomplish. A QUIRK flag used in the same
function would work well enough>
Fine with me as long as the function stays simple for both
syss and sysc reset.
In general a reset status bit being in sysstatus is the norm and it
being in sysconfig should be the "quirk" for which a flag needs to be
added. What do you think?
Sure makes sense to me.
quoted
As an aside, naming bitshifts by the name of the platform they were
originally added in seems weird. There should be some generic mask
saying "soft reset is the 0th bit". Currently I am using
SYSC_OMAP4_SOFTRESET for a dra76x module. I guess it depends on how many
different sysconfig types we have.
Sure we could have a macro for that.
So what's the conclusion on this one? Are you going to do one
more version of the ti-sysc driver patch?
Yes. I have just now been able to get back to this. Will post a v4 by
tomorrow.
OK thanks!
After taking a second look at this thread, I don't see anything big to
be modified.
We both agree that "reset status bit in sysconfig register" is the quirk
case which can be added once such an IP is discovered in ti-sysc.
All I need to change is SYSC_OMAP4_SOFTRESET to SYSC_SOFT_RESET_SHIFT_0
for better readability and rebase it to the latest mainline.
Do reply if you differ on the above.
Thanks,
Faiz
From: Tony Lindgren <tony@atomide.com> Date: 2018-07-05 05:55:15
* Faiz Abbas [off-list ref] [180704 13:37]:
After taking a second look at this thread, I don't see anything big to
be modified.
We both agree that "reset status bit in sysconfig register" is the quirk
case which can be added once such an IP is discovered in ti-sysc.
Yes agreed.
All I need to change is SYSC_OMAP4_SOFTRESET to SYSC_SOFT_RESET_SHIFT_0
for better readability and rebase it to the latest mainline.
Let's not change SYSC_OMAP4_SOFTRESET as only the ti-sysc
driver needs to know that and it can be set based on the
compatible.
How about replace ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS
test with just ddata->cfg.syss_mask test in your sysc_reset()?
We still need to set SYSC_QUIRK_RESET_STATUS too for pdata
callbacks.
Regards,
Tony
From: Faiz Abbas <hidden> Date: 2018-07-05 06:52:26
Hi,
On Thursday 05 July 2018 11:25 AM, Tony Lindgren wrote:
* Faiz Abbas [off-list ref] [180704 13:37]:
quoted
After taking a second look at this thread, I don't see anything big to
be modified.
We both agree that "reset status bit in sysconfig register" is the quirk
case which can be added once such an IP is discovered in ti-sysc.
Yes agreed.
quoted
All I need to change is SYSC_OMAP4_SOFTRESET to SYSC_SOFT_RESET_SHIFT_0
for better readability and rebase it to the latest mainline.
Let's not change SYSC_OMAP4_SOFTRESET as only the ti-sysc
driver needs to know that and it can be set based on the
compatible.
Ok.
How about replace ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS
test with just ddata->cfg.syss_mask test in your sysc_reset()?
We still need to set SYSC_QUIRK_RESET_STATUS too for pdata
callbacks.
Sure. Do reset in ti-sysc only if dt has the correct syss_mask.
Rebasing and posting v4 soon.
Thanks,
Faiz
From: Faiz Abbas <hidden> Date: 2018-06-06 06:08:09
From: Franklin S Cooper Jr <redacted>
Add support for the MCAN peripheral which supports both classic
CAN messages along with the new CAN-FD message.
Add MCAN node to evm and enable it with a maximum datarate of 5 mbps
Signed-off-by: Faiz Abbas <redacted>
---
arch/arm/boot/dts/dra76-evm.dts | 6 ++++++
arch/arm/boot/dts/dra76x.dtsi | 13 +++++++++++++
2 files changed, 19 insertions(+)
From: Tony Lindgren <tony@atomide.com> Date: 2018-06-06 10:09:43
* Faiz Abbas [off-list ref] [180606 06:09]:
The following patches add dts and sysconfig support
for MCAN on TI's dra76 SOCs
The patches depend on the following series:
https://patchwork.kernel.org/patch/10221105/
Changes in v3:
1. Added reset functionality to the ti-sysc
driver. This enables me to drop the hwmod
data patch as everything is being done in dt.
2. Dropped ti,hwmods from the dts nodes
Cool good to hear that works :)
4. Removed the status="disabled" in dtsi
followed by status="okay" in dts.
Hmm okay is the default and is not needed. I did not notice
okay in this set based on a quick glance so maybe you already
dropped it?
Regards,
Tony
From: Faiz Abbas <hidden> Date: 2018-06-06 10:12:52
Hi,
On Wednesday 06 June 2018 03:39 PM, Tony Lindgren wrote:
* Faiz Abbas [off-list ref] [180606 06:09]:
quoted
The following patches add dts and sysconfig support
for MCAN on TI's dra76 SOCs
The patches depend on the following series:
https://patchwork.kernel.org/patch/10221105/
Changes in v3:
1. Added reset functionality to the ti-sysc
driver. This enables me to drop the hwmod
data patch as everything is being done in dt.
2. Dropped ti,hwmods from the dts nodes
Cool good to hear that works :)
quoted
4. Removed the status="disabled" in dtsi
followed by status="okay" in dts.
Hmm okay is the default and is not needed. I did not notice
okay in this set based on a quick glance so maybe you already
dropped it?
I guess that wasn't clear. I meant to say I have dropped both
status=disabled and status=okay because okay is default.
Thanks,
Faiz