2.2.18 ide access warps time, stalls serial, slows MIDI, mouse

2000-12-26 Thread J.D.

I've noticed a possible problem in Linux 2.2.18 relating to a
CD-R drive connected to the secondary ide port.  I'm not certain
whether the problem cause is in the kernel software, in the
hardware, or in a combination thereof.  Although I've found a
way to bypass the problem, I'm including a description here for
anyone who wishes to better document the issue or create a more
robust kernel.

While the IDE CD-R drive works perfectly in and of itself,
continuous access to the drive degrades the operation of other
system tasks.  Pointer movement with XFree86 4.0.1 or gpm
becomes noticeably choppy, MIDI music playback under the ALSA
drivers (0.5.10) progresses in slow motion, and network access
through an external modem connected to a serial port all but
ceases to function.

Additional investigation also revealed that the system's notion
of time slows down.  For example, during continuous read access
from the IDE CD-R drive, a 55 second piece of MIDI music is
stretched out to nearly a minute and a half.  While "time"
consistently reports about 57 elapsed real seconds, manually
timing the MIDI playback yielded the following repeatable
results at various processor speeds:
  500 MHz: 86 seconds
  650 MHz: 85 seconds
  750 MHz: 83 seconds
Likewise, repeated application of "date" shows that system time
progresses slower than real time.

With no CD-R access, "time" reports about 55 elapsed real 
seconds for the 55 second MIDI playback test, and a stopwatch
confirms this time.  System time as reported by "date" also
advances correctly.

The problem appears whether using the CD-R drive for continuous
reading (at ~3 MB per second) or writing (at ~600 KB per
second).  Trying "ide-cd" for read access instead of "ide-scsi"
shows the same problem.

The CD-R drive is wired as the master on the secondary IDE port,
with an ATAPI Zip drive wired as the slave, with nothing
connected to the primary IDE port.  Access to the Zip drive
(continuous read at ~700 KB per second) does not cause the
problem, and removing the Zip drive from the system does not
offer a remedy.  All SCSI drives accessed through the Symbios
8751 SCSI adapter work fine with no side effects.  

The problem disappears when the wiring for the CD-R drive is
switched from the secondary IDE port to the primary IDE port.

The compiler version used to build the 2.2.18 kernel reads:
  gcc version 2.95.2 2220 (Debian GNU/Linux) 
Double checking by building the same kernel with gcc version
2.7.2.3 again demonstrates the same behavior.


Mainboard/Processor: ABit KT7 / 650 MHz Athlon (model 4)


"cat /usr/src/linux/.config | grep IDE | grep =":
CONFIG_BLK_DEV_IDE=y
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_BLK_DEV_IDESCSI=y
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_BLK_DEV_IDEDMA=y
CONFIG_IDEDMA_AUTO=y
CONFIG_PARIDE_PARPORT=y
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_SELECT=y
CONFIG_VIDEO_SELECT=y


"cat /proc/scsi/scsi":
Attached devices: 
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: FUJITSU  Model: MAB3045SCRev: 0108
  Type:   Direct-AccessANSI SCSI revision: 02
Host: scsi0 Channel: 00 Id: 01 Lun: 00
  Vendor: FUJITSU  Model: MAB3045SCRev: 0108
  Type:   Direct-AccessANSI SCSI revision: 02
Host: scsi0 Channel: 00 Id: 03 Lun: 00
  Vendor: PLEXTOR  Model: CD-ROM PX-20TS   Rev: 1.00
  Type:   CD-ROM   ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: IOMEGA   Model: ZIP 100  Rev: 24.D
  Type:   Direct-AccessANSI SCSI revision: 
Host: scsi1 Channel: 00 Id: 01 Lun: 00
  Vendor: PLEXTOR  Model: CD-R   PX-W8432T Rev: 1.07
  Type:   CD-ROM   ANSI SCSI revision: 02


Regards,

- John
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



a linux qos mailing list

2001-01-15 Thread J.D. Hollis

Is there a linux qos mailing list?

thanks,
j.d.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



class handles

2001-01-19 Thread J.D. Hollis

I've been working on automatic assignment of unique class handles inside of
a system call.  I came across the function qdisc_alloc_handle in
net/sch_api.c, and I tried to use that.  it didn't work, and I'm sure I'm
missing something obvious.  I don't think I clearly understand how handles
are used in the kernel.  could someone explain to me how they work?  I've
read the source code and the comments, but I'm still not clear on just how
it all fits together.  thanks.

j.d.

p.s. could you please cc me, as I'm not subscribed to linux-kernel at the
moment.

---
J.D. Hollis ([EMAIL PROTECTED])

"That which is overdesigned, too highly specific, anticipates outcome; the
anticipation of outcome guarantees, if not failure, the absence of grace." -
`All Tomorrow's Parties', William Gibson

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



linux-2.4.0test10

2000-11-07 Thread J.D. Hollis

hey.  I'm having some strange memory problems with the 2.4 kernel.  I first
noticed in linux-2.4.0test9 (the first 2.4 kernel I installed and that I
installed about a week before 2.4.0test10 came out) that a little while
after I boot my system, my hard drive begins to seek rapidly for no apparent
reason.  after the drive stopped seeking, out of curiosity I pulled up gtop
and noticed that a sizeable amount of my 256MB of physical memory had filled
up with what gtop labelled 'Other.'  upon closer examination, all of the
processes running on my machine were only claiming about 85MB of RAM.  this
got my attention because my total RAM usage was sitting around 235MB of
physical RAM.  now, to be perfectly honest, I'm kinda curious about what's
happening with that 150MB of RAM.  of course my memory usage doesn't stay
static, but it never goes much below 235MB out of 256MB, and often spikes,
resorting to swap space.  my box is a Gateway 900MHz Athlon with 256MB of
RAM.  I'm running Redhat 6.0 (roughly, although I've done various upgrades).
if anyone needs something more specific (version numbers, detailed hardware
specs), I'll be happy to dig it up for you.  I'm not really sure what's
wrong, so I don't know what system details to include.  oh, and once I got
gtop open while the hard drive was seeking and it showed kflushd was taking
up 95% of processor, which I suppose means that it was responsible for the
strange hard drive (and possibly memory) behavior.  hope this is helpful.

cheers,
j.d.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



Re: linux-2.4.0test10

2000-11-07 Thread J.D. Hollis

a quick correction: I'm running Redhat 7.0 with some updates.  sorry
about that.

j.d.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



major problem with linux-2.4.0test10

2000-11-08 Thread J.D. Hollis

I've been having a problem with memory since 2.4.0test9...for some reason,
shortly after my system boots, my hard drive begins to seek rapidly for no
apparent reason, and suddenly about 150MB of my 256MB RAM is filled up with
something gtop labels 'Other.'  whatever's filling my memory isn't attached
to any process.   the one time I managed to get gtop open while the hard
drive was seeking, I noticed that kflushd was using about 98% of my
processor (an Athlon 900MHz).  I'm running Redhat 7.0 (although I have no
idea whether that makes a difference).

regards,
j.d.

---
J.D. Hollis ([EMAIL PROTECTED])

"That which is overdesigned, too highly specific, anticipates outcome; the
anticipation of outcome guarantees, if not failure, the absence of grace." -
`All Tomorrow's Parties', William Gibson

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



Developing Linux-compatible Ethernet hardware

2001-03-20 Thread J.D. Bakker

Hi all,

I need a Fast Ethernet chip for an Open Hardware PCI board I'm 
working on. Of course said chip has to be available in small 
quantities (and not just attached to a NIC), and well supported by 
Linux. Other 'nice but not crucial' properties would be:

- Gigabit Ethernet support
- Integrated PHY
- 66MHz PCI compliant
- Multiple ports

As it stands I'm thinking about using the Intel 82559ER (which lacks 
Gig Enet and 66MHz PCI), but I'm *very* open to other suggestions.

Thanks,

JD 'linux-hardware-dev@vger anyone ?' B.
[oh, and the board will have 4-way SMP with G4 PowerPCs]
-- 
LART. 250 MIPS under one Watt. Free hardware design files.
http://www.lart.tudelft.nl/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: Maxwell strikes the heart (ECN: Clearing the air)

2001-01-29 Thread J.D. Bakker

At 14:55 -0800 29-01-2001, Pete Zaitcev wrote:
>So far I fail to see how a repainted NAK, kludged into a NAKless protocol,
>would improve stability of the Internet. If anything, it is going to
>exaggerate traffic oscillations.

If anything RED will *reduce* oscillations by alleviating retransmit 
synchronization.

>  I would appreciate couple of links
>to reputable studies or discussions on the subject.

See

http://www.aciri.org/floyd/ecn.html
http://www.aciri.org/floyd/red.html

(I particularly like ftp://ftp.ee.lbl.gov/talks/vj-nanog-red.pdf)

RED and ECN can be considered independently (although they do work 
together quite well). You can see ECN as a way of the network telling 
the endpoints "Normally I would have dropped this datagram, but I'll 
let you get away with it this time". TCP behavior on reception of an 
ECN should be the same as when a datagram is dropped, but without the 
latency (and jitter) that is the result of a lost datagram.

JDB.
[using RED/ECN-like protocols for latency sensitive video 
communications over a wireless link]
-- 
LART. 250 MIPS under one Watt. Free hardware design files.
http://www.lart.tudelft.nl/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



Re: Threads FAQ entry incomplete

2001-06-20 Thread J.D. Bakker

At 13:42 -0600 20-06-2001, Charles Cazabon wrote:
>Rodrigo Ventura <[EMAIL PROTECTED]> wrote:
>  > BTW, I have a question: Can the availability of dual-CPU boards for intel
>>  and amd processors, rather then tri- or quadra-CPU boards, be explained with
>>  the fact that the performance degrades significantly for three or more CPUs?
>>  Or is there a technological and/or comercial reason behind?
>
>Commercial reasons.  Cost per motherboard/chipset goes way up as the number of
>CPUs supported goes up.  For each CPU that a chipset supports, it has to add a
>lot of pins/lands, and chipsets are already typically land-limited.

That's not quite accurate. Most modern SMP-able processors have a 
common bus, where going from 1->2 CPUs adds just a handful of extra 
nets (usually bus request, bus grant and some IRQs). The actual 
issues are threefold.

First, most commodity chipsets simply support no more than two CPUs 
at best; most CPUs don't support having more (or any) siblings. 
Adding more is cheap on the ASIC level, but nobody bothers because 
there is no demand.

Second, adding more CPUs on a shared bus decreases the bus bandwidth 
that is available per CPU. This is comparable with having Ethernet 
hubs vs switches. The really expensive multi-CPU boards have crossbar 
switches between CPUs, memory and PCI. Future stuff like RapidIO may 
mitigate this.

Third, the more CPUs a bus holds, the higher the capacitance on the 
bus lines. Higher capacitance means lower maximum bus speed, which 
aggravates point two.

>Motherboard trace complexity (and therefore number of layers) goes up.  Add to
>that that the potential market goes down as CPUs goes up.

True enough.

Regards,

JDB
[working on a SMP PowerPC design]
-- 
LART. 250 MIPS under one Watt. Free hardware design files.
http://www.lart.tudelft.nl/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



RE: [EXT] Re: [PATCH] tick/broadcast: Allow later probed device enter oneshot mode

2021-03-30 Thread J.d. Yue


> -Original Message-
> From: Thomas Gleixner 
> Sent: Tuesday, March 30, 2021 5:18 AM
> To: J.d. Yue 
> Cc: linux-kernel@vger.kernel.org; fweis...@gmail.com; mi...@kernel.org
> Subject: [EXT] Re: [PATCH] tick/broadcast: Allow later probed device enter
> oneshot mode
> 
> Caution: EXT Email
> 
> On Mon, Mar 29 2021 at 13:25, Jindong Yue wrote:
> 
> >  /*
> >   * Debugging: see timer_list.c
> > @@ -115,8 +116,20 @@ void tick_install_broadcast_device(struct
> clock_event_device *dev)
> >* notification the systems stays stuck in periodic mode
> >* forever.
> >*/
> > - if (dev->features & CLOCK_EVT_FEAT_ONESHOT)
> > + if (dev->features & CLOCK_EVT_FEAT_ONESHOT) {
> >   tick_clock_notify();
> 
> If the kernel runs in oneshot mode already, then calling
> tick_clock_notify() does not make sense.

Yes, there should be more check before tick_clock_notify().

> 
> > + /*
> > +  * If new broadcast device is installed after high resolution
> > +  * timers enabled, it can not switch to oneshot mode
> anymore.
> 
> This is not restricted to high resolution timers. The point is that the mode 
> is
> ONESHOT which might be either HIGHRES or NOHZ or both.

Got it, after kernel enters ONESHOT mode, new registered broadcast device can't 
be switched to ONESHOT mode. 

> 
> > +  */
> > + if (tick_broadcast_oneshot_active() &&
> > + dev->event_handler != tick_handle_oneshot_broadcast)
> > + {
> 
> How would that condition ever be false for a newly installed device?

Okay, will remove this condition.

> 
> > + tick_broadcast_switch_to_oneshot();
> > + }
> 
> So what you really want is:
> 
> if (!(dev->features & CLOCK_EVT_FEAT_ONESHOT))
> return;
> 
> if (tick_broadcast_oneshot_active()) {
> tick_broadcast_switch_to_oneshot();
> return;
> }
> 
> tick_clock_notify();
> 
> Thanks,
> 
> tglx

Thanks for your quick review and advice. I will test this code locally and send 
V2 patch later.
Jindong


RE: [EXT] Re: [PATCH v2] tick/broadcast: Allow later registered device enter oneshot mode

2021-03-31 Thread J.d. Yue


> -Original Message-
> From: Thomas Gleixner 
> Sent: Wednesday, March 31, 2021 4:07 PM
> To: J.d. Yue ; fweis...@gmail.com; mi...@kernel.org
> Cc: linux-kernel@vger.kernel.org; J.d. Yue 
> Subject: [EXT] Re: [PATCH v2] tick/broadcast: Allow later registered device
> enter oneshot mode
> 
> Caution: EXT Email
> 
> On Wed, Mar 31 2021 at 09:10, Jindong Yue wrote:
> > --- a/kernel/time/tick-broadcast.c
> > +++ b/kernel/time/tick-broadcast.c
> > @@ -47,6 +47,7 @@ static inline void
> > tick_resume_broadcast_oneshot(struct clock_event_device *bc)  static
> > inline void tick_broadcast_oneshot_offline(unsigned int cpu) { }  #
> > endif  #endif
> > +static void tick_handle_oneshot_broadcast(struct clock_event_device
> > +*dev);
> 
> Leftover ...

Removed in v3.

> 
> >  /*
> >   * Debugging: see timer_list.c
> > @@ -107,6 +108,19 @@ void tick_install_broadcast_device(struct
> clock_event_device *dev)
> >   tick_broadcast_device.evtdev = dev;
> >   if (!cpumask_empty(tick_broadcast_mask))
> >   tick_broadcast_start_periodic(dev);
> > +
> > + if (!(dev->features & CLOCK_EVT_FEAT_ONESHOT))
> > + return;
> > +
> > + /*
> > +  * If system already runs in oneshot mode, switch new registered
> 
> the system  the newly registered
> 
> > +  * broadcast device to oneshot mode explicitly if possiable.
> 
> s/possible/possiable/
> 
> But the 'if possible' makes no sense here. The above check for
> CLOCK_EVT_FEAT_ONESHOT established that it _is_ possible. So just remove
> the 'if ...'.

I should be more careful ...
Please check v3 patch.

Thanks
Jindong

> 
> > +  */
> > + if (tick_broadcast_oneshot_active()) {
> > + tick_broadcast_switch_to_oneshot();
> > + return;
> > + }
> 
> Thanks,
> 
> tglx


Re: [PATCH] net: davinci_mdio: Set of_node in the mdio bus

2016-04-28 Thread J.D. Schroeder
On 04/28/2016 02:44 PM, David Miller wrote:
>> --- a/drivers/net/ethernet/ti/davinci_mdio.c
>> +++ b/drivers/net/ethernet/ti/davinci_mdio.c
>> @@ -343,6 +343,7 @@ static int davinci_mdio_probe(struct platform_device 
>> *pdev)
>>  if (davinci_mdio_probe_dt(&data->pdata, pdev))
>>  data->pdata = default_pdata;
>>  snprintf(data->bus->id, MII_BUS_ID_SIZE, "%s", pdev->name);
>> +data->bus->dev.of_node = dev->of_node;
>>  } else {
>>  data->pdata = pdata ? (*pdata) : default_pdata;
>>  snprintf(data->bus->id, MII_BUS_ID_SIZE, "%s-%x",
> 
> You can't do this.
> 
> First of all, of_node objects are reference counted.  So even if this was a
> legal thing to do you would have to drop the reference to the existing of_node
> pointer and gain a reference to dev->of_node.
> 
> But even more importantly, it is the job of the bus driver to set that
> bus->dev.of_node correctly, you should never override it in a driver like
> this.

David, thanks for your review. I understand your point about the reference 
count.

One thing to note is that it is always null for the davinci mdio bus when
going through this path. I'm not trying to override it. I'm trying to make
sure it has a way to find the davinci mdio bus. Do you see the problem I'm
trying to solve?

Is there another way to be able to make the of_mdio_find_bus() call be able to
find the davinci mdio bus?

Thanks,
JD



[PATCH v2 2/3] ARM: DRA7x: dts: Update the OSC_32K_CLK frequency

2016-05-02 Thread J.D. Schroeder
From: "J.D. Schroeder" 

This commit updates the OSC_32K_CLK (secure_32k_clk_src_ck) frequency
from the precise 32kHz frequency (i.e., 32.768 kHz) to a more
accurate frequency of ~34.6 kHz. Actual measured frequencies of the
clock vary from processor to processor anywhere from 34.4 kHz up to
34.8 kHz. Note that the ~34 kHz frequency clock is generated
internally by the processor, not an input to the processor. This
change makes it more clear that the consumer of the
secure_32k_clk_src_ck will not get a precise 32.768 kHz frequency
output.

Signed-off-by: J.D. Schroeder 
Reviewed-by: Trenton Andres 
---
 arch/arm/boot/dts/dra7xx-clocks.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi 
b/arch/arm/boot/dts/dra7xx-clocks.dtsi
index 3f0c61d..f7ec976 100644
--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
+++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
@@ -95,7 +95,7 @@
secure_32k_clk_src_ck: secure_32k_clk_src_ck {
#clock-cells = <0>;
compatible = "fixed-clock";
-   clock-frequency = <32768>;
+   clock-frequency = <34600>; /* approximate frequency */
};
 
sys_clk32_crystal_ck: sys_clk32_crystal_ck {
-- 
1.9.1



[PATCH v2 0/3] AM57/DRA7 Clock Tree DTSI Fix-ups

2016-05-02 Thread J.D. Schroeder
This series of patches fixes several discrepancies between the
AM57/DRA7 clock tree description and the actual hardware behavior and
frequencies. With these changes a more complete picture of the clock
tree is represented for a few of the clocks and their resulting
frequencies.

v2 Changes:
* Rebased on linux-next as requested by Tony Lindgren
* Eliminated previous patch 2 as another change fixing the same thing
  was merged in eea08802f586acd6aef377d1b4a541821013cc0b
* Added to the commit message in patch 2 to clarify the source of the
  clock being internal to the processor
* Added a new patch 3 to fix a new warning introduced by
  eea08802f586acd6aef377d1b4a541821013cc0b



[PATCH v2 3/3] ARM: dts: dra7: fix clock node definition to avoid build warning

2016-05-02 Thread J.D. Schroeder
From: "J.D. Schroeder" 

This patch fixes the following warning for the DRA7 clock node:
Warning (unit_address_vs_reg): Node
/ocp/l4@4a00/scm@2000/scm_conf@0/clocks/sys_32k_ck
has a reg or ranges property, but no unit name

Signed-off-by: J.D. Schroeder 
---
 arch/arm/boot/dts/dra7xx-clocks.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi 
b/arch/arm/boot/dts/dra7xx-clocks.dtsi
index f7ec976..34cda4b 100644
--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
+++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
@@ -2186,7 +2186,7 @@
reg = <0x0558>;
};
 
-   sys_32k_ck: sys_32k_ck {
+   sys_32k_ck: sys_32k_ck@6c4 {
#clock-cells = <0>;
compatible = "ti,mux-clock";
clocks = <&sys_clk32_crystal_ck>, <&sys_clk32_pseudo_ck>, 
<&sys_clk32_pseudo_ck>, <&sys_clk32_pseudo_ck>;
-- 
1.9.1



[PATCH v2 1/3] DRA7: Fix clock data for gmac_gmii_ref_clk_div

2016-05-02 Thread J.D. Schroeder
From: "J.D. Schroeder" 

This commit fixes the clock data inside the DRA7xx clocks device tree
structure for the gmac_gmii_ref_clk_div clock. This clock is actually
the GMAC_MAIN_CLK and has nothing to do with the register at address
0x4a0093d0. If CLKSEL_REF bit 24 inside of CM_GMAC_GMAC_CLKCTRL, is
set to 1 in order to use the GMAC_RMII_CLK instead of the
GMAC_RMII_HS_CLK, the kernel generates a clock divider warning:
WARNING: CPU: 0 PID: 0 at drivers/clk/clk-divider.c:129 
clk_divider_recalc_rate+0xa8/0xe0()
gmac_gmii_ref_clk_div: Zero divisor and CLK_DIVIDER_ALLOW_ZERO not set

By properly configuring the gmac_gmii_ref_clk_div (GMAC_MAIN_CLK) to
have the parent of dpll_gmac_m2_ck always divided by 2 the warning is
resolved and the clock tree is fixed up.

Additionally, a new clock called rmii_50mhz_clk_mux is defined that
does utilize CM_GMAC_GMAC_CLKCTRL[24] CLKSEL_REF to configure the
source clock for the RMII_50MHZ_CLK.

Signed-off-by: J.D. Schroeder 
Reviewed-by: Trenton Andres 
---
 arch/arm/boot/dts/dra7xx-clocks.dtsi | 15 +++
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi 
b/arch/arm/boot/dts/dra7xx-clocks.dtsi
index 8378b44..3f0c61d 100644
--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
+++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
@@ -1718,13 +1718,20 @@
reg = <0x0c00>;
};
 
-   gmac_gmii_ref_clk_div: gmac_gmii_ref_clk_div@13d0 {
+   rmii_50mhz_clk_mux: rmii_50mhz_clk_mux@13d0 {
#clock-cells = <0>;
-   compatible = "ti,divider-clock";
-   clocks = <&dpll_gmac_m2_ck>;
+   compatible = "ti,mux-clock";
+   clocks = <&dpll_gmac_h11x2_ck>, <&rmii_clk_ck>;
ti,bit-shift = <24>;
reg = <0x13d0>;
-   ti,dividers = <2>;
+   };
+
+   gmac_gmii_ref_clk_div: gmac_gmii_ref_clk_div {
+   #clock-cells = <0>;
+   compatible = "fixed-factor-clock";
+   clocks = <&dpll_gmac_m2_ck>;
+   clock-mult = <1>;
+   clock-div = <2>;
};
 
gmac_rft_clk_mux: gmac_rft_clk_mux@13d0 {
-- 
1.9.1



Re: [PATCH v2 2/3] ARM: DRA7x: dts: Update the OSC_32K_CLK frequency

2016-05-03 Thread J.D. Schroeder
On 05/03/2016 03:16 AM, Tero Kristo wrote:
> On 02/05/16 20:12, J.D. Schroeder wrote:
>> From: "J.D. Schroeder" 
>>
>> This commit updates the OSC_32K_CLK (secure_32k_clk_src_ck) frequency
>> from the precise 32kHz frequency (i.e., 32.768 kHz) to a more
>> accurate frequency of ~34.6 kHz. Actual measured frequencies of the
>> clock vary from processor to processor anywhere from 34.4 kHz up to
>> 34.8 kHz. Note that the ~34 kHz frequency clock is generated
>> internally by the processor, not an input to the processor. This
>> change makes it more clear that the consumer of the
>> secure_32k_clk_src_ck will not get a precise 32.768 kHz frequency
>> output.
>>
>> Signed-off-by: J.D. Schroeder 
>> Reviewed-by: Trenton Andres 
>> ---
>>   arch/arm/boot/dts/dra7xx-clocks.dtsi | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi
>> b/arch/arm/boot/dts/dra7xx-clocks.dtsi
>> index 3f0c61d..f7ec976 100644
>> --- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
>> +++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
>> @@ -95,7 +95,7 @@
>>   secure_32k_clk_src_ck: secure_32k_clk_src_ck {
>>   #clock-cells = <0>;
>>   compatible = "fixed-clock";
>> -clock-frequency = <32768>;
>> +clock-frequency = <34600>; /* approximate frequency */
>>   };
>>
>>   sys_clk32_crystal_ck: sys_clk32_crystal_ck {
>>
> 
> I still don't agree with this patch. The actual frequency can drift much more,
> you are just seeing this number at your setup.

Yes, it can drift significantly from processor to processor. Do you agree that
this frequency is closer to what can be expected than 32768 Hz?

Like I said, I would have renamed the clock also but I opted to go the less
obtrusive route while still helping others that might think they can
reasonably use this clock in their design as a 32768 Hz clock source. Perhaps
my comment and selection of the approximate frequency is not the best (I'm
open for suggestions). However, I do think this change is an improvement and
clarifying change to what is currently present in the clock description.

-JD



Re: [PATCH v2 2/3] ARM: DRA7x: dts: Update the OSC_32K_CLK frequency

2016-05-03 Thread J.D. Schroeder
On 05/03/2016 12:32 PM, Tero Kristo wrote:
> Personally I would not recommend using this clock for any timing sensitive
> applications. May I ask why you are interested in the exact clock rate of this
> clock anyway?

I'm not interested in using this clock and I'm not sure how anyone would use
this clock outside of the processor. See the inline comment that is part of
the change and the commit message for the change. There is no hint in my
change that this is an exact clock rate. It is a clarifying change to help
others avoid using this clock as a 32 kHz clock (which the current clock name
and frequency imply) and it more accurately represents the actual hardware
behavior.



Re: [PATCH 0/3] AM57/DRA7 Clock Tree DTSI Fix-ups

2016-04-26 Thread J.D. Schroeder
On 04/26/2016 01:13 PM, Tony Lindgren wrote:
> Are any of these needed for the v4.6-rc cycle?

I understand that these are arriving a little late especially if we don't get 
to rc7. However, it would be great if these could get in the v4.6 kernel 
release. They shouldn't be too risky to anyone, but I understand if the 
logistics prevent that from happening.

Thanks,
JD



Re: [PATCH 2/3] ARM: DRA7x: dts: Fix the 32kHz clock calculation

2016-04-27 Thread J.D. Schroeder
On 04/27/2016 06:40 AM, Tero Kristo wrote:
> On 26/04/16 20:54, J.D. Schroeder wrote:
>> This commit fixes the 32kHz clock (sys_32k_ck) calculation to be
>> correctly based on the SYS_CLK1 (sys_clkin1) frequency. Based on the
>> TRM CTRL_CORE_BOOTSTRAP[9:8] SPEEDSELECT, set by the SYSBOOT[9:8]
>> board jumpers according to the SYS_CLK1 frequency, the frequency of
>> the 32kHz FUNC_32K_CLK is set to SYS_CLK1/610. The following
>> sys_32k_ck frequencies get used for different SYS_CLK1 frequencies:
>>  0b00: Unknown  -> 32768 Hz crystal from CLKIN_32K pin
>>  0b01: 20   MHz -> 32787 Hz clock (SYS_CLK1/610)
>>  0b10: 27   MHz -> 44262 Hz clock (SYS_CLK1/610)
>>  0b11: 19.2 MHz -> 31475 Hz clock (SYS_CLK1/610)
> 
> A patch doing the same thing is already in mainline, see:
> 
> commit eea08802f586acd6aef377d1b4a541821013cc0b
> Author: Keerthy 
> Date:   Mon Apr 4 11:07:15 2016 +0530
> 
> ARM: dts: dra7: Correct clock tree for sys_32k_ck
> 
> So, this one can be ignored.

My change had no issue when applying to the tip of master and I'm not seeing
that SHA1 in mainline. Are you saying it is in another repo ready to be sent
to mainline for the next release cycle?


Re: [PATCH 3/3] ARM: DRA7x: dts: Update the OSC_32K_CLK frequency

2016-04-27 Thread J.D. Schroeder
On 04/27/2016 06:49 AM, Tero Kristo wrote:
> On 26/04/16 20:54, J.D. Schroeder wrote:
>> From: "J.D. Schroeder" 
>>
>> This commit updates the OSC_32K_CLK (secure_32k_clk_src_ck) frequency
>> from the precise 32kHz frequency (i.e., 32.768 kHz) to the more
>> accurate frequency of ~34.6 kHz. Actual measured frequencies of the
>> clock vary from board to board anywhere from 34.4 kHz up to 34.8 kHz.
> 
> Uhm, if you have a board specific, accurate value for this clock, you should
> update it in the board file itself. This definition is going to be used across
> all the DRA7 / AM57xx boards, which can very likely have different crystal
> accuracies.
> 
> So, NAK.

The source of this clock is internal to the processor and not specific to how
the processor is configured or what clocks are coming in. The approximate
frequency of 34.4-34.8 kHz is generated internal to the processor through some
type of oscillator, not external. The problem is that the clock tree gives the
impression that this is a 32.768 kHz clock source, when in fact it is *not*
that. Both the name and the frequency are misleading. My change is an attempt
to clarify the actual behavior of the clock and keep someone else from using
the clock as a true 32.768 kHz clock when it is more than 5% off that
particular frequency. I would even consider changing the name of the clock as
that too is misleading, but opted not to since that would be more disruptive.

If you are seeing 32.768 kHz come out of this clock source then I must have an
issue with my silicon and we can discuss off line. However, if you configure
this as one of the clock out sources and see something in the range of ~34
kHz, I still think the change is a valid change as it clarifies the true
behavior of the hardware. Am I missing something?




Re: [PATCH 2/3] ARM: DRA7x: dts: Fix the 32kHz clock calculation

2016-04-27 Thread J.D. Schroeder
On 04/27/2016 02:47 PM, Tero Kristo wrote:
> The patch is merged already in 4.6-rc3.
> 
> Which repo / version are you using as baseline?

I'm using git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git. I
can see eea08802f586acd6aef377d1b4a541821013cc0b as of now. However, I don't
think it was included in -rc3 or even -rc5 which is what I was basing my
changes on. It looks like it got merged in late last night in Linus tree. No
big deal. The change is nearly identical to my solution so no need to pursue 
mine.

Please disregard this patch.

Thanks,
JD



[PATCH] OMAPDSS: HDMI5: Change DDC timings

2016-04-20 Thread J.D. Schroeder
From: "Lodes, Jim" 

The DDC scl high and low times were set to the minimum values
from the i2c specification, but the i2c specification takes into
account the rise time and fall time to calculate the frequency.
To pass HDMI certification DDC can not exceed 100kHz therefore in
a system where the rise times and fall times are negligible the high
and low times for scl need to be 10us.

Signed-off-by: Lodes, Jim 
Signed-off-by: J.D. Schroeder 
---
 drivers/gpu/drm/omapdrm/dss/hdmi5_core.c  | 4 ++--
 drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c 
b/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
index 6a39752..d993f78 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
@@ -51,8 +51,8 @@ static void hdmi_core_ddc_init(struct hdmi_core_data *core)
 {
void __iomem *base = core->base;
const unsigned long long iclk = 26600;  /* DSS L3 ICLK */
-   const unsigned ss_scl_high = 4000;  /* ns */
-   const unsigned ss_scl_low = 4700;   /* ns */
+   const unsigned ss_scl_high = 4600;  /* ns */
+   const unsigned ss_scl_low = 5400;   /* ns */
const unsigned fs_scl_high = 600;   /* ns */
const unsigned fs_scl_low = 1300;   /* ns */
const unsigned sda_hold = 1000; /* ns */
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c 
b/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
index 8ea531d..f3e4b81 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
+++ b/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
@@ -51,8 +51,8 @@ static void hdmi_core_ddc_init(struct hdmi_core_data *core)
 {
void __iomem *base = core->base;
const unsigned long long iclk = 26600;  /* DSS L3 ICLK */
-   const unsigned ss_scl_high = 4000;  /* ns */
-   const unsigned ss_scl_low = 4700;   /* ns */
+   const unsigned ss_scl_high = 4600;  /* ns */
+   const unsigned ss_scl_low = 5400;   /* ns */
const unsigned fs_scl_high = 600;   /* ns */
const unsigned fs_scl_low = 1300;   /* ns */
const unsigned sda_hold = 1000; /* ns */
-- 
1.9.1



[PATCH] OMAPDSS: HDMI5: Fix AVI infoframe

2016-04-21 Thread J.D. Schroeder
From: "Lodes, Jim" 

The AVI infoframe R0-R3 in the 2nd data byte represents the
Active Format Aspect Ratio. It is four bits long not two bits.
This fixes that mask used to extract the bits before writing the
bits to the hardware registers.

Signed-off-by: Lodes, Jim 
Signed-off-by: J.D. Schroeder 
---
 drivers/gpu/drm/omapdrm/dss/hdmi5_core.c  | 2 +-
 drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c 
b/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
index d993f78..8ab2093 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
@@ -458,7 +458,7 @@ static void hdmi_core_write_avi_infoframe(struct 
hdmi_core_data *core,
 
c = (ptr[1] >> 6) & 0x3;
m = (ptr[1] >> 4) & 0x3;
-   r = (ptr[1] >> 0) & 0x3;
+   r = (ptr[1] >> 0) & 0xf;
 
itc = (ptr[2] >> 7) & 0x1;
ec = (ptr[2] >> 4) & 0x7;
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c 
b/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
index f3e4b81..bbfe7e2 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
+++ b/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
@@ -442,7 +442,7 @@ static void hdmi_core_write_avi_infoframe(struct 
hdmi_core_data *core,
 
c = (ptr[1] >> 6) & 0x3;
m = (ptr[1] >> 4) & 0x3;
-   r = (ptr[1] >> 0) & 0x3;
+   r = (ptr[1] >> 0) & 0xf;
 
itc = (ptr[2] >> 7) & 0x1;
ec = (ptr[2] >> 4) & 0x7;
-- 
1.9.1



Re: [PATCH] OMAPDSS: HDMI5: Fix AVI infoframe

2016-04-21 Thread J.D. Schroeder
On 04/21/2016 09:43 AM, Tomi Valkeinen wrote:
>> Signed-off-by: Lodes, Jim 
> 
> Thanks, looks good. Can you fix the email here too, and resend?

Yes, I'll fix the sign off and make sure we have it correct going forward.


Re: [PATCH] OMAPDSS: HDMI5: Change DDC timings

2016-04-21 Thread J.D. Schroeder
On 04/21/2016 09:38 AM, Tomi Valkeinen wrote:
> Thanks, makes sense. Did you measure the rise & fall times? Do you get
> more or less exactly 100kHz with the new times?

Rise time is around 600 nsec and fall time is around 140 nsec. When the clock 
frequency is measured we get right at 100 kHz and the rise and fall times are 
negligible. When the HDMI certification test equipment is attached it is just 
slightly less than 100 kHz, which is okay. The HDMI specification states less 
than 100 kHz is acceptable not greater. If a particular system has slower rise 
and fall times then that should be okay also. This change ensures that we stay 
below 100 kHz regardless of  the rise and fall times.

>> Signed-off-by: Lodes, Jim 
> 
> The email format should be
> 
> Firstname Lastname 

Yes. I'll fix the email and resubmit.


[PATCH v2] OMAPDSS: HDMI5: Change DDC timings

2016-04-21 Thread J.D. Schroeder
From: Jim Lodes 

The DDC scl high and low times were set to the minimum values
from the i2c specification, but the i2c specification takes into
account the rise time and fall time to calculate the frequency.
To pass HDMI certification DDC can not exceed 100kHz therefore in
a system where the rise times and fall times are negligible the high
and low times for scl need to be 10us.

Signed-off-by: Jim Lodes 
Signed-off-by: J.D. Schroeder 
---
 drivers/gpu/drm/omapdrm/dss/hdmi5_core.c  | 4 ++--
 drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c 
b/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
index 6a39752..d993f78 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
@@ -51,8 +51,8 @@ static void hdmi_core_ddc_init(struct hdmi_core_data *core)
 {
void __iomem *base = core->base;
const unsigned long long iclk = 26600;  /* DSS L3 ICLK */
-   const unsigned ss_scl_high = 4000;  /* ns */
-   const unsigned ss_scl_low = 4700;   /* ns */
+   const unsigned ss_scl_high = 4600;  /* ns */
+   const unsigned ss_scl_low = 5400;   /* ns */
const unsigned fs_scl_high = 600;   /* ns */
const unsigned fs_scl_low = 1300;   /* ns */
const unsigned sda_hold = 1000; /* ns */
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c 
b/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
index 8ea531d..f3e4b81 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
+++ b/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
@@ -51,8 +51,8 @@ static void hdmi_core_ddc_init(struct hdmi_core_data *core)
 {
void __iomem *base = core->base;
const unsigned long long iclk = 26600;  /* DSS L3 ICLK */
-   const unsigned ss_scl_high = 4000;  /* ns */
-   const unsigned ss_scl_low = 4700;   /* ns */
+   const unsigned ss_scl_high = 4600;  /* ns */
+   const unsigned ss_scl_low = 5400;   /* ns */
const unsigned fs_scl_high = 600;   /* ns */
const unsigned fs_scl_low = 1300;   /* ns */
const unsigned sda_hold = 1000; /* ns */
-- 
1.9.1



[PATCH v2] OMAPDSS: HDMI5: Fix AVI infoframe

2016-04-21 Thread J.D. Schroeder
From: Jim Lodes 

The AVI infoframe R0-R3 in the 2nd data byte represents the
Active Format Aspect Ratio. It is four bits long not two bits.
This fixes that mask used to extract the bits before writing the
bits to the hardware registers.

Signed-off-by: Jim Lodes 
Signed-off-by: J.D. Schroeder 
---
 drivers/gpu/drm/omapdrm/dss/hdmi5_core.c  | 2 +-
 drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c 
b/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
index d993f78..8ab2093 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c
@@ -458,7 +458,7 @@ static void hdmi_core_write_avi_infoframe(struct 
hdmi_core_data *core,
 
c = (ptr[1] >> 6) & 0x3;
m = (ptr[1] >> 4) & 0x3;
-   r = (ptr[1] >> 0) & 0x3;
+   r = (ptr[1] >> 0) & 0xf;
 
itc = (ptr[2] >> 7) & 0x1;
ec = (ptr[2] >> 4) & 0x7;
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c 
b/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
index f3e4b81..bbfe7e2 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
+++ b/drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c
@@ -442,7 +442,7 @@ static void hdmi_core_write_avi_infoframe(struct 
hdmi_core_data *core,
 
c = (ptr[1] >> 6) & 0x3;
m = (ptr[1] >> 4) & 0x3;
-   r = (ptr[1] >> 0) & 0x3;
+   r = (ptr[1] >> 0) & 0xf;
 
itc = (ptr[2] >> 7) & 0x1;
ec = (ptr[2] >> 4) & 0x7;
-- 
1.9.1



[PATCH] net: davinci_mdio: Set of_node in the mdio bus

2016-04-25 Thread J.D. Schroeder
From: "J.D. Schroeder" 

Assigns the of_node from the platform device to the of_node of the
mdio bus so that it can be used in the mdio driver to properly match
a bus in the DT with a phandle in of_mdio_find_bus().

Signed-off-by: J.D. Schroeder 
Signed-off-by: Ben McCauley 
---
 drivers/net/ethernet/ti/davinci_mdio.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/ti/davinci_mdio.c 
b/drivers/net/ethernet/ti/davinci_mdio.c
index 4e7c9b9..b5e5f37 100644
--- a/drivers/net/ethernet/ti/davinci_mdio.c
+++ b/drivers/net/ethernet/ti/davinci_mdio.c
@@ -343,6 +343,7 @@ static int davinci_mdio_probe(struct platform_device *pdev)
if (davinci_mdio_probe_dt(&data->pdata, pdev))
data->pdata = default_pdata;
snprintf(data->bus->id, MII_BUS_ID_SIZE, "%s", pdev->name);
+   data->bus->dev.of_node = dev->of_node;
} else {
data->pdata = pdata ? (*pdata) : default_pdata;
snprintf(data->bus->id, MII_BUS_ID_SIZE, "%s-%x",
-- 
1.9.1



[PATCH] ASoC: davinci-mcasp: Fix overwriting of ahclkx

2016-04-25 Thread J.D. Schroeder
From: Jim Lodes 

The mcasp davinci_mcasp_set_dai_fmt function was overriding ahclkx
input/output status that had already been set by the
davinci_mcasp_set_sysclk function. This commit removes clearing
of the ahclkx input/output status from davinci_mcasp_set_dai_fmt.

Signed-off-by: Jim Lodes 
Signed-off-by: J.D. Schroeder 
---
 sound/soc/davinci/davinci-mcasp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/davinci/davinci-mcasp.c 
b/sound/soc/davinci/davinci-mcasp.c
index e132498..a1197ad 100644
--- a/sound/soc/davinci/davinci-mcasp.c
+++ b/sound/soc/davinci/davinci-mcasp.c
@@ -489,7 +489,7 @@ static int davinci_mcasp_set_dai_fmt(struct snd_soc_dai 
*cpu_dai,
mcasp_clr_bits(mcasp, DAVINCI_MCASP_RXFMCTL_REG, AFSRE);
 
mcasp_clr_bits(mcasp, DAVINCI_MCASP_PDIR_REG,
-  ACLKX | AHCLKX | AFSX | ACLKR | AHCLKR | AFSR);
+  ACLKX | AFSX | ACLKR | AHCLKR | AFSR);
mcasp->bclk_master = 0;
break;
default:
-- 
1.9.1



[PATCH] ASoC: omap-pcm: Initialize DMA configuration

2016-04-25 Thread J.D. Schroeder
From: Jim Lodes 

Initialize the dma_slave_config for PCM DMA transfers,
instead of leaving it uninitialized. Keeps previous data on
the stack from giving us invalid values in uninitialized
members of the config structure.

Signed-off-by: Jim Lodes 
Signed-off-by: J.D. Schroeder 
---
 sound/soc/omap/omap-pcm.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c
index 99381a2..a84f677 100644
--- a/sound/soc/omap/omap-pcm.c
+++ b/sound/soc/omap/omap-pcm.c
@@ -82,6 +82,8 @@ static int omap_pcm_hw_params(struct snd_pcm_substream 
*substream,
struct dma_chan *chan;
int err = 0;
 
+   memset(&config, 0x00, sizeof(config));
+
dma_data = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
/* return if this is a bufferless transfer e.g.
-- 
1.9.1



[PATCH 1/3] DRA7: Fix clock data for gmac_gmii_ref_clk_div

2016-04-26 Thread J.D. Schroeder
From: "J.D. Schroeder" 

This commit fixes the clock data inside the DRA7xx clocks device tree
structure for the gmac_gmii_ref_clk_div clock. This clock is actually
the GMAC_MAIN_CLK and has nothing to do with the register at address
0x4a0093d0. If CLKSEL_REF bit 24 inside of CM_GMAC_GMAC_CLKCTRL, is
set to 1 in order to use the GMAC_RMII_CLK instead of the
GMAC_RMII_HS_CLK, the kernel generates a clock divider warning:
WARNING: CPU: 0 PID: 0 at drivers/clk/clk-divider.c:129 
clk_divider_recalc_rate+0xa8/0xe0()
gmac_gmii_ref_clk_div: Zero divisor and CLK_DIVIDER_ALLOW_ZERO not set

By properly configuring the gmac_gmii_ref_clk_div (GMAC_MAIN_CLK) to
have the parent of dpll_gmac_m2_ck always divided by 2 the warning is
resolved and the clock tree is fixed up.

Additionally, a new clock called rmii_50mhz_clk_mux is defined that
does utilize CM_GMAC_GMAC_CLKCTRL[24] CLKSEL_REF to configure the
source clock for the RMII_50MHZ_CLK.

Signed-off-by: J.D. Schroeder 
Reviewed-by: Trenton Andres 
---
 arch/arm/boot/dts/dra7xx-clocks.dtsi | 15 +++
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi 
b/arch/arm/boot/dts/dra7xx-clocks.dtsi
index d0bae06..9d1a583 100644
--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
+++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
@@ -1710,13 +1710,20 @@
reg = <0x0c00>;
};
 
-   gmac_gmii_ref_clk_div: gmac_gmii_ref_clk_div {
+   rmii_50mhz_clk_mux: rmii_50mhz_clk_mux {
#clock-cells = <0>;
-   compatible = "ti,divider-clock";
-   clocks = <&dpll_gmac_m2_ck>;
+   compatible = "ti,mux-clock";
+   clocks = <&dpll_gmac_h11x2_ck>, <&rmii_clk_ck>;
ti,bit-shift = <24>;
reg = <0x13d0>;
-   ti,dividers = <2>;
+   };
+
+   gmac_gmii_ref_clk_div: gmac_gmii_ref_clk_div {
+   #clock-cells = <0>;
+   compatible = "fixed-factor-clock";
+   clocks = <&dpll_gmac_m2_ck>;
+   clock-mult = <1>;
+   clock-div = <2>;
};
 
gmac_rft_clk_mux: gmac_rft_clk_mux {
-- 
1.9.1



[PATCH 0/3] AM57/DRA7 Clock Tree DTSI Fix-ups

2016-04-26 Thread J.D. Schroeder
This series of patches fixes several discrepancies between the
AM57/DRA7 clock tree description and the actual hardware behavior and
frequencies. With these changes a more complete picture of the clock
tree is represented for a few of the clocks and their resulting
frequencies.



[PATCH 2/3] ARM: DRA7x: dts: Fix the 32kHz clock calculation

2016-04-26 Thread J.D. Schroeder
From: "J.D. Schroeder" 

This commit fixes the 32kHz clock (sys_32k_ck) calculation to be
correctly based on the SYS_CLK1 (sys_clkin1) frequency. Based on the
TRM CTRL_CORE_BOOTSTRAP[9:8] SPEEDSELECT, set by the SYSBOOT[9:8]
board jumpers according to the SYS_CLK1 frequency, the frequency of
the 32kHz FUNC_32K_CLK is set to SYS_CLK1/610. The following
sys_32k_ck frequencies get used for different SYS_CLK1 frequencies:
0b00: Unknown  -> 32768 Hz crystal from CLKIN_32K pin
0b01: 20   MHz -> 32787 Hz clock (SYS_CLK1/610)
0b10: 27   MHz -> 44262 Hz clock (SYS_CLK1/610)
0b11: 19.2 MHz -> 31475 Hz clock (SYS_CLK1/610)

Signed-off-by: J.D. Schroeder 
Reviewed-by: Ben McCauley 
---
 arch/arm/boot/dts/dra7xx-clocks.dtsi | 28 ++--
 1 file changed, 22 insertions(+), 6 deletions(-)

diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi 
b/arch/arm/boot/dts/dra7xx-clocks.dtsi
index 9d1a583..a514fc3 100644
--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
+++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
@@ -98,12 +98,6 @@
clock-frequency = <32768>;
};
 
-   sys_32k_ck: sys_32k_ck {
-   #clock-cells = <0>;
-   compatible = "fixed-clock";
-   clock-frequency = <32768>;
-   };
-
virt_1200_ck: virt_1200_ck {
#clock-cells = <0>;
compatible = "fixed-clock";
@@ -2177,4 +2171,26 @@
ti,bit-shift = <22>;
reg = <0x0558>;
};
+
+   sys_32kin: sys_32kin {
+   #clock-cells = <0>;
+   compatible = "fixed-clock";
+   clock-frequency = <32768>;
+   };
+
+   sys_clkin1_32k_div: sys_clkin1_32k_div {
+   #clock-cells = <0>;
+   compatible = "fixed-factor-clock";
+   clocks = <&sys_clkin1>;
+   clock-mult = <1>;
+   clock-div = <610>;
+   };
+
+   sys_32k_ck: sys_32k_ck {
+   #clock-cells = <0>;
+   compatible = "ti,mux-clock";
+   clocks = <&sys_32kin>, <&sys_clkin1_32k_div>, 
<&sys_clkin1_32k_div>, <&sys_clkin1_32k_div>;
+   ti,bit-shift = <8>;
+   reg = <0x06c4>;
+   };
 };
-- 
1.9.1



[PATCH 3/3] ARM: DRA7x: dts: Update the OSC_32K_CLK frequency

2016-04-26 Thread J.D. Schroeder
From: "J.D. Schroeder" 

This commit updates the OSC_32K_CLK (secure_32k_clk_src_ck) frequency
from the precise 32kHz frequency (i.e., 32.768 kHz) to the more
accurate frequency of ~34.6 kHz. Actual measured frequencies of the
clock vary from board to board anywhere from 34.4 kHz up to 34.8 kHz.

Signed-off-by: J.D. Schroeder 
Reviewed-by: Trenton Andres 
---
 arch/arm/boot/dts/dra7xx-clocks.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi 
b/arch/arm/boot/dts/dra7xx-clocks.dtsi
index a514fc3..4501140 100644
--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
+++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
@@ -95,7 +95,7 @@
secure_32k_clk_src_ck: secure_32k_clk_src_ck {
#clock-cells = <0>;
compatible = "fixed-clock";
-   clock-frequency = <32768>;
+   clock-frequency = <34600>; /* approximate frequency */
};
 
virt_1200_ck: virt_1200_ck {
-- 
1.9.1