I agree with the earlier posts that if you are outside the cancellation period, it is probably best to cancel and go with another cruise line.
Unfortunately, these cruise lines are more expensive....and sadly you will have to pay more for someone else's addiction. (not fair I know...but what can you do)
However, IF you are inside your penalty period OR if you have already purchased airfare etc....the good news is that the Spirit class does handle the smoke the best of all the Carnival classes of ships (IMHO).
All Carnival ships have designated smoking areas. Unfortunately, on ships in the Fantasy class, you are literally walking right next to a designated smoking area (without any partitions or protection from drifting smoke) as you walk down the Promenade. And you have to walk through a designated smoking area to get to karaoke (and on the Fantasy itself, children have to walk far to close to a designated smoking area to get to Camp Carnival...which is ridiculous). So I would avoid those ships in the future.
ON the Spirit, you will need to avoid the Sports Bar, Casino, Piano Bar, the Starboard side of the Pool area on Lido outside, and the Disco.
Now as for the cabins and balconies....currently smoking is allowed in both.
And you can get a cabin where you walk in and are immediately hit with the fact that a smoker has had the cabin before you. It just happened to us last month. There are some remedies....
1. I always carry Ozium with me. You can purchase it at Walmart in the car section. I emptied an entire can of it into the drapes, bed skirt and carpet of our cabin. I also emptied a can of Febreeze into the mattress itself after the cabin steward had replaced all the pillows, mattress cover, duvets and duvet covers. If Febreeze had not done the trick on the mattress....it can be replaced as well.
2. They also have some kind of machine that they run...but you can not be in the room when they are running it. They had to run it twice and it took two days to get the stench 95% out ....
3. They can also lightly shampoo the carpet, since it dries quickly.
As far as the balcony, we usually don't get a balcony because we sail from Southern ports (New Orleans and Mobile) that have a tendency to have more smokers...so why pay for a balcony you are not going to use.
IF I were going to get a balcony, I would get the first one on the PORT side...(Carnival employees take their smoke breaks on the Starboard side)..
The Spirit class is the only class where you can walk the length of the ship (by going up one level after the Atrium)...without walking through a designated smoking area.
One other thing to consider, Camp Carnival (with certain age groups) does use the Disco during the day....of course, no smoking or drinking is allowed in this area when Camp Carnival is using it....BUT I don't know how much residual agents will still be there from the night before.
I would also send an email to firstname.lastname@example.org
and explain in great detail your son's needs. This may add one layer of assurance that your cabin is double checked before you arrive.
If you have any problems at all on your cruise, make a formal report at the Guest Services Desk.
Hope this info helps...