Lines Matching refs:sth

39 sth_channel(struct sth_device *sth, unsigned int master, unsigned int channel)  in sth_channel()  argument
41 struct intel_th_channel __iomem *sw_map = sth->channels; in sth_channel()
43 return &sw_map[(master - sth->stm.sw_start) * sth->stm.sw_nchannels + in sth_channel()
75 struct sth_device *sth = container_of(stm_data, struct sth_device, stm); in sth_stm_packet() local
77 sth_channel(sth, master, channel); in sth_stm_packet()
97 iowrite8(*payload, sth->base + reg); in sth_stm_packet()
141 struct sth_device *sth = container_of(stm_data, struct sth_device, stm); in sth_stm_mmio_addr() local
144 master -= sth->stm.sw_start; in sth_stm_mmio_addr()
145 addr = sth->channels_phys + (master * sth->stm.sw_nchannels + channel) * in sth_stm_mmio_addr()
158 struct sth_device *sth = container_of(stm_data, struct sth_device, stm); in sth_stm_link() local
160 intel_th_set_output(to_intel_th_device(sth->dev), master); in sth_stm_link()
165 static int intel_th_sw_init(struct sth_device *sth) in intel_th_sw_init() argument
169 reg = ioread32(sth->base + REG_STH_STHCAP1); in intel_th_sw_init()
170 sth->stm.sw_nchannels = reg & 0xff; in intel_th_sw_init()
172 reg = ioread32(sth->base + REG_STH_STHCAP0); in intel_th_sw_init()
173 sth->stm.sw_start = reg & 0xffff; in intel_th_sw_init()
174 sth->stm.sw_end = reg >> 16; in intel_th_sw_init()
176 sth->sw_nmasters = sth->stm.sw_end - sth->stm.sw_start; in intel_th_sw_init()
177 dev_dbg(sth->dev, "sw_start: %x sw_end: %x masters: %x nchannels: %x\n", in intel_th_sw_init()
178 sth->stm.sw_start, sth->stm.sw_end, sth->sw_nmasters, in intel_th_sw_init()
179 sth->stm.sw_nchannels); in intel_th_sw_init()
187 struct sth_device *sth; in intel_th_sth_probe() local
208 sth = devm_kzalloc(dev, sizeof(*sth), GFP_KERNEL); in intel_th_sth_probe()
209 if (!sth) in intel_th_sth_probe()
212 sth->dev = dev; in intel_th_sth_probe()
213 sth->base = base; in intel_th_sth_probe()
214 sth->channels = channels; in intel_th_sth_probe()
215 sth->channels_phys = res->start; in intel_th_sth_probe()
216 sth->stm.name = dev_name(dev); in intel_th_sth_probe()
217 sth->stm.packet = sth_stm_packet; in intel_th_sth_probe()
218 sth->stm.mmio_addr = sth_stm_mmio_addr; in intel_th_sth_probe()
219 sth->stm.sw_mmiosz = sizeof(struct intel_th_channel); in intel_th_sth_probe()
220 sth->stm.link = sth_stm_link; in intel_th_sth_probe()
222 err = intel_th_sw_init(sth); in intel_th_sth_probe()
226 err = stm_register_device(dev, &sth->stm, THIS_MODULE); in intel_th_sth_probe()
232 dev_set_drvdata(dev, sth); in intel_th_sth_probe()
239 struct sth_device *sth = dev_get_drvdata(&thdev->dev); in intel_th_sth_remove() local
241 stm_unregister_device(&sth->stm); in intel_th_sth_remove()