• Home
  • Raw
  • Download

Lines Matching refs:drvdata

85 #define stm_channel_addr(drvdata, ch)	(drvdata->chs.base +	\  argument
149 static void stm_hwevent_enable_hw(struct stm_drvdata *drvdata) in stm_hwevent_enable_hw() argument
151 CS_UNLOCK(drvdata->base); in stm_hwevent_enable_hw()
153 writel_relaxed(drvdata->stmhebsr, drvdata->base + STMHEBSR); in stm_hwevent_enable_hw()
154 writel_relaxed(drvdata->stmheter, drvdata->base + STMHETER); in stm_hwevent_enable_hw()
155 writel_relaxed(drvdata->stmheer, drvdata->base + STMHEER); in stm_hwevent_enable_hw()
158 drvdata->base + STMHEMCR); in stm_hwevent_enable_hw()
160 CS_LOCK(drvdata->base); in stm_hwevent_enable_hw()
163 static void stm_port_enable_hw(struct stm_drvdata *drvdata) in stm_port_enable_hw() argument
165 CS_UNLOCK(drvdata->base); in stm_port_enable_hw()
168 drvdata->base + STMSPTRIGCSR); in stm_port_enable_hw()
169 writel_relaxed(drvdata->stmspscr, drvdata->base + STMSPSCR); in stm_port_enable_hw()
170 writel_relaxed(drvdata->stmsper, drvdata->base + STMSPER); in stm_port_enable_hw()
172 CS_LOCK(drvdata->base); in stm_port_enable_hw()
175 static void stm_enable_hw(struct stm_drvdata *drvdata) in stm_enable_hw() argument
177 if (drvdata->stmheer) in stm_enable_hw()
178 stm_hwevent_enable_hw(drvdata); in stm_enable_hw()
180 stm_port_enable_hw(drvdata); in stm_enable_hw()
182 CS_UNLOCK(drvdata->base); in stm_enable_hw()
185 writel_relaxed(0xFFF, drvdata->base + STMSYNCR); in stm_enable_hw()
186 writel_relaxed((drvdata->traceid << 16 | /* trace id */ in stm_enable_hw()
189 drvdata->base + STMTCSR); in stm_enable_hw()
191 CS_LOCK(drvdata->base); in stm_enable_hw()
198 struct stm_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); in stm_enable() local
203 val = local_cmpxchg(&drvdata->mode, CS_MODE_DISABLED, mode); in stm_enable()
211 spin_lock(&drvdata->spinlock); in stm_enable()
212 stm_enable_hw(drvdata); in stm_enable()
213 spin_unlock(&drvdata->spinlock); in stm_enable()
219 static void stm_hwevent_disable_hw(struct stm_drvdata *drvdata) in stm_hwevent_disable_hw() argument
221 CS_UNLOCK(drvdata->base); in stm_hwevent_disable_hw()
223 writel_relaxed(0x0, drvdata->base + STMHEMCR); in stm_hwevent_disable_hw()
224 writel_relaxed(0x0, drvdata->base + STMHEER); in stm_hwevent_disable_hw()
225 writel_relaxed(0x0, drvdata->base + STMHETER); in stm_hwevent_disable_hw()
227 CS_LOCK(drvdata->base); in stm_hwevent_disable_hw()
230 static void stm_port_disable_hw(struct stm_drvdata *drvdata) in stm_port_disable_hw() argument
232 CS_UNLOCK(drvdata->base); in stm_port_disable_hw()
234 writel_relaxed(0x0, drvdata->base + STMSPER); in stm_port_disable_hw()
235 writel_relaxed(0x0, drvdata->base + STMSPTRIGCSR); in stm_port_disable_hw()
237 CS_LOCK(drvdata->base); in stm_port_disable_hw()
240 static void stm_disable_hw(struct stm_drvdata *drvdata) in stm_disable_hw() argument
244 CS_UNLOCK(drvdata->base); in stm_disable_hw()
246 val = readl_relaxed(drvdata->base + STMTCSR); in stm_disable_hw()
248 writel_relaxed(val, drvdata->base + STMTCSR); in stm_disable_hw()
250 CS_LOCK(drvdata->base); in stm_disable_hw()
252 stm_port_disable_hw(drvdata); in stm_disable_hw()
253 if (drvdata->stmheer) in stm_disable_hw()
254 stm_hwevent_disable_hw(drvdata); in stm_disable_hw()
260 struct stm_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); in stm_disable() local
268 if (local_read(&drvdata->mode) == CS_MODE_SYSFS) { in stm_disable()
269 spin_lock(&drvdata->spinlock); in stm_disable()
270 stm_disable_hw(drvdata); in stm_disable()
271 spin_unlock(&drvdata->spinlock); in stm_disable()
278 local_set(&drvdata->mode, CS_MODE_DISABLED); in stm_disable()
285 struct stm_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); in stm_trace_id() local
287 return drvdata->traceid; in stm_trace_id()
339 struct stm_drvdata *drvdata = container_of(stm_data, in stm_generic_link() local
341 if (!drvdata || !drvdata->csdev) in stm_generic_link()
344 return coresight_enable(drvdata->csdev); in stm_generic_link()
350 struct stm_drvdata *drvdata = container_of(stm_data, in stm_generic_unlink() local
352 if (!drvdata || !drvdata->csdev) in stm_generic_unlink()
355 coresight_disable(drvdata->csdev); in stm_generic_unlink()
362 struct stm_drvdata *drvdata = container_of(stm_data, in stm_mmio_addr() local
366 addr = drvdata->chs.phys + channel * BYTES_PER_CHANNEL; in stm_mmio_addr()
381 struct stm_drvdata *drvdata = container_of(stm_data, in stm_generic_set_options() local
383 if (!(drvdata && local_read(&drvdata->mode))) in stm_generic_set_options()
386 if (channel >= drvdata->numsp) in stm_generic_set_options()
391 set_bit(channel, drvdata->chs.guaranteed); in stm_generic_set_options()
395 clear_bit(channel, drvdata->chs.guaranteed); in stm_generic_set_options()
414 struct stm_drvdata *drvdata = container_of(stm_data, in stm_generic_packet() local
418 if (!(drvdata && local_read(&drvdata->mode))) in stm_generic_packet()
421 if (channel >= drvdata->numsp) in stm_generic_packet()
424 ch_addr = stm_channel_addr(drvdata, channel); in stm_generic_packet()
428 stm_flags |= test_bit(channel, drvdata->chs.guaranteed) ? in stm_generic_packet()
431 if (size > drvdata->write_bytes) in stm_generic_packet()
432 size = drvdata->write_bytes; in stm_generic_packet()
445 stm_send(ch_addr, payload, 1, drvdata->write_bytes); in stm_generic_packet()
453 drvdata->write_bytes); in stm_generic_packet()
466 struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent); in hwevent_enable_show() local
467 unsigned long val = drvdata->stmheer; in hwevent_enable_show()
476 struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent); in hwevent_enable_store() local
484 drvdata->stmheer = val; in hwevent_enable_store()
486 drvdata->stmheter = val; in hwevent_enable_store()
495 struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent); in hwevent_select_show() local
496 unsigned long val = drvdata->stmhebsr; in hwevent_select_show()
505 struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent); in hwevent_select_store() local
513 drvdata->stmhebsr = val; in hwevent_select_store()
522 struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent); in port_select_show() local
525 if (!local_read(&drvdata->mode)) { in port_select_show()
526 val = drvdata->stmspscr; in port_select_show()
528 spin_lock(&drvdata->spinlock); in port_select_show()
529 val = readl_relaxed(drvdata->base + STMSPSCR); in port_select_show()
530 spin_unlock(&drvdata->spinlock); in port_select_show()
540 struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent); in port_select_store() local
548 spin_lock(&drvdata->spinlock); in port_select_store()
549 drvdata->stmspscr = val; in port_select_store()
551 if (local_read(&drvdata->mode)) { in port_select_store()
552 CS_UNLOCK(drvdata->base); in port_select_store()
554 stmsper = readl_relaxed(drvdata->base + STMSPER); in port_select_store()
555 writel_relaxed(0x0, drvdata->base + STMSPER); in port_select_store()
556 writel_relaxed(drvdata->stmspscr, drvdata->base + STMSPSCR); in port_select_store()
557 writel_relaxed(stmsper, drvdata->base + STMSPER); in port_select_store()
558 CS_LOCK(drvdata->base); in port_select_store()
560 spin_unlock(&drvdata->spinlock); in port_select_store()
569 struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent); in port_enable_show() local
572 if (!local_read(&drvdata->mode)) { in port_enable_show()
573 val = drvdata->stmsper; in port_enable_show()
575 spin_lock(&drvdata->spinlock); in port_enable_show()
576 val = readl_relaxed(drvdata->base + STMSPER); in port_enable_show()
577 spin_unlock(&drvdata->spinlock); in port_enable_show()
587 struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent); in port_enable_store() local
595 spin_lock(&drvdata->spinlock); in port_enable_store()
596 drvdata->stmsper = val; in port_enable_store()
598 if (local_read(&drvdata->mode)) { in port_enable_store()
599 CS_UNLOCK(drvdata->base); in port_enable_store()
600 writel_relaxed(drvdata->stmsper, drvdata->base + STMSPER); in port_enable_store()
601 CS_LOCK(drvdata->base); in port_enable_store()
603 spin_unlock(&drvdata->spinlock); in port_enable_store()
613 struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent); in traceid_show() local
615 val = drvdata->traceid; in traceid_show()
625 struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent); in traceid_store() local
632 drvdata->traceid = val & 0x7f; in traceid_store()
779 static u32 stm_fundamental_data_size(struct stm_drvdata *drvdata) in stm_fundamental_data_size() argument
786 stmspfeat2r = readl_relaxed(drvdata->base + STMSPFEAT2R); in stm_fundamental_data_size()
796 static u32 stm_num_stimulus_port(struct stm_drvdata *drvdata) in stm_num_stimulus_port() argument
800 numsp = readl_relaxed(drvdata->base + CORESIGHT_DEVID); in stm_num_stimulus_port()
811 static void stm_init_default_data(struct stm_drvdata *drvdata) in stm_init_default_data() argument
814 drvdata->stmspscr = 0x0; in stm_init_default_data()
820 drvdata->stmsper = ~0x0; in stm_init_default_data()
828 drvdata->traceid = 0x1; in stm_init_default_data()
831 bitmap_clear(drvdata->chs.guaranteed, 0, drvdata->numsp); in stm_init_default_data()
834 static void stm_init_generic_data(struct stm_drvdata *drvdata, in stm_init_generic_data() argument
837 drvdata->stm.name = name; in stm_init_generic_data()
843 drvdata->stm.sw_start = 1; in stm_init_generic_data()
844 drvdata->stm.sw_end = 1; in stm_init_generic_data()
845 drvdata->stm.hw_override = true; in stm_init_generic_data()
846 drvdata->stm.sw_nchannels = drvdata->numsp; in stm_init_generic_data()
847 drvdata->stm.sw_mmiosz = BYTES_PER_CHANNEL; in stm_init_generic_data()
848 drvdata->stm.packet = stm_generic_packet; in stm_init_generic_data()
849 drvdata->stm.mmio_addr = stm_mmio_addr; in stm_init_generic_data()
850 drvdata->stm.link = stm_generic_link; in stm_init_generic_data()
851 drvdata->stm.unlink = stm_generic_unlink; in stm_init_generic_data()
852 drvdata->stm.set_options = stm_generic_set_options; in stm_init_generic_data()
862 struct stm_drvdata *drvdata; in stm_probe() local
872 drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); in stm_probe()
873 if (!drvdata) in stm_probe()
876 drvdata->atclk = devm_clk_get(&adev->dev, "atclk"); /* optional */ in stm_probe()
877 if (!IS_ERR(drvdata->atclk)) { in stm_probe()
878 ret = clk_prepare_enable(drvdata->atclk); in stm_probe()
882 dev_set_drvdata(dev, drvdata); in stm_probe()
887 drvdata->base = base; in stm_probe()
893 drvdata->chs.phys = ch_res.start; in stm_probe()
898 drvdata->chs.base = base; in stm_probe()
900 drvdata->write_bytes = stm_fundamental_data_size(drvdata); in stm_probe()
903 drvdata->numsp = boot_nr_channel; in stm_probe()
905 drvdata->numsp = stm_num_stimulus_port(drvdata); in stm_probe()
907 bitmap_size = BITS_TO_LONGS(drvdata->numsp) * sizeof(long); in stm_probe()
912 drvdata->chs.guaranteed = guaranteed; in stm_probe()
914 spin_lock_init(&drvdata->spinlock); in stm_probe()
916 stm_init_default_data(drvdata); in stm_probe()
917 stm_init_generic_data(drvdata, desc.name); in stm_probe()
919 if (stm_register_device(dev, &drvdata->stm, THIS_MODULE)) { in stm_probe()
939 drvdata->csdev = coresight_register(&desc); in stm_probe()
940 if (IS_ERR(drvdata->csdev)) { in stm_probe()
941 ret = PTR_ERR(drvdata->csdev); in stm_probe()
947 dev_info(&drvdata->csdev->dev, "%s initialized\n", in stm_probe()
952 stm_unregister_device(&drvdata->stm); in stm_probe()
958 struct stm_drvdata *drvdata = dev_get_drvdata(&adev->dev); in stm_remove() local
960 coresight_unregister(drvdata->csdev); in stm_remove()
962 stm_unregister_device(&drvdata->stm); in stm_remove()
968 struct stm_drvdata *drvdata = dev_get_drvdata(dev); in stm_runtime_suspend() local
970 if (drvdata && !IS_ERR(drvdata->atclk)) in stm_runtime_suspend()
971 clk_disable_unprepare(drvdata->atclk); in stm_runtime_suspend()
978 struct stm_drvdata *drvdata = dev_get_drvdata(dev); in stm_runtime_resume() local
980 if (drvdata && !IS_ERR(drvdata->atclk)) in stm_runtime_resume()
981 clk_prepare_enable(drvdata->atclk); in stm_runtime_resume()