perfmon: Add support for multiplexers

This introduces a new struct nouveau_specmux with a couple (reg, val)
which can be used to define a mux.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
perfmon: Add complex hardware events for nva3 chipsets

All of these signals use multiplexers.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
perfmon: Allow to specify more than one counters per hardware event

This will allow us to configure complex hardware events using the
special counter modes like EVENT_B4 and EVENT_B6.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
perfmon: Specify the counter's mode in nouveau_specsig

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
perfmon: Make use of special counters mode

This enables EVENT_B4 and EVENT_B6 counters.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
perfmon: Add complex hardware vents for nva3 chipset

All of these signals use EVENT_B4 or EVENt_B6 special mode.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>