Pick through the dried lentils and kidney beans, removing any debris like little rocks. Cover with tea cloth and soak them in water overnight.
Cut onion in half. Keep one half intact and chop other half. Tie the whole cloves, cardamom pods and cinnamon stick in a piece of cheesecloth with kitchen twine, set aide.
Rinse the lentils and kidney beans and pour them into a large stock pot or Dutch oven and cover with water by an inch. Add half of the onion to the water. Bring to a boil, cover and cook on high for 10 minutes. Lower heat to simmer and cook covered for another 20 minutes. Remove and discard cooked onion half and drain lentils, set aside.
In the large stock pot or Dutch oven add butter or ghee and sauté the other half of chopped onion for 2 minutes. Add the chiles, ginger paste, garlic, cumin, salt, turmeric, chili powder, cayenne, garam masala and sauté for 3 minutes until aromatic.
Stir in the crushed tomatoes, tied spice bag, water, par-cooked lentils and kidney beans. Cover and simmer on low for 45 minutes.
Carefully remove spice bag and discard. Either use an immersion blender and pulse several times or transfer half to a blender and puree. Be careful as this is hot, keep lid vented slightly. Pour back into stock pot or Dutch and stir (See Note 1). Simmer for 10 more minutes. The soup becomes creamier as it simmers, almost a velvety consistency. Add more water as needed for desired consistency. Add the cream and liquid smoke (this is optional, but the flavor is great). Stir to incorporate in the lentils and season to taste.
Serve this garnished with a drizzle of cream, chopped cilantro and lots of dosa, naan, roti, flatbread, pitas or whatever bread you like.