In addition to VISA / MasterCard rules, 10 states have passed laws prohibiting merchants from applying a surcharge for payments by credit card: California, Colorado, Connecticut, Florida, Kansas, Maine, Massachusetts, New York, Oklahoma and Texas.
http://usa.visa.com/merchants/operations/no-surcharge.html
A discount (price reduction) can always be given for payments by cash.
See Can I charge more for credit card payments