This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DS3234 RTC interfacing with AM335x

Hi,

We are using beaglebone black based custom board,
We have interfaced external RTC with SPI0
SPI0 has two slaves attached to it one is EEPROM and other is RTC.

RTC is DS3234, We are using linux 3.8, i enabled ds3234 support in the kernel

I changed the device tree as follows

	spi0_pins: pinmux_spi0_pins{				
		pinctrl-single,pins = <
			0x150 0x30 /* spi0_sclk, INPUT_PULLUP | MODE0 */
			0x154 0x10 /* spi0_d0, OUTPUT_PULLUP | MODE0 */
			0x158 0x30 /* spi0_d1, INPUT_PULLUP | MODE0 */
			/* For EEPROM */
			0x15c 0x10 /* spi0_cs0, OUTPUT_PULLUP | MODE0 */
			/* For RTC */
			0x160 0x10 /* spi0_cs1, OUTPUT_PULLUP | MODE0 */
		>;
	};
&spi0{
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&spi0_pins>;
	/* DO is MOSI, D1 is MISO */	
	ti,pindir-d0-out-d1-in = <1>;		
	spidev {
		compatible = "spidev";
		/* We use SPI CS 0; register the same */
		reg = <0>;
		spi-max-frequency = <1000000>; 
		spi-cs-high;
		/* Operate with CPOL and CPHA set to zero */
		/* spi-cpol; */
		/* spi-cpha; */
	};
	rtc: ds3234@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "dallas,ds3234";
		reg = <1>; /* Indicated SPI chip select number*/

	         /* Below settings might need to be twea*/
	         /*spi-max-frequency = <1000000000>;*/
	         /* spi-cpol; */
	         /* spi-cpha; */
	};
	
};

With this setting i am not able to sync system time with hardware clock time and vice versa.

When i used hwclock i am getting following error

# hwclock 
hwclock: RTC_RD_TIME: Invalid argument
# hwclock -w
hwclock: RTC_SET_TIME: Invalid argument
# date -s "2014-9-25 18:42"
Thu Sep 25 18:42:00 EDT 2014
# hwclock -w
# 
# 
# 
# hwclock 
hwclock: RTC_RD_TIME: Invalid argument

Here is the kernel log output of spi and rtc debug message at booting time

# dmesg | grep -i spi
[    0.455453] omap2_mcspi 48030000.spi: registered master spi1
[    0.456706] spi spi1.0: setup: speed 750000, sample leading edge, clk normal
[    0.456736] spi spi1.0: setup mode 0, cs_high, 8 bits/w, 1000000 Hz max --> 0
[    0.457149] omap2_mcspi 48030000.spi: registered child spi1.0
[    0.457856] spi spi1.1: setup: speed 48000000, sample leading edge, clk normal
[    0.457885] spi spi1.1: setup mode 0, 8 bits/w, 1000000000 Hz max --> 0
[    0.458053] omap2_mcspi 48030000.spi: registered child spi1.1
[    0.461173] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461209] ds3234 spi1.1: setup mode 3, 8 bits/w, 1000000000 Hz max --> 0
[    0.461293] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461322] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461347] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461440] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461466] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461491] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461553] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461579] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461638] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461664] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461688] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461746] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461773] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461830] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461856] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461880] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461917] ds3234 spi1.1: Control Reg: 0xff
[    0.461959] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.461985] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.462009] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.462046] ds3234 spi1.1: Ctrl/Stat Reg: 0xff
[    0.462123] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.462251] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.462284] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    0.462672] ds3234 spi1.1: rtc core: registered ds3234 as rtc0
[    1.752118] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    1.752150] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    1.752181] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    1.752231] ds3234 spi1.1: hctosys: unable to read the hardware clock
[    2.481498] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    2.481538] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    2.481570] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[    7.755855] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    7.755918] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    7.756241] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    7.756306] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    7.761629] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    7.761689] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    8.416463] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    8.416527] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    8.416576] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    8.579711] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    8.579773] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    8.579822] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    9.259539] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    9.259602] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[    9.259651] spidev spi1.0: setup: speed 750000, sample leading edge, clk normal
[   16.791312] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[   16.791352] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted
[   16.791383] ds3234 spi1.1: setup: speed 48000000, sample trailing edge, clk inverted

Any pointers/suggestions for solving this ?

Thank you,

Regards,
Ankur