I want to create a firmware release repository where different directories contains different firmware version for all system that we need to support. This repo will also be used for automatic updates according the directory content. For updating I only will pull the latest repository state. But I also need to downgrade a single firmware sometimes. One option for downgrading a firmware would be to checkout an directory on a specific tag (where tags corresponds to the firmware versions of each system). In this case it would be necessary to tag specific directories with specific firmware versions. But according  this is not a good thing to do.
What would be the best option to organisize a repository that contains a firmware directory for each system, which can be easily (with git commands) set to specific versions of each system?