Heat a saucepan over medium-high heat. Add cardamom; cook, stirring constantly, until fragrant (about 15 seconds). Transfer to a small bowl.
Add coconut to pan; cook, stirring constantly, until fragrant and just beginning to brown (about 2 minutes). Add to cardamom.
Add oil and garlic to pan. Sauté, stirring often, just until garlic is fragrant but not browned (about 20 seconds). Stir in rice; sauté 3 minutes. Stir in reserved coconut mixture, water, and salt; bring to a simmer. Cover, reduce heat to medium-low, and cook 20 minutes or until liquid is absorbed. Fluff with a fork. Add butter, stirring gently until melted. Stir in cilantro.