- struct hwrtc* rtc = hwrtc_alloc_new("mc146818");
- struct mc146818* state = valloc(sizeof(struct mc146818));
+ pot->base_freq = RTC_TIMER_BASE_FREQUENCY;
+
+ state = (struct mc146818*)rtc_dev->underlay;
+
+ state->irq = irq_declare_line(__rtc_tick, PC_AT_IRQ_RTC);
+ irq_set_payload(state->irq, state);
+
+ irq_assign(irq_owning_domain(rtc_dev), state->irq, NULL);
+
+ return 0;
+}
+
+static struct hwrtc_potens_ops ops = {
+ .get_walltime = rtc_getwalltime,
+ .set_walltime = rtc_setwalltime,
+ .set_proactive = rtc_set_proactive,
+ .chfreq = rtc_chfreq,
+ .calibrate = __rtc_calibrate
+};
+
+static int
+rtc_load(struct device_def* devdef)
+{
+ struct device* dev;
+ struct mc146818* state;
+ struct hwrtc_potens* pot;
+
+ state = valloc(sizeof(struct mc146818));
+ dev = device_allocsys(NULL, state);