the csa decryption can be done in software by either ffdecsa (included with tvheadend) or with libdvbcsa, the standard Linux library for this, maintained by videolan.org.
It is an option to choose which one to use. See TVH's './configure --help'. So far have been using libdvbcsa here with good results, also in HD. Have not done an in-depth comparison though. Best is what takes least CPU cycles.
In any case the latest patch as published by Nikolay, and adapted by me to work with current tvheadend-master, would not compile here because of the ccw.c routine using only ffdecsa specific calls but the ffdecsa.h #include was missing, and could not work when one would prefer libdvbcsa i.s.o. ffdecsa because the compiler switches and proper calls were missing in ccw.c to work with libdvbcsa. My patch just maintains the option of choice of decrypter, also with ccw functionality added.