summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoshe Piekarski <dev.rockbox@melachim.net>2021-05-05 12:52:19 -0400
committerSolomon Peachy <pizza@shaftnet.org>2021-05-12 10:52:03 +0000
commitb895fb66437655888386db82aa6434b0f5bfc0d6 (patch)
tree5a59015999db8a94740940a76b50a4dea0f2e556
parent3f26fcf34001197ed267fa1ad549095aae49c88e (diff)
downloadrockbox-b895fb66437655888386db82aa6434b0f5bfc0d6.tar.gz
rockbox-b895fb66437655888386db82aa6434b0f5bfc0d6.zip
Add tm->yday to RTC ports missing it
Change-Id: I86882262bafb8d06f925aabb87ebd1b5dcb0cd53
-rw-r--r--firmware/common/timefuncs.c16
-rw-r--r--firmware/drivers/rtc/rtc_d2.c2
-rw-r--r--firmware/drivers/rtc/rtc_ds1339_ds3231.c2
-rw-r--r--firmware/drivers/rtc/rtc_e8564.c2
-rw-r--r--firmware/drivers/rtc/rtc_mr100.c2
-rw-r--r--firmware/drivers/rtc/rtc_pcf50605.c2
-rw-r--r--firmware/drivers/rtc/rtc_pcf50606.c3
-rw-r--r--firmware/drivers/rtc/rtc_rx5x348ab.c2
-rw-r--r--firmware/drivers/rtc/rtc_s35380a.c2
-rw-r--r--firmware/drivers/rtc/rtc_s35390a.c2
-rw-r--r--firmware/drivers/rtc/rtc_s3c2440.c2
-rw-r--r--firmware/include/timefuncs.h1
-rw-r--r--firmware/target/arm/s5l8700/ipodnano2g/rtc-nano2g.c2
-rw-r--r--firmware/target/arm/s5l8702/ipod6g/rtc-6g.c2
14 files changed, 30 insertions, 12 deletions
diff --git a/firmware/common/timefuncs.c b/firmware/common/timefuncs.c
index 50addad27a..108431753a 100644
--- a/firmware/common/timefuncs.c
+++ b/firmware/common/timefuncs.c
@@ -135,5 +135,21 @@ void set_day_of_week(struct tm *tm)
135 if(m == 0 || m == 1) y--; 135 if(m == 0 || m == 1) y--;
136 tm->tm_wday = (d + mo[m] + y + y/4 - y/100 + y/400) % 7; 136 tm->tm_wday = (d + mo[m] + y + y/4 - y/100 + y/400) % 7;
137} 137}
138
139void set_day_of_year(struct tm *tm)
140{
141 int y=tm->tm_year+1900;
142 int d=tm->tm_mday;
143 int m=tm->tm_mon;
144 d+=m*30;
145 if( ( (m>1) && !(y%4) ) && ( (y%100) || !(y%400) ) )
146 d++;
147 if(m>6)
148 {
149 d+=4;
150 m-=7;
151 }
152 tm->tm_yday = d + ((m+1) /2);
153}
138#endif /* CONFIG_RTC */ 154#endif /* CONFIG_RTC */
139 155
diff --git a/firmware/drivers/rtc/rtc_d2.c b/firmware/drivers/rtc/rtc_d2.c
index 1d202410e2..726564a255 100644
--- a/firmware/drivers/rtc/rtc_d2.c
+++ b/firmware/drivers/rtc/rtc_d2.c
@@ -53,9 +53,9 @@ int rtc_read_datetime(struct tm *tm)
53 tm->tm_mday = buf[4]; 53 tm->tm_mday = buf[4];
54 tm->tm_mon = buf[5] - 1; 54 tm->tm_mon = buf[5] - 1;
55 tm->tm_year = buf[6] + 100; 55 tm->tm_year = buf[6] + 100;
56 tm->tm_yday = 0; /* Not implemented for now */
57 56
58 set_day_of_week(tm); 57 set_day_of_week(tm);
58 set_day_of_year(tm);
59 59
60 return rc; 60 return rc;
61} 61}
diff --git a/firmware/drivers/rtc/rtc_ds1339_ds3231.c b/firmware/drivers/rtc/rtc_ds1339_ds3231.c
index 8f2a531e5f..b77e059595 100644
--- a/firmware/drivers/rtc/rtc_ds1339_ds3231.c
+++ b/firmware/drivers/rtc/rtc_ds1339_ds3231.c
@@ -126,9 +126,9 @@ int rtc_read_datetime(struct tm *tm)
126 tm->tm_mday = BCD2DEC(buf[4] & 0x3f); 126 tm->tm_mday = BCD2DEC(buf[4] & 0x3f);
127 tm->tm_mon = BCD2DEC(buf[5] & 0x1f) - 1; 127 tm->tm_mon = BCD2DEC(buf[5] & 0x1f) - 1;
128 tm->tm_year = BCD2DEC(buf[6]) + 100; 128 tm->tm_year = BCD2DEC(buf[6]) + 100;
129 tm->tm_yday = 0; /* Not implemented for now */
130 129
131 set_day_of_week(tm); 130 set_day_of_week(tm);
131 set_day_of_year(tm);
132 132
133 return rc; 133 return rc;
134} 134}
diff --git a/firmware/drivers/rtc/rtc_e8564.c b/firmware/drivers/rtc/rtc_e8564.c
index 4bb61410db..775ff86728 100644
--- a/firmware/drivers/rtc/rtc_e8564.c
+++ b/firmware/drivers/rtc/rtc_e8564.c
@@ -86,9 +86,9 @@ int rtc_read_datetime(struct tm *tm)
86 tm->tm_mday = BCD2DEC(buf[3] & 0x3f); 86 tm->tm_mday = BCD2DEC(buf[3] & 0x3f);
87 tm->tm_mon = BCD2DEC(buf[5] & 0x1f) - 1; 87 tm->tm_mon = BCD2DEC(buf[5] & 0x1f) - 1;
88 tm->tm_year = BCD2DEC(buf[6]) + 100; 88 tm->tm_year = BCD2DEC(buf[6]) + 100;
89 tm->tm_yday = 0; /* Not implemented for now */
90 89
91 set_day_of_week(tm); 90 set_day_of_week(tm);
91 set_day_of_year(tm);
92 92
93 return read; 93 return read;
94} 94}
diff --git a/firmware/drivers/rtc/rtc_mr100.c b/firmware/drivers/rtc/rtc_mr100.c
index 6e1b0b5f40..2f44137e38 100644
--- a/firmware/drivers/rtc/rtc_mr100.c
+++ b/firmware/drivers/rtc/rtc_mr100.c
@@ -144,9 +144,9 @@ int rtc_read_datetime(struct tm *tm)
144 tm->tm_mday = buf[2]; 144 tm->tm_mday = buf[2];
145 tm->tm_mon = buf[1] - 1; 145 tm->tm_mon = buf[1] - 1;
146 tm->tm_year = buf[0] + 100; 146 tm->tm_year = buf[0] + 100;
147 tm->tm_yday = 0; /* Not implemented for now */
148 147
149 set_day_of_week(tm); 148 set_day_of_week(tm);
149 set_day_of_year(tm);
150 150
151 return rc; 151 return rc;
152} 152}
diff --git a/firmware/drivers/rtc/rtc_pcf50605.c b/firmware/drivers/rtc/rtc_pcf50605.c
index daa35fb13f..42ea15ff2e 100644
--- a/firmware/drivers/rtc/rtc_pcf50605.c
+++ b/firmware/drivers/rtc/rtc_pcf50605.c
@@ -52,9 +52,9 @@ int rtc_read_datetime(struct tm *tm)
52 tm->tm_mday = buf[4]; 52 tm->tm_mday = buf[4];
53 tm->tm_mon = buf[5] - 1; 53 tm->tm_mon = buf[5] - 1;
54 tm->tm_year = buf[6] + 100; 54 tm->tm_year = buf[6] + 100;
55 tm->tm_yday = 0; /* Not implemented for now */
56 55
57 set_day_of_week(tm); 56 set_day_of_week(tm);
57 set_day_of_year(tm);
58 58
59 return rc; 59 return rc;
60} 60}
diff --git a/firmware/drivers/rtc/rtc_pcf50606.c b/firmware/drivers/rtc/rtc_pcf50606.c
index 540ebfff06..16ae5a3e9c 100644
--- a/firmware/drivers/rtc/rtc_pcf50606.c
+++ b/firmware/drivers/rtc/rtc_pcf50606.c
@@ -56,7 +56,7 @@ int rtc_read_datetime(struct tm *tm)
56 tm->tm_hour = buf[2]; 56 tm->tm_hour = buf[2];
57 tm->tm_mday = buf[4]; 57 tm->tm_mday = buf[4];
58 tm->tm_mon = buf[5] - 1; 58 tm->tm_mon = buf[5] - 1;
59 tm->tm_yday = 0; /* Not implemented for now */ 59
60#ifdef IRIVER_H300_SERIES 60#ifdef IRIVER_H300_SERIES
61 /* Special kludge to coexist with the iriver firmware. The iriver firmware 61 /* Special kludge to coexist with the iriver firmware. The iriver firmware
62 stores the date as 1965+nn, and allows a range of 1980..2064. We use 62 stores the date as 1965+nn, and allows a range of 1980..2064. We use
@@ -68,6 +68,7 @@ int rtc_read_datetime(struct tm *tm)
68#endif /* IRIVER_H300_SERIES */ 68#endif /* IRIVER_H300_SERIES */
69 69
70 set_day_of_week(tm); 70 set_day_of_week(tm);
71 set_day_of_year(tm);
71 72
72 return rc; 73 return rc;
73} 74}
diff --git a/firmware/drivers/rtc/rtc_rx5x348ab.c b/firmware/drivers/rtc/rtc_rx5x348ab.c
index 6d7b78b281..d95186e8be 100644
--- a/firmware/drivers/rtc/rtc_rx5x348ab.c
+++ b/firmware/drivers/rtc/rtc_rx5x348ab.c
@@ -52,9 +52,9 @@ int rtc_read_datetime(struct tm *tm)
52 tm->tm_mday = buf[4]; 52 tm->tm_mday = buf[4];
53 tm->tm_mon = buf[5] - 1; 53 tm->tm_mon = buf[5] - 1;
54 tm->tm_year = buf[6] + 100; 54 tm->tm_year = buf[6] + 100;
55 tm->tm_yday = 0; /* Not implemented for now */
56 55
57 set_day_of_week(tm); 56 set_day_of_week(tm);
57 set_day_of_year(tm);
58 58
59 return 1; 59 return 1;
60} 60}
diff --git a/firmware/drivers/rtc/rtc_s35380a.c b/firmware/drivers/rtc/rtc_s35380a.c
index f32c431990..6deaed6354 100644
--- a/firmware/drivers/rtc/rtc_s35380a.c
+++ b/firmware/drivers/rtc/rtc_s35380a.c
@@ -192,9 +192,9 @@ int rtc_read_datetime(struct tm *tm)
192 tm->tm_mday = buf[TIME_DAY]; 192 tm->tm_mday = buf[TIME_DAY];
193 tm->tm_mon = buf[TIME_MONTH] - 1; 193 tm->tm_mon = buf[TIME_MONTH] - 1;
194 tm->tm_year = buf[TIME_YEAR] + 100; 194 tm->tm_year = buf[TIME_YEAR] + 100;
195 tm->tm_yday = 0; /* Not implemented for now */
196 195
197 set_day_of_week(tm); 196 set_day_of_week(tm);
197 set_day_of_year(tm);
198 198
199 return ret; 199 return ret;
200} 200}
diff --git a/firmware/drivers/rtc/rtc_s35390a.c b/firmware/drivers/rtc/rtc_s35390a.c
index b82029a114..6e69073254 100644
--- a/firmware/drivers/rtc/rtc_s35390a.c
+++ b/firmware/drivers/rtc/rtc_s35390a.c
@@ -79,9 +79,9 @@ int rtc_read_datetime(struct tm *tm)
79 tm->tm_mday = buf[2]; 79 tm->tm_mday = buf[2];
80 tm->tm_mon = buf[1] - 1; 80 tm->tm_mon = buf[1] - 1;
81 tm->tm_year = buf[0] + 100; 81 tm->tm_year = buf[0] + 100;
82 tm->tm_yday = 0; /* Not implemented for now */
83 82
84 set_day_of_week(tm); 83 set_day_of_week(tm);
84 set_day_of_year(tm);
85 85
86 return ret; 86 return ret;
87} 87}
diff --git a/firmware/drivers/rtc/rtc_s3c2440.c b/firmware/drivers/rtc/rtc_s3c2440.c
index 6cd34f0e23..71f99ac6f4 100644
--- a/firmware/drivers/rtc/rtc_s3c2440.c
+++ b/firmware/drivers/rtc/rtc_s3c2440.c
@@ -39,9 +39,9 @@ int rtc_read_datetime(struct tm *tm)
39 tm->tm_mday = BCD2DEC(BCDDATE); 39 tm->tm_mday = BCD2DEC(BCDDATE);
40 tm->tm_mon = BCD2DEC(BCDMON) - 1; 40 tm->tm_mon = BCD2DEC(BCDMON) - 1;
41 tm->tm_year = BCD2DEC(BCDYEAR) + 100; 41 tm->tm_year = BCD2DEC(BCDYEAR) + 100;
42 tm->tm_yday = 0; /* Not implemented for now */
43 42
44 set_day_of_week(tm); 43 set_day_of_week(tm);
44 set_day_of_year(tm);
45 45
46 return 1; 46 return 1;
47} 47}
diff --git a/firmware/include/timefuncs.h b/firmware/include/timefuncs.h
index 4c5f0fbb42..c72508e862 100644
--- a/firmware/include/timefuncs.h
+++ b/firmware/include/timefuncs.h
@@ -31,6 +31,7 @@ int set_time(const struct tm *tm);
31#if CONFIG_RTC 31#if CONFIG_RTC
32bool valid_time(const struct tm *tm); 32bool valid_time(const struct tm *tm);
33void set_day_of_week(struct tm *tm); 33void set_day_of_week(struct tm *tm);
34void set_day_of_year(struct tm *tm);
34#endif 35#endif
35 36
36#endif /* _TIMEFUNCS_H_ */ 37#endif /* _TIMEFUNCS_H_ */
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/rtc-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/rtc-nano2g.c
index 6f6b58ca35..a14bffb81c 100644
--- a/firmware/target/arm/s5l8700/ipodnano2g/rtc-nano2g.c
+++ b/firmware/target/arm/s5l8700/ipodnano2g/rtc-nano2g.c
@@ -45,9 +45,9 @@ int rtc_read_datetime(struct tm *tm)
45 tm->tm_mday = buf[4]; 45 tm->tm_mday = buf[4];
46 tm->tm_mon = buf[5] - 1; 46 tm->tm_mon = buf[5] - 1;
47 tm->tm_year = buf[6] + 100; 47 tm->tm_year = buf[6] + 100;
48 tm->tm_yday = 0; /* Not implemented for now */
49 48
50 set_day_of_week(tm); 49 set_day_of_week(tm);
50 set_day_of_year(tm);
51 51
52 return 0; 52 return 0;
53} 53}
diff --git a/firmware/target/arm/s5l8702/ipod6g/rtc-6g.c b/firmware/target/arm/s5l8702/ipod6g/rtc-6g.c
index 384cded758..bf1b18035a 100644
--- a/firmware/target/arm/s5l8702/ipod6g/rtc-6g.c
+++ b/firmware/target/arm/s5l8702/ipod6g/rtc-6g.c
@@ -45,9 +45,9 @@ int rtc_read_datetime(struct tm *tm)
45 tm->tm_mday = buf[4]; 45 tm->tm_mday = buf[4];
46 tm->tm_mon = buf[5] - 1; 46 tm->tm_mon = buf[5] - 1;
47 tm->tm_year = buf[6] + 100; 47 tm->tm_year = buf[6] + 100;
48 tm->tm_yday = 0; /* Not implemented for now */
49 48
50 set_day_of_week(tm); 49 set_day_of_week(tm);
50 set_day_of_year(tm);
51 51
52 return 0; 52 return 0;
53} 53}