diff options
author | Moshe Piekarski <dev.rockbox@melachim.net> | 2021-05-05 12:52:19 -0400 |
---|---|---|
committer | Solomon Peachy <pizza@shaftnet.org> | 2021-05-12 10:52:03 +0000 |
commit | b895fb66437655888386db82aa6434b0f5bfc0d6 (patch) | |
tree | 5a59015999db8a94740940a76b50a4dea0f2e556 /firmware | |
parent | 3f26fcf34001197ed267fa1ad549095aae49c88e (diff) | |
download | rockbox-b895fb66437655888386db82aa6434b0f5bfc0d6.tar.gz rockbox-b895fb66437655888386db82aa6434b0f5bfc0d6.zip |
Add tm->yday to RTC ports missing it
Change-Id: I86882262bafb8d06f925aabb87ebd1b5dcb0cd53
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/common/timefuncs.c | 16 | ||||
-rw-r--r-- | firmware/drivers/rtc/rtc_d2.c | 2 | ||||
-rw-r--r-- | firmware/drivers/rtc/rtc_ds1339_ds3231.c | 2 | ||||
-rw-r--r-- | firmware/drivers/rtc/rtc_e8564.c | 2 | ||||
-rw-r--r-- | firmware/drivers/rtc/rtc_mr100.c | 2 | ||||
-rw-r--r-- | firmware/drivers/rtc/rtc_pcf50605.c | 2 | ||||
-rw-r--r-- | firmware/drivers/rtc/rtc_pcf50606.c | 3 | ||||
-rw-r--r-- | firmware/drivers/rtc/rtc_rx5x348ab.c | 2 | ||||
-rw-r--r-- | firmware/drivers/rtc/rtc_s35380a.c | 2 | ||||
-rw-r--r-- | firmware/drivers/rtc/rtc_s35390a.c | 2 | ||||
-rw-r--r-- | firmware/drivers/rtc/rtc_s3c2440.c | 2 | ||||
-rw-r--r-- | firmware/include/timefuncs.h | 1 | ||||
-rw-r--r-- | firmware/target/arm/s5l8700/ipodnano2g/rtc-nano2g.c | 2 | ||||
-rw-r--r-- | firmware/target/arm/s5l8702/ipod6g/rtc-6g.c | 2 |
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 | |||
139 | void 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 |
32 | bool valid_time(const struct tm *tm); | 32 | bool valid_time(const struct tm *tm); |
33 | void set_day_of_week(struct tm *tm); | 33 | void set_day_of_week(struct tm *tm); |
34 | void 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 | } |