This compiles and runs for me:
create type TT as table (ID int not null);
go
create procedure P1
@Val1 int,
@Val2 TT readonly,
@Val3 int
as
select @Val1 as Val1,ID,@Val3
from @Val2;
go
create procedure P2
as
declare @T TT;
insert into @T(ID) values (1),(2)
exec P1 10,@T,13
go
exec P2
Result:
Val1 ID
----------- ----------- -----------
10 1 13
10 2 13
So, I don't know what your issue is, but it's not being able to mix table and non-table parameters.