In large stock pot, heat olive oil over medium heat.
Add onion and salt to taste, and saute 5 minutes, until onion is soft and translucent.
Add ginger and garlic and cook one more minute.
Add curry powder, cumin, cardamom, and salt to taste.
Stir until well combined.
Add sweet potatoes, lentils, garbanzo beans, and vegetable broth.
Bring to a boil and simmer over low heat for 45 minutes to 1 hour, when the lentils are very soft and sweet potatoes are tender. If soup gets thick, add another 1/2 cup of water or vegetable broth.
At this point you can mash or puree some of it with an immersion blender, but it is optional. I like a thicker soup so I pureed about 1/3 of it with immersion blender.
Finally, add the coconut milk and adjust salt and pepper to taste.
Simmer for another 10 minutes, being careful to not let it boil, until the coconut milk is warm.
Serve topped with dollop of sour cream or plain yogurt. Enjoy!