Hey there, little correction on ATA TRIM: Fragmentation of files isn't the problem on SSDs but the SSD's controller needs to know which blocks it can reuse for leveling out the wear on the flash cells. As the SSD knows nothing about the FS it's storing data for it only can swap out blocks when they're overwritten at once.
UNLESS of course when the OS tells the SSD "I just freed those (logical) blocks, do whatever you want to them". This why the SSDs controller can add those blocks to its free-list and reallocate the underlying flash-cell as soon as all logical blocks are freed - or remap the leftover logical blocks to free the rest of the flash-cell.

Oops, got a little long, didn't IR? ^^"