the signal strength to convert to dbuv or dbm just needs a lookup table. Here is an example of how its done in the stv090x driver /* RF level C/N lookup table */ static const struct stv090x_tab stv090x_rf_tab[] = { { -5, 0xcaa1 }, /* -5dBm */ { -10, 0xc229 }, /* -10dBm */ { -15, 0xbb08 }, /* -15dBm ...