Comparing nullable column values using "IS NULL" versus "= NULL"
As documented in the manual it's not possible to use = to test for NULL values:


  Ordinary comparison operators yield null (signifying “unknown”), not true or false, when either input is null. For example, 7 = NULL yields null, as does 7 &lt;> NULL.


is there "null-compatible operator" to use - Yes, right below the above quote it states:


  When this behavior is not suitable, use the IS [ NOT ] DISTINCT FROM predicates


So you can use 

where c2 is not distinct from $1


One drawback of the IS DISTINCT or IS NOT DISTINCT operator is however, that they can't use an index.