se esperaba ‘uint32_t’ pero el argumento es de tipo ‘uint32_t *’

Soy nuevo en C, intentando llamar a una función, pero me da un error que no puedo entender por qué

int set_price (& colour-> type.name);

me devuelve el expected 'uint32_t' but argument is of type 'uint32_t *'. warning: passing argument 'int set_price' makes integer from pointer without a cast expected 'uint32_t' but argument is of type 'uint32_t *'. warning: passing argument 'int set_price' makes integer from pointer without a cast

donde esta el puntero

house_list * color = NULL;

y el nombre se define en la estructura como

uint32_t nombre;

la función original acepta

int set_price (nombre uint32_t)
{
/ hacer algo aquí /
}

¿Qué hago mal? Si en el miembro de la estructura, el nombre se define como uint32_t, y yo definí un color de puntero, entonces creo que necesito usar & antes de colour-> type y use dot antes de name ¿no es así?

Gracias

 set_price(&colour->type.name); 

quita el & y estarás bien

 set_price(colour->type.name); 

set_price espera un entero como argumento, no un puntero a entero.

Le sugiero que lea un buen libro de C