Preheat the oven to 350°F. Grease and flour two 9-inch round cake pans.
In a medium bowl, whisk together the flour, baking powder, baking soda, and salt.
In a large bowl, beat the butter and sugar together until light and fluffy, about 3-4 minutes.
Add the eggs, one at a time, beating well after each addition. Stir in the vanilla extract.
Gradually add the dry ingredients to the butter mixture, alternating with the buttermilk, beginning and ending with the dry ingredients. Mix until just combined.
Fold in the shredded coconut.
Divide the batter evenly between the prepared pans.
Bake for 25-30 minutes or until a toothpick inserted into the center of the cakes comes out clean.
Allow the cakes to cool completely in the pans on a wire rack.
To make the frosting, beat the butter and cream cheese together until light and fluffy.
Add the powdered sugar and vanilla extract and beat until smooth.
Place one cake layer on a serving plate and spread a layer of frosting on top. Repeat with the second layer.