Passing a generic protocol argument to an Obj-C "Protocol" function

I have a class that needs to pass a Protocol to an Obj-C function. I have a constructor that takes the Protocol, but as the class is a generic that also takes the same protocol, I thought I could optimise it. However, if I try to use the generic value when calling the function, it fails to compile. I've tried various combinations of ".self" and ".Type" and ".Protocol", both in the code and in the generic argument, and nothing works. Is there any way to achieve this?

This is a Playground project to show the problem.

import Foundation

@objc protocol TestProtocol {

class Test<P> {
    init() {
        test(p: P.self)                       // Fails to compile with: Cannot convert value of type 'P.Type' to expected argument type 'Protocol'
        test(p: TestProtocol.self)            // Compiles
    func test(p: Protocol) {

let c = Test<TestProtocol>()