Lines Matching refs:sth
19 #include "sth.h"
31 sth_channel(struct sth_device *sth, unsigned int master, unsigned int channel)
33 struct intel_th_channel __iomem *sw_map = sth->channels;
35 return &sw_map[(master - sth->stm.sw_start) * sth->stm.sw_nchannels +
70 struct sth_device *sth = container_of(stm_data, struct sth_device, stm);
72 sth_channel(sth, master, channel);
96 writeb_relaxed(*payload, sth->base + reg);
145 struct sth_device *sth = container_of(stm_data, struct sth_device, stm);
148 master -= sth->stm.sw_start;
149 addr = sth->channels_phys + (master * sth->stm.sw_nchannels + channel) *
162 struct sth_device *sth = container_of(stm_data, struct sth_device, stm);
164 return intel_th_set_output(to_intel_th_device(sth->dev), master);
167 static int intel_th_sw_init(struct sth_device *sth)
171 reg = ioread32(sth->base + REG_STH_STHCAP1);
172 sth->stm.sw_nchannels = reg & 0xff;
174 reg = ioread32(sth->base + REG_STH_STHCAP0);
175 sth->stm.sw_start = reg & 0xffff;
176 sth->stm.sw_end = reg >> 16;
178 sth->sw_nmasters = sth->stm.sw_end - sth->stm.sw_start;
179 dev_dbg(sth->dev, "sw_start: %x sw_end: %x masters: %x nchannels: %x\n",
180 sth->stm.sw_start, sth->stm.sw_end, sth->sw_nmasters,
181 sth->stm.sw_nchannels);
189 struct sth_device *sth;
210 sth = devm_kzalloc(dev, sizeof(*sth), GFP_KERNEL);
211 if (!sth)
214 sth->dev = dev;
215 sth->base = base;
216 sth->channels = channels;
217 sth->channels_phys = res->start;
218 sth->stm.name = dev_name(dev);
219 sth->stm.packet = sth_stm_packet;
220 sth->stm.mmio_addr = sth_stm_mmio_addr;
221 sth->stm.sw_mmiosz = sizeof(struct intel_th_channel);
222 sth->stm.link = sth_stm_link;
224 err = intel_th_sw_init(sth);
228 err = stm_register_device(dev, &sth->stm, THIS_MODULE);
234 dev_set_drvdata(dev, sth);
241 struct sth_device *sth = dev_get_drvdata(&thdev->dev);
243 stm_unregister_device(&sth->stm);
250 .name = "sth",