The simplest answer is just to parity the math courses of a Berkeley / MIT / Stanford CS degree, although it will likely be a little overkill, especially if you intend to limit yourself to a strict subset of TYCS. For example, databases and networking generally require very different math prereqs than computer graphics or machine learning.
You will need a high school level of math (grammar school math, algebra, trigonometry, basic stats) to be able to program most things.
Discrete math is used heavily in many parts of CS (it is integral to understanding how to accurately negate programming expressions).
You should probably understand calculus at a high level, although my experience with actual calculus usage in my career is zero.
Probabilities are used heavily in concepts like caching / performance, which will touch OS, arch, data structures, and likely others. For this, you should find a "statistics for engineers" type of course / book for undergrads, which may or may not make use of calculus to prove some of the statistical concepts.
Linear algebra is used heavily wherever graphics cards are used, so graphics, video, machine learning, etc. Linear algebra will likely have calculus as a prerequisite.
Modulo math is used heavily for cryptography and some data structures (hash tables). An undergrad will get a few days or weeks of this, and probably not an entire course.
Set theory and graph theory are used sporadically. Networking, distributed systems, etc will make use of them.
Hope this helps.