Lines Matching refs:hd
32 static inline void heartbeat_toggle_bit(struct heartbeat_data *hd,
37 new = (1 << hd->bit_pos[bit]);
41 new &= hd->mask;
43 switch (hd->regsize) {
45 new |= ioread32(hd->base) & ~hd->mask;
46 iowrite32(new, hd->base);
49 new |= ioread16(hd->base) & ~hd->mask;
50 iowrite16(new, hd->base);
53 new |= ioread8(hd->base) & ~hd->mask;
54 iowrite8(new, hd->base);
61 struct heartbeat_data *hd = from_timer(hd, t, timer);
64 heartbeat_toggle_bit(hd, bit, hd->flags & HEARTBEAT_INVERTED);
67 if ((bit == 0) || (bit == (hd->nr_bits)-1))
70 mod_timer(&hd->timer, jiffies + (110 - ((300 << FSHIFT) /
77 struct heartbeat_data *hd;
92 hd = pdev->dev.platform_data;
94 hd = kzalloc(sizeof(struct heartbeat_data), GFP_KERNEL);
95 if (unlikely(!hd))
99 hd->base = ioremap(res->start, resource_size(res));
100 if (unlikely(!hd->base)) {
104 kfree(hd);
109 if (!hd->nr_bits) {
110 hd->bit_pos = default_bit_pos;
111 hd->nr_bits = ARRAY_SIZE(default_bit_pos);
114 hd->mask = 0;
115 for (i = 0; i < hd->nr_bits; i++)
116 hd->mask |= (1 << hd->bit_pos[i]);
118 if (!hd->regsize) {
121 hd->regsize = 32;
124 hd->regsize = 16;
128 hd->regsize = 8;
133 timer_setup(&hd->timer, heartbeat_timer, 0);
134 platform_set_drvdata(pdev, hd);
136 return mod_timer(&hd->timer, jiffies + 1);